🐺

GitHub Actions timeout設定

に公開

はじめに

GitHub Actionsのワークフローを運用していると、ジョブやステップが予期せず長時間実行され続けたのでtimeout-minutesを設定した話です。

timeout-minutesとは

timeout-minutesは、GitHub Actionsにおいてジョブやステップの最大実行時間を制限する設定です。指定した時間を超えるとそのジョブやステップは自動的に停止されます。

設定できる場所

timeout設定はjobstepレベルに対して設定可能です。

jobレベルでの設定

jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v4
      - name: Run build
        run: npm run build

※jobが自動的にキャンセルされるまでの最長時間は360分です。

stepレベルでの設定

特定のステップにのみtimeoutを設定可能

steps:
  - name: Long
    run: npm run hoge
    timeout-minutes: 60
  
  - name: Short
    run: echo "This is short"
    timeout-minutes: 5

所感

長期実行されるとGitHub Actionsのリソースを必要以上に使用してしまうので基本的には設定するのが無難な印象です。

リファレンス

https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes

Discussion