21
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【GitHub Actions】tags-ignore, branches-ignoreで指定していないタグ、ブランチでワークフローが動かない問題の解決法

Posted at

GitHub Actionsで特定のタグもしくはブランチにpushされた場合のみ、ワークフローを実行しないようにしようとした際にハマったのでその内容と解決策を記載しておく。

特定のタグやブランチではワークフローを実行しないようにしたかった

GitHub Actionsで、特定のタグもしくはブランチにpushされた場合のみ、ワークフローを実行しないようにしたい場合、以下のように設定すると思う。

v1.0.0 などのタグがpushされた場合は実行させない場合

workflow.yml(tags-ignore)
on:
  push:
    tags-ignore:
      - 'v*.*.*'

dev ブランチにpushされた場合は実行させない場合

workflow.yml(branches-ignore)
on:
  push:
    branches-ignore:
      - 'dev'

上記の設定を行うことで特定のタグ(v1.0.0など)やブランチ(dev)ではワークフローが実行されなくなる。

未指定のタグやブランチでもワークフローが実行されない問題が発生

しかし、上記の設定の場合、以下の問題が発生する。

  • workflow.yml(tags-ignore):タグに対するpushにしか反応しなくなり、dev ブランチなどにpushした場合に実行されない。
  • workflow.yml(branches-ignore):ブランチに対するpushにしか反応しなくなり、v1.0.0 などのタグにpushした場合に実行されない。

すなわち、tags-ignoreではブランチへのpushbranches-ignoreではタグへのpushに対してワークフローが実行されない。

解決策

GitHub Actionsの仕様に、この動作について記載がないように見えたので、サポートに問い合わせてみた。
その結果、以下のように設定を変更することで、特定のタグやブランチのみを実行対象から外すことができると回答いただいた。

v1.0.0 などのタグがpushされた場合は実行させない場合

workflow.yml(tags-ignore)の改善後
on:
  push:
    tags-ignore:
      - 'v*.*.*'
    branches:  # 追記
      - '*'    # 追記

dev ブランチにpushされた場合は実行させない場合

workflow.yml(branches-ignore)の改善後
on:
  push:
    branches-ignore:
      - 'dev'
    tags:     # 追記
      - '*'   # 追記

すなわち、 対象外にしたいものがタグの場合は全ブランチに対して実行するよう に、 ブランチの場合は全タグに対して実行するよう明示的に記載 すればよい。

これは仕様上、tags-ignorebranches-ignore を指定した場合、デフォルトでブランチやタグが無視される ようになっているためとのこと。

まとめ

真に特定のタグやブランチに対するpushに対してのみ、ワークフローを実行したくない場合は、以下のようにすればよい。

  • 特定のタグのみ実行対象外にしたい場合:tags-ignorebranches を併用
  • 特定のブランチのみ実行対象外にしたい場合:branches-ignoretags を併用
21
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?