2017-12-16 13 views
0

Swift Package Managerをプライベートレポジトリに保存された依存関係で使用するには?`swift-package-manager`をプライベートreposで使うには?

usernamepasswordが機能的に動作することができます追加:

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

しかし、username:passwordアプローチは、問題を含む(これらに限定されない)Package.swiftユーザ名が指定された作りと、リポジトリ内のプレーンテキストの資格情報を置くことがあります。

理想的には、解決策はなります

  1. は、リポジトリ内の任意のプレーンテキストまたはトークン認証情報を格納しません。
  2. 各チームメンバーが自分の資格情報を持つことを許可します。

答えて

1

一つの解決策は、私が最終的にnixの型システムのために見つけたこと、SSHにgit URLを使用して~/.ssh/configHost設定を追加することです。

Package.swiftの依存関係URLに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)セットアップ後に自動的に使用できます。

関連する問題