はじめに
Unity の UPM を利用する際にプロジェクトで GitHub Actions の自動化でプライベートリポジトリにあるパッケージを取得する方法です。
で書いた内容を GitHub Actions のタスクに置き換えたものですので、認証情報を抑制する方法だけであれば上記を参照していただければ完結すると思います。
GitHub Actions の設定
GitHub Actions 側では以下のように credeitial-manager-core を使用します。
事前に GitHub Actions のシークレットに設定しておきます。
- USERNAME: GitHub にアクセス権を持つユーザー名
- PASSWORD: 上記のユーザーのパスワードもしくはリポジトリにアクセスできる権限があるパーソナルアクセストークン
- name: Git credential
run: |
git credential-manager-core store << EOS
protocol=https
host=github.com
username=$USERNAME
password=$PASSWORD
EOS
上記を Unity のインポート前に設定しておくことで Unity のパッケージマネージャーがリポジトリアクセス時に認証情報を git-credential-manager の情報を参照するようになります。
ただ、このままだと認証情報が残ったままですので最後に認証情報を削除する処理も入れておきます。
- name: Clean up Git credential
if: ${{ always() }}
run: |
git credential-manager-core erase << EOS
protocol=https
host=github.com
EOS
エラー発生時
上記の git credential-manager-core
で以下のようなエラーが出る場合は
fatal: Interaction with the Security Server is not allowed. [0xffff9d24]
こちらを参考にアクセス許可を付与してください。
もしくはキーチェインの設定が間違っている場合があります。
git-credential-manger-core
は『デフォルトのログインキーチェイン』を使用します。
そのため独自にキーチェインを使用する場合はデフォルトのキーチェインの変更が必要になります。
security default-keychain <キーチェインパス>
GitHub Actions 用のアクション
この辺りを設定するのが面倒だったりキーチェインの部分が色々と知識がないと出来なかったりするので設定用のアクションを作成しました。
こんな感じで設定してもらうとこのアクション実行で git-credential-manager-core
の設定を行い、最後にその設置を破棄する部分まで行います。
- uses: akiojin/store-git-credential-github-action@v1.1
with:
username: ${{ secrets.GIT_CREDENTIAL_USERNAME }}
password: ${{ secrets.GIT_CREDENTIAL_REPOSITORY_PASSWORD }}
さいごに
UPM を GitHub プライベートリポジトリで運用されている環境は意外と少ないかもしれませんが、社内ライブラリを GitHub で運用されている方は結構この辺りでつまづくことがあるんじゃないかと思いますので、一度試していただければと思います。