2017-12-16 8 views
0

개인 저장소에 저장된 종속성을 가진 Swift Package Manager를 사용하는 방법은 무엇입니까?`swift-package-manager`를 개인 repos와 함께 사용하는 방법은 무엇입니까?

A가 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

한 가지 해결책은, 내가 결국 괜찬 타입 시스템에 대한 발견, 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는 계정 필요하고 개인의 자식 온라인 서비스에 적용 생성 될 수 ~/.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 키 쌍에 Host에 대응한다. Host SSH 구성을 해당 각 팀 구성원이 설정 한 개인 것

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

. Host은 동일하지만 실제 공개 키/개인 키 쌍 (a)은 사용자에 따라 다르며 (b) 코드 개발과 별도로 관리 할 수 ​​있으며 (c) 설정 후에 자동으로 사용할 수 있습니다.