🐡
github actionでpersonal access tokenを使わずBUNDLE_GITHUB__COMを設定する方法
はじめに
github actionでプライベートリポジトリのgemを参照する際、personal access tokenを使っていましたが、マシンユーザーの管理などが発生しめんどくさいです。
github appsを使うことで解消できたのでメモ代わりに手順を残します。
手順
基本的にここに書いてある手順でできます
自分で書いたymlを残しておきます
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: generate token
id: generate_token
uses: getsentry/action-github-app-token@v2
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Checkout code
uses: actions/checkout@v3
- name: Install Ruby and gems
env:
BUNDLE_GITHUB__COM: "x-access-token:${{ steps.generate_token.outputs.token }}"
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Lint Ruby files
run: bundle exec rubocop
はまったとこ
最初 ${{ needs.generate_token.outputs.token }}:x-oauth-basic
と記載していたが以下のエラーが出たので x-access-token:${{ needs.generate_token.outputs.token }}
に修正した。
x-oauth-basicの方は非推奨になっているらしい。
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/xxxxxxx'
generate token部分をjobに最初は抜き出していたが Skip output 'token' since it may contain secret.
のようなwarningが出てtokenが引き継がれなかったためstepに含めるように修正した
その他
この後にdependabotがbundlerのprivate repositoriesに対応していないことに気づき、結局personal access tokenを使わないと行けなかった。
personal access token卒業の道は遠い。
参考
Discussion