[CI/CD] CircleCI path-filtering
由於專案是 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
參考資料: