Start Building for Free
CircleCI.comアカデミーブログコミュニティサポート

複数のワークフローを使ったパイプラインをスケジュール実行

2 months ago1 min read
クラウド
Server v4.x
Server v3.x
Server v2.x
このページの内容

はじめに

スケジュール化されたパイプラインは、トリガーされたパイプラインであるため、設定ファイル内のすべてのワークフローが実行されます。 条件を設定することにより、スケジュール化したパイプラインを実行したい場合のみ実行することができます。 その方法には、定義済みのパイプライン値を使う方法と、カスタムパイプラインパラメーターを使う方法があります。

定義済みのパイプライン値を使ったフィルタリング

ワークフローのフィルタリングを実装するための 1 つの方法は、パイプライン値を使用することです。 以下の例では、定義済みパイプライン値である pipeline.trigger_sourcepipeline.schedule.name を使用しています。

daily-run-workflow:
  when:
    and:
      - equal: [ scheduled_pipeline, << pipeline.trigger_source >> ]
      - equal: [ "my schedule name", << pipeline.schedule.name >> ]
  jobs:
    - test
    - build

上記の例の when の下の2番目の equal は必ずしも必要ではありません。 pipeline.schedule.name は、パイプラインがスケジュールによってトリガーされる場合に使用できるパイプライン値です。

スケジュールがトリガーされる時に 実行しない ワークフローのフィルタリングを追加することもできます。

daily-run-workflow:
  when:
    and:
      - equal: [ scheduled_pipeline, << pipeline.trigger_source >> ]
      - equal: [ "my schedule name", << pipeline.schedule.name >> ]
  jobs:
    - test
    - build

other-workflow:
  when:
    not:
      equal: [ scheduled_pipeline, << pipeline.trigger_source >> ]
  jobs:
   - build
   - deploy

パイプラインの全リストは、 パイプライン値とパラメーター のページでご確認ください。

パイプラインパラメーターを使ったフィルタリング

複数のワークフローを使ってパイプラインのスケジュール実行を設定するには、パイプラインパラメーターを使用する必要があります。 下記の例では、 run-schedule というパラメーターが作成され、type: boolean および default: false と設定されています。 これにより、ワークフローのセクションで when を使っていつパイプラインを実行するかの条件を指定できます。 when 条件を使用する場合は、以下の例のように when: not: も設定する必要があります。

version: 2.1

orbs:
  android: circleci/android@1.0.3

jobs:
  build-library:
    executor:
      name: android/android-machine
      resource-class: xlarge
    steps:
      - checkout
      - run:
          name: Assemble library
          command: ./gradlew clean
# set pipeline parameters
parameters:
  run-schedule:
    type: boolean
    default: false

workflows:
  # do not run the scheduled pipeline if build-test-deploy
  build-test-deploy:
    when:
      not: << pipeline.parameters.run-schedule >>
    jobs:
      - android/run-ui-tests:
          name: build-and-test
          system-image: system-images;android-23;google_apis;x86
          test-command: ./gradlew assemble sample:connectedDebugAndroidTest
  # run the scheduled pipeline if nightly-snapshot
  nightly-snapshot:
    when: << pipeline.parameters.run-schedule >>
    jobs:
      - android/run-ui-tests:
          name: build-and-test
          system-image: system-images;android-23;google_apis;x86
          test-command: ./gradlew assemble sample:connectedDebugAndroidTest

この設定ファイルサンプルの全文は、GitHub 上の サンプルプロジェクト をご覧ください。 パイプラインパラメーターの全リストは、 パイプラインの値とパラメーター でご確認ください。


ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。

サポートが必要ですか

CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。

または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。