-
[Github Action IOS] Pod install 할때 private repo(pod) 권한 관련 에러개발/Swift 2022. 5. 16. 14:37
private repo pod 을 프로젝트에서 사용하고있다면 podfile을 보면 이렇게
pod 'Private-Pod' , :git => "<https://github.com/HWIKANG/Private-Pod.git>"
쓰고 있을것이다. 혹은 ssh 경로 를 사용할것이다.
로컬 환경에서 pod install을 실행시 문제없이 설치가 된다.
만약 설치가 안된다면 로컬 환경에서 git 계정 정보가 keychain에 저장이 되지 않아서이다.
priavate pod 에 접근하기 위해서는 접근 가능한 git 계정에대한 정보가 필요하다.
username 과 password 일것이다.
password 는 PAT 토큰으로 대체되었다. 따라서 username, PAT(PERSONAL_ACCESS_TOKEN) 토큰이 필요하고
로컬환경에서는 이 정보가 키체인에 저장되어있다. 그래서 pod install에서 문제가 발생하지 않는다.
하지만 github action이 돌아가는 환경은 다른 환경이다.
따라서 내 git 계정 정보가 저장되어있지않고
따라서 private repo에 접근할수 없다.
git@github.com: Permission denied (publickey).
하지만 방법은 있다
private repo 에 접근할때 (clone,pull,install 등등)
해당 url 에 PAT 토큰을 붙여서 접근하면 된다.
<https://${PERSONAL_ACCESS_TOKEN}@github.com/HWIKANG/Private-Pod.git>
위와같이 PERSONAL_ACCESS_TOKEN 을 https url 에 붙여서 사용하면 된다.
PAT 발행하기
- setting
- Developer settings
- Personal access tokens
위 경로에 들어가서 새 토큰을 발행해 준다.
아래와 같이 repo (Full control) 로 발행해주자.
발행과 동시에 PAT를 보여준다.
이후에는 다시 볼수없으니 어딘가에 저장 해둬야한다.
이제 이 PAT를 사용한 url 을 가지고 podfile에 넣으면 문제없이
install 될것이다.
https://${PERSONAL_ACCESS_TOKEN}@github.com/HWIKANG/Private-Pod.git
하지만 podfile은 공개되어있는 파일이다. 여기에 PAT를 공유하는것은
좋은 방법이 아니다. 어딘가에 숨겨놓고 실제 사용할때 사용해야한다.
이떄 secret을 쓴다.
git action을 돌릴 repository - setting에 간다.
Secret → action에 간후 New repository secret을 눌러준다.
Name은 아무거나 사용가능하며 (workflow에 적을 적절할 네이밍을 지정해줌) value에 PAT 값을 넣어준다.
action이 돌때 workflow 파일을 보고 실행하는데
이때 secrets 에 접근할수있다.
jobs: build: runs-on: macos-latest env: PERSONAL_ACCESS_TOKEN : ${{ secrets.PERSONAL_ACCESS_TOKEN }}
이렇게 시크릿에 적어둔 PERSONAL_ACCESS_TOKEN 값에 접근할수 있다.
이후에는 이렇게 접근 하여 사용한다.
${PERSONAL_ACCESS_TOKEN}
이렇게 PAT를 workflow에서 불러오기까지 성공했고
이제 pod install 을 할때 이 PAT를 사용해야한다.
현재 상황은 이러하다.
//workflow run: | pod install --repo-update --clean-install //Podfile pod 'Private-Pod' , :git => "https://github.com/HWIKANG/Private-Pod.git"
private pod 의 경로에 PAT토큰이 들어간 url 을 넣어줘야한다.
git config --global url."https://${PERSONAL_ACCESS_TOKEN}@github.com/".insteadOf "https://github.com/"
위 명령어를 install 하기 전에 넣어주면
https://github.com/ -> https://${PERSONAL_ACCESS_TOKEN}@github.com/
이렇게 알아서 바뀌어 들어가진다.
즉 PAT가 들어간 경로를 통해 private pod 을 설치하고 install 이 가능해진다.
전체 코드
name: Swift on: push: branches: [ feature/ci-test ] pull_request: branches: [ feature/ci-test ] jobs: build: runs-on: macos-latest env: PERSONAL_ACCESS_TOKEN : ${{ secrets.PERSONAL_ACCESS_TOKEN }} steps: - name: "Checkout" uses: actions/checkout@v3 - name: :"Credentials setup" run: | git config --global url."https://${PERSONAL_ACCESS_TOKEN}@github.com/".insteadOf "https://github.com/" - name: "Run Test" run: | pod install --repo-update --clean-install
'개발 > Swift' 카테고리의 다른 글
[TIL] Cell highlighted UI변경, removeFromSuperview 안되는 경우 (0) 2022.07.08 [Github action IOS] CI/CD Testflight 자동화 배포 하기 (0) 2022.05.19 [Swift] AssociatedType 추상클래스에서의 사용 (0) 2022.05.05 [Swift] Drag&Drop Interaction CustomValue 전달 (0) 2022.05.02 백준 1303 DFS 활용문제 (0) 2022.04.08