日記

日本語の勉強のためのブログ

Github Actionsでsagemath関連のDockerイメージを使用するとactions/checkoutに失敗する

概要

Github Actionsのテストとして,以下のWorkflowファイル(main.yml)を作成してWorkflowを実行した.

name: Compile

on:
  push:
    branches: ["main"]
  workflow_dispatch:

jobs:
  sage:
    runs-on: ubuntu-latest
    container:
      image: sagemath/sagemath
    steps:
      - uses: actions/checkout@v3
      - name: version
        run: sage -v

するとactions/checkout@v3に失敗する.

Post job cleanup.
/usr/bin/docker exec  4f4b8f6200c8af9463ccb9eb4a1d45628889e407b6251ad240fd3849ba23e483 sh -c "cat /etc/*release | grep ^ID"
node:internal/fs/utils:345
    throw err;
    ^

Error: EACCES: permission denied, open '/__w/_temp/_runner_file_commands/save_state_1c6493c4-3253-48d6-8cd7-2a20bc7a1a16'
    at Object.openSync (node:fs:585:3)
    at Object.writeFileSync (node:fs:2170:35)
    at Object.appendFileSync (node:fs:2232:6)
    at Object.issueFileCommand (/__w/_actions/actions/checkout/v3/dist/index.js:2945:8)
    at Object.saveState (/__w/_actions/actions/checkout/v3/dist/index.js:2862:31)
    at Object.8647 (/__w/_actions/actions/checkout/v3/dist/index.js:2321:10)
    at __nccwpck_require__ (/__w/_actions/actions/checkout/v3/dist/index.js:18251:43)
    at Object.2565 (/__w/_actions/actions/checkout/v3/dist/index.js:146:34)
    at __nccwpck_require__ (/__w/_actions/actions/checkout/v3/dist/index.js:18251:43)
    at Object.9210 (/__w/_actions/actions/checkout/v3/dist/index.js:1141:36) {
  errno: -13,
  syscall: 'open',
  code: 'EACCES',
  path: '/__w/_temp/_runner_file_commands/save_state_1c6493c4-3253-48d6-8cd7-2a20bc7a1a16'
}

エラーが発生したDockerイメージ

具体的には,以下のイメージを使用したところEACCES: permission deniedエラーが出た.

  • computop/sage
  • sagemath/sagemath

解決

どちらのイメージも起動時の初期ユーザがroot権限ではないことが原因だった.
https://github.com/actions/checkout/issues/956

上のリンクにあるように,optionsを追加してroot権限で実行するように設定するとうまくいった.

 container: 
    image: alpine:latest
    options: --user root  # これを追加!