由於前面已經遵循 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.