💣
一部の reviewdog が `exit status 128` で落ちる件について
2022/4/13 現在、 GitHub Actions 上で動かしてしている reviewdog のチェックで、一部エラーが発生し、CI が落ちている状態になっていました。
実際にエラーになっていたものは reviewdog/action-misspell などで、 Docker 上で reviewdog のチェックを行っているものが対象です。
エラーの内容は以下の通り
reviewdog: failed to run 'git rev-parse --show-prefix': exit status 128
結論
workspace 上にあるディレクトリ、ファイルの所有権を root:root に変更します。
jobs:
misspell:
name: runner / misspell
runs-on: ubuntu-latest
steps:
- name: Check out code.
uses: actions/checkout@v1
+ - run: |
+ sudo chown -R root:root $GITHUB_WORKSPACE
- name: misspell
uses: reviewdog/action-misspell@v1
with:
github_token: ${{ secrets.github_token }}
locale: "US"
原因
reviewdog を Docker コンテナ上で実行するもので、このようなエラーが発生しているようです。
.git
が他の所有者のものの場合、 git の操作ができないように仕様が変わっています
コンテナ上のユーザは、多くの場合 root
であり、ホスト( GitHub Actions Runner )上のユーザは runner
です。マウントしているディレクトリの所有者が runner で、コンテナ上のユーザと所有者が異なるため、以下のようなエラーが発生し、reviewdog の実行が失敗しているようです。
fatal: unsafe repository ('/github/workspace' is owned by someone else)
To add an exception for this directory, call:
git config --global --add safe.directory /github/workspace
よって、各ライブラリが対応するまで、暫定的に chown
で所有者を変更する必要があります。
なぜ、このような仕様になったかは、 https://github.blog/2022-04-12-git-security-vulnerability-announced/ の CVE-2022-24765 を参照してください。
Discussion