Circle CI 2.0で特定のブランチでだけ処理を実行したい

Posted on
Circle CI

単一のjobかworkflowsを使うかでやり方が異なります。

単一のjobの場合

branchesを使います。
masterブランチでのみ処理を実行したい場合の例:

version: 2
jobs:
  build:
    docker:
      - image: circleci/ruby:2.5.0
    branches:
        only:
          - master
    steps:
      - run:
          command: echo "This job runs on only master branch"
  • この機能、ローカル環境では機能していないように見えます。onlyのところをmasterにしてもdevelopにしてもjobが成功したので。
  • Circle CI上で走らせるとskippedになっているので問題はなさそうです。

CI is skipped

Workflowsの場合

filters内でbranchesを使います。
masterブランチでのみ処理を実行したい場合の例:

workflows:
  version: 2
  build-deploy:
    jobs:
      - build
      - deploy-production:
          requires:
            - build
          filters:
            branches:
              only: master
  • deploy-productionというjobはmasterブランチにマージされたときだけ実行されるようになります。