[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

參考資料:


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *