暮らしに役立つ便利なWEBサービス / APIを紹介していきます

circleciで更新がない場合にテストをスキップ

● circleciで更新がない場合にテストをスキップ

方法1 steps の中で直接判定する。

更新がない場合は circleci-agent step haltexit 0 で以降を中断します。

  frontend:
      docker:
        - image: cimg/node:200
      steps:
        - checkout
        - run:
            name: Check files
            command: |
              CHANGED_FILES=$(git diff origin/main --name-only | grep '^PATH/TO/YOUR/PROJECT/')
              if [ -z "$CHANGED_FILES" ]; then
                echo "No changes in frontend"
                circleci-agent step halt
                exit 0
              fi
              echo "frontend files changed, proceeding with test"
              echo "Changed files:"
              echo "$CHANGED_FILES" | sed 's/^/  - /'

方法2 CircleCIで動的設定を有効にしてpath-filtering Orbを使用する

circleci ORB について https://speakerdeck.com/ks888/circleci-orbsfalseshao-jie

.circleci/config.yml を以下の設定だけにする

version: 2.1

setup: true

orbs:
  path-filtering: circleci/path-filtering@2.0.4

workflows:
  workflow_change_detection:
    jobs:
      - path-filtering/filter:
          name: check-nextjs-changes
          mapping: |
            PATH/TO/YOUR/PROJECT/.* nextjs_changed true
          base-revision: origin/master
          config-path: .circleci/continue_config.yml

.circleci/continue_config.yml を作成して、もともとあった jobs と workflows を移動する

No.2657
09/26 13:20

edit