O hirunewani blog

Q. pull_requestトリガーのworkflowがなぜか実行されていない

Created at

Github Actionsのpull_requestトリガーのworkflowがなぜか実行されていないという相談を受けたので、その原因と解決策についてまとめた。

Table of Contents

状況

相談を受けて、Github上でPRやworkflowファイルを確認したが、何の変哲もなく実行されない理由が分からなかった。

Workflowファイルのトリガーなどの指定は次のようになっておりブランチで実行に制限は掛かっているものの、PRはmasterより生えたブランチからmasterに向けてのPRであり、コミットログにも不自然なところはなかった。

on:
  pull_request:
    branches:
      - master
      - deploy
  push:
    branches:
      - master
      - deploy

試しに、そのPRを複製したPRを新しく生やしたところ、workflowは正しく実行されたため、Githubの障害を疑っていた。また結果はコミットに紐づいているため、元のPRでそのworkflowが成功した表示になった。

原因

その後、話を聞いていると、最近参加したメンバーがPRを投げる直前までデフォルトブランチ以外のブランチをベースブランチに指定して作業していたことが分かった。

つまり、今回の状況は次のように発生していた。

  1. まずbranch Aからbranch BへのPRを作った。
    1. branchesでmasterやdeployブランチが指定されていないworkflowは実行された。
    2. 一方、指定されているworkflowは当然実行されない。
  2. その後何の変更もなく、base branchをmasterに切り替えた。
    1. 新規のpushは無く、PR自体も変更が検知されないため、pushとpull_requestトリガーのworkflowはbranchesなどの指定に関わらず実行されない。
    2. Workflowの実行結果のstatusはコミットに紐づいているため、既に実行されているpushトリガーなどのworkflowのみ正常に走ったような見た目となる。
    3. branchesが指定されたworkflowは本来走る状況にも関わらず走っていないように見える状態になる。