かなり限定的な状況だったので同じ事例がなく困った。
やりたかったこと
- github enterprise を使用して、enterprise内のorgAのprivate repo を、orgBのgithub actions 内で実行するterraform から参照したい
- terraform では、参照したrepo をmodule として取り込んでリソース作成を行いたい
起こったこと
- orgB のgithub actions ユーザーにはorgA のrepo を参照する権限がなかった
- よくある解決手段にはPATがあったが、システムユーザーにPATを付与して管理したくなかった
- また、github enterprise であったため対象URLがgithub.com でなく苦戦した
やったこと
github app を使用し、orgA でappトークンを払い出す
払い出したトークンの
- appトークンのID
- シークレットキー
を控える
以下をorgB のgithub actions 内のterraform 実行前step で実施する
steps:
- name: Generate token
id: generate_token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ vars.<variablesに設定したorgA のappトークンID> }}
private-key: ${{ secrets.<secretsに設定したorgA のapp のシークレットキー> }}
owner: "<orgAの名前>"
- name: Set Token
run: |
export TOKEN='${{ steps.generate_token.outputs.token }}'
git config --global url."https://x-access-token:${TOKEN}@github.<github enterprise ごとの値>//".insteadOf "https://github.<github enterpriseごとの値>/"