Closed1

GitHub Actionsで連続Push問題を解決する

serinuntiusserinuntius

ドキュメントに書いてある

concurrency を使えばいいらしい。
https://docs.github.com/ja/actions/using-jobs/using-concurrency

自分で使いそうなレシピを書いておく

main連続pushでデプロイをキャンセルはしないけど、1並列に強制したい場合

jobs:
  deploy:
    ## ここから
    concurrency:
      group: ${{ github.workflow }}-${{ github.ref }}
    ## ここまで
    name: Deploy
    environment: staging
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v3
      - name: deploy

${{ github.workflow }}-${{ github.ref }} にしてるのは、複数のワークフローが定義されているとブランチ名だけだと、他のワークフローも待ってしまうから。

LinterとかテストのCIとかで先発をキャンセルして、後発を実行したい場合

jobs:
  deploy:
    ## ここから
    concurrency:
      group: ${{ github.workflow }}-${{ github.ref }}
      cancel-in-progress: true
    ## ここまで
    name: Deploy
    environment: staging
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v3
      - name: Lint
      - name: Test

cancel-in-progress: true を指定することで先発をキャンセルして、後発を実行できる

参考文献

https://docs.github.com/ja/actions/using-jobs/using-concurrency

このスクラップは2023/10/29にクローズされました