由於專案是 monorepo,不太想要每次更新都造成多個專案 deploy,所以採用 path-filtering
來做修改範圍的確認,使用起來也很直覺,設定幾個變數,並且指定若在更新範圍內,就將變數設定為 true
。
注意因為有使用到 config 檔分割,需要開啟後台的 dynamic config。進入 Projects > Project Settings > Advanced,Enable dynamic config using setup workflows。
設定檔寫法:
config.yml
version: 2.1 # 記得要設定喔~CircleCI 才知道從哪起始 setup: true orbs: path-filtering: circleci/path-filtering@0.0.2 workflows: setup-workflow: jobs: - path-filtering/filter: filters: branches: only: develop base-revision: develop config-path: .circleci/continue-config.yml mapping: | packages/project-a/.* is-project-a true packages/utils/.* is-project-all true
continue-config.yml
version: 2.1 parameters: is-project-a: type: boolean default: false is-project-all: type: boolean default: false # 執行工作 jobs: build-image: machine: image: ubuntu-2204:2022.10.2 steps: # 執行指令 - run: name: Run Scripts command: | echo "Hello" # 工作流 & 執行條件 workflows: update-dev: when: or: - << pipeline.parameters.is-project-a >> - << pipeline.parameters.is-project-all >> jobs: - build-image: context: circle-ci-context
參考資料: