Help us understand the problem. What is going on with this article?

Circle-CI 2.0のcron triggerを使って、定期実行をする

More than 1 year has passed since last update.

Circle-CIでいつのまにcron実行する機能が追加されていたので試した。

TravisCIには少し前から入っていた機能。

Circle-CIの場合、TravisCIほとさくっと使える感じではなかったのでメモ

どんな時に使えるか?

例えばこんなユースケースが思いつく

  • E2Eなど重くて全branchで実行するには辛いもの
  • 外部のAPIに引きづられて落ちてないかのテスト
  • masterを定期的にstagingと同期するdeploy処理

今回は一番上の「branchにCIは回したい、でも重いテストだけは一日一回にしたい」みたいな場合で考えてみる

config

とりあえず最終的にどうなるかを記載。

circleci/config.yml
version: 2
jobs:
  test: # 普通のテスト
    docker:
      - image: node:8
    steps:
      - checkout
      - run: npm run test
  heavy_test: # 重いテスト
    docker:
      - image: node:8
    steps:
      - checkout
      - run: npm run heavy_test

workflows:
  version: 2
  normal_test_workflow:
    jobs:
      - test
  nightly_workflow:
    triggers:
      - schedule:
          cron: "0 1 * * *" # UTCで記述。この場合は朝10時
          filters:
            branches:
              only:
                - master
    jobs:
      - heavy_test

ポイントは下記の通り

  • Circle-CIのconfigは2.0向けに書く必要がある
    • workflowを利用するので、workflow形式で。
  • triggerの処理は、jobではなく、workflowに対して設定する必要がある。
    • 今回の場合だと、通常のbranch向けのjobとworkflowと、一日一回実行するjobとworkflowを記述する必要がある
    • 定期実行が通常のテストと同じで良いなら、jobを一つ、workflowだけ2つ書く感じになる。
    • それぞれでの共通化については、以前別記事を書いたので、必要があれば参考にしていただきたい
  • Cronは普通にcrontab形式。ただし UTC なので注意。
  • 記述を間違うと、失敗通知すら来ず無視されるのつらい
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away