👻

GitHub Actionsでprivate repositoryをpub getする

2023/03/31に公開

Flutterのパッケージでgitのprivate repositoryを参照しているとき

例:

foo:
  git:
    url: git@github.com:najeira/my_private_repo.git
    ref: ef7567ed67d09e79cdc84195ef69b6f716311170

GitHub ActionsでFlutterのテストを実行する場合には、
そのままではflutter pub getが失敗するので、設定が必要です。

SSH鍵の用意

ssh-keygen -t ed25519 -f ./deploy_key -N "" -C "git@github.com:najeira/my_private_repo.git"

コメントに参照されるrepositoryのURLを入れておきましょう。
複数の別のrepositoryを扱いたいときに、後述のssh-agentがコメントを利用します。

Deploy Keys

参照されるprivate repositoryにて、
生成した公開鍵(.pubのほう)を登録

手順:

  • Settings
  • Deploy Keys
  • Add deploy key

Secrets

参照するほうのrepository(もしくはOrganization)にて、
生成した秘密鍵を登録

手順:

  • Settings
  • Secrets and variables
  • Actions
  • New repository secret

GitHub Actions

webfactory/ssh-agentを利用します。
前段で登録した秘密鍵のsecret(名前例:PRIVATE_REPO_SSH_KEY)を設定。

例:

flutter_test:
  runs-on: ubuntu-latest
  timeout-minutes: 10
  steps:
    - uses: actions/checkout@v3
    - uses: webfactory/ssh-agent@v0.7.0
      with:
        ssh-private-key: ${{ secrets.PRIVATE_REPO_SSH_KEY }}
    - uses: subosito/flutter-action@v2
      with:
        channel: 'stable'
    - run: flutter pub get
    - run: flutter test --no-test-assets

Discussion