如何在私人回购中使用`swift-package-manager`?

问题描述 投票:1回答:1

如何使用存储在私有存储库中的依赖项的Swift包管理器?

添加usernamepassword可以在功能上工作:

let package = Package(
  name: "MyPackage",
  dependencies: [
    .package(url: "https://username:[email protected]/me/MyPackage.git", .branch("develop"))     
  ]
)

但是,username:password方法存在的问题包括(但不限于)指定Package.swift用户名,以及将纯文本凭据放入存储库。

理想情况下,解决方案是:

  1. 不在存储库中存储任何纯文本或令牌凭据。
  2. 允许每个团队成员拥有自己的凭据。
git swift-package-manager
1个回答
1
投票

我最终为nix类型系统找到的一个解决方案是使用SSH git URL并将Host配置添加到~/.ssh/config

Package.swift中使用ssh表单作为依赖关系网址。

// swift-tools-version:4.0
import PackageDescription

let package = Package(
  name: "Example",
  dependencies: [
    .package(url: "[email protected]:abc/private-resource.git", .branch("develop") ),
  ],
)

在上面的例子中,gitlab.com.myteam对应于Host中的~/.ssh/config

### GITLAB  WorkTeamOne
Host gitlab.com.myteam
  HostName gitlab.com
  User my_work_username
  IdentityFile  ~/.ssh/my_work_key_rsa
  UseKeychain yes
  AddKeysToAgent yes
  PreferredAuthentications publickey

### GITLAB  Hobby
Host gitlab.com.hobby
  HostName gitlab.com
  User my_hobby_username
  IdentityFile  ~/.ssh/my_hobby_key_rsa
  UseKeychain yes
  AddKeysToAgent yes
  PreferredAuthentications publickey

可以根据帐户的需要生成SSH密钥对,并将其应用于个人的在线git服务。

ssh-keygen \
   -b 4096 \
   -t rsa \
   -C "[email protected]" \
   -f ~/.ssh/my_work_key_rsa

每个团队成员都会设置一个单独的,相应的Host ssh配置。 Host将是相同的,但是,实际的公钥/私钥对(a)是特定于用户的,(b)可以与任何代码开发分开管理,(c)可以在设置之后自动使用。

© www.soinside.com 2019 - 2024. All rights reserved.