🐡

github actionでpersonal access tokenを使わずBUNDLE_GITHUB__COMを設定する方法

2023/06/04に公開

はじめに

github actionでプライベートリポジトリのgemを参照する際、personal access tokenを使っていましたが、マシンユーザーの管理などが発生しめんどくさいです。
github appsを使うことで解消できたのでメモ代わりに手順を残します。

手順

基本的にここに書いてある手順でできます
https://zenn.dev/tatsuo48/articles/72c8939bbc6329#やりかた

自分で書いた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卒業の道は遠い。

参考

https://blog.n-z.jp/blog/2023-04-14-dependabot-bundler-with-private-repo.html

Discussion