blog.yuzu441.com

biome ciのchangedオプションをgithub actionsで使う

概要

github actionsでbiome ciを設定していて、動いてると思ったらチェックしたファイルが0になっていた。

今回入れたプロジェクトではlint機能で怒られる所が複数あるため一気に解決が難しく、徐々に解決していくためにbiome ci--changedオプションを使っていて、それの影響で対象ファイルが0になっていた。

対応

そもそもなぜ0になるのかというのを調べた所以下のissueを見つけた

🐛 biome ci in pipeline doesn’t apply biome.json · Issue #3357 · biomejs/biome

示されている解決方法を見るに原因としてはactions/checkoutの動作として別ブランチを持ってきていないのでdevelopブランチがなかったのだと思われる

解決方法は以下の通り

  • actions/checkout@v4のチェックアウト時にfetch-depth: 0を指定する
  • biome ciの実行時に--vcs-default-branch=origin/${{ github.base_ref }}を指定する
    • origin/${{ github.base_ref }}の前にあるのが重要

以下設定例

jobs:
  quality:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Setup Biome
        uses: biomejs/setup-biome@v2
        with:
          version: latest
      - name: Run Biome
        run: |
          biome ci . --changed --no-errors-on-unmatched --vcs-default-branch=origin/${{ github.base_ref }}

これで一応意図通りにチェックされ、対象ファイルが0ではなくなった。

ただ--vcs-default-branchの所でremoteのブランチがorigin前提になっているので、ここをもうちょっとなんとかしたい。。

もっと良い解決方法があればdmなどで教えていただけると助かります。

参考

GitHub Actions の Workflow 実行内で Ref(ブランチ名)を取得する方法 | DevelopersIO