Flutter Github Action Private Repo 패키지 설치
최근에 Flutter Project를 진행하고 있다. 진행하는 프로젝트는 여러개의 Private Repository들로 구성되어 있다.
Flutter는 빌드시에 flutter pub get을 실행하면서 의존 패키지들을 설치하는데, 이 때 의존 패키지들 중에 지금처럼 Private Repository URL이 들어있는 경우에 빌드머신이 해당 Repository에 접근하지 못하여 빌드오류 나는 경우가 생긴다.
Xcode Cloud의 경우는 각각의 Repository들을 모두 Access Permission Grant를 해서 빌드 오류를 수정할 수 있는데, Github Action의 경우에는 아무리 찾아도 ssh protocol을 사용해서 Deploy key를 사용하라는 대답이 대부분인데, Deploy key는 ssh-key를 여러개 만들어야 하는 데다가, 패키지가 추가될 때마다 사이트에 들어가서 설정을 해주어야 하는 번거로움이 있다.
아무리 찾아도 명쾌하고 간단한 해법이 나오지 않아서 직접 우분투 머신을 켜서 이것저것 해 보았는데, 결론부터 말하자면 삽질 끝에 얻은 가장 최선의 방법은 아래와 같다.
-
Personal Access Token 생성 Personal Access Token을 생성해서 사용하는데, 권한은 repo 전체와 read:org 정도만 있으면 됐던것 같다. 그 다음에 Username과 Token을 Github Action Secret에 등록한다. Secret에 등록하면 등록 이후부터는 그 값을 볼 수 없기 때문에 나름 안전하다.
-
Workflow YAML파일에서 flutter pub get을 하기 전 Git Credential을 강제 생성
위와 같이 하면 flutter pub get시에 내 아이디와 Token으로 접근 가능한 Repository들은 문제 없이 설치 된다.- name: Install dependencies run: | git config --global credential.helper store echo https://\${{ secrets.ACCESS_USERNAME}}:\${{ secrets.ACCESS_TOKEN }}@github.com > ~/.git-credentials flutter pub get