GitHubにタグ付けしてもCircleCIが動作しなかったので、そのときの解決方法を記載します。
結論としては、requiresのジョブにもfiltersを設定しよう
ということになります。
環境
- CircleCI version 2.0
- GitHub
問題
以下のようにcircleci/config.yml
を書いてタグ付けをしたのですが、なぜかCircleCIでワークフローが動作しませんでした。
config.yml
workflows:
version: 2
samples:
jobs:
- sample1:
- sample2:
requires:
- sample1
filters:
branches:
ignore: /.*/
tags:
only: /^v[0-9]+(\.[0-9]+){2}$/
原因と解決方法
jobsの基本動作として、filters
のbranches
指定しなくても全てのブランチでジョブは動作しますが、tags
は指定しないと動作しないようになっていました。
公式に、依存するジョブにはタグの指定をしてね、的なことが書いてありました。
https://circleci.com/docs/2.0/workflows/#git-tag-job-execution
つまりここで動作しなかった原因は、sample2の必須ジョブとしてsample1が設定されていましたが、sample1はタグ設定時には動作しないためCircleCIが動作していませんでした。
以上を考慮して、タグ設定時でもsample1を動作させるようにした結果、無事タグ付けしたときにCircleCIが連動してジョブを実行してくれました
config.yml
workflows:
version: 2
samples:
jobs:
- sample1:
tags:
only: /^v[0-9]+(\.[0-9]+){2}$/
- sample2:
requires:
- sample1
filters:
branches:
ignore: /.*/
tags:
only: /^v[0-9]+(\.[0-9]+){2}$/
参考
タグ動作でハマった人が質問しており、見事原因が同じでした。
https://discuss.circleci.com/t/builds-for-tags-not-triggering/17681/5