ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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 발행하기

    1. setting

    1.  Developer settings

    1.  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

     

     

     

     

     

     

    댓글

Designed by Tistory.