[CI/CD] CircleCI continuation
由於前面已經遵循 path-filtering 的模式,對於 production 標記 tag 上版的流程,也希望可以分成兩個設定檔來做,維持檔案的整潔,沒想到卻在這裡踩了個坑~
要特別注意:
- filters 如果是使用 tag,要將 branches 略過,否則會報錯 。
{"message":"Pipeline is not in setup state."},我也有點無法參透這個錯誤訊息…求助網路大神 ^^; - continue config 的 jobs 也要記得加上 filters (!!!)。
本來想說前面已經加了,後面就會自動跑,但沒加就一直過不去,後來發現這是 CircleCI 預設的行為,如果沒有特別聲明要 filter tag,它就不會做事。
config.yml
version: 2.1
setup: true
orbs:
continuation: circleci/continuation@0.3.1
workflows:
setup-workflow:
jobs:
- continuation/continue:
filters:
tags:
only: /v.*/
branches:
ignore: /.*/
configuration_path: .circleci/continue-config.yml
continue-config.yml
version: 2.1
# 執行工作
jobs:
build-image:
machine:
image: ubuntu-2204:2022.10.2
steps:
# 執行指令
- run:
name: Run Scripts
command: |
echo "Hello"
# 工作流 & 執行條件
workflows:
update-dev:
jobs:
- build-image:
filters:
tags:
only: /v.*/
branches:
ignore: /.*/
參考資料:
- CircleCI Developer Hub – circleci/continuation
- Dynamic Config + Git Tag not running workflow – Build Environment – CircleCI Discuss
- Using Workflows to Orchestrate Jobs – CircleCI
CircleCI does not run workflows for tags unless you explicitly specify tag filters.