パイプラインのスケジュール実行
はじめに
パイプラインのスケジュール実行機能により、スケジュールに沿って定期的にパイプラインをトリガーすることができます。 パイプラインのスケジュール実行では、以下のようなパイプラインのすべての機能が保持されます。
- パイプラインに関連付けるユーザーの管理: これにより、 制限付きコンテキストの使用が可能になります。
- セットアップ ワークフロー経由の ダイナミックコンフィグの使用
.circleci/config.yml
の編集が不要なスケジュール変更- 自動キャンセル機能の利用
- スケジュールに関連付ける パイプラインパラメーターの指定
- ワークフロー間などで共通するスケジュールの管理
パイプラインのスケジュール実行は、API を使って、または CircleCI Web アプリのプロジェクト設定から設定します。
パイプラインのスケジュール実行機能の使い方
パイプラインのスケジュール実行機能を使うには、API を使用する方法と、CircleCI Web アプリを使用する方法があります。 それぞれの方法を下記でご紹介します。 パイプラインのスケジュール実行に移行する必要がある既存のワークフローがある場合は、 パイプラインのスケジュール実行への移行ガイドをご覧ください。
Web アプリのプロジェクト設定を使用する場合
- CircleCI Web アプリのサイドバーから Projects に移動し、 プロジェクトの横の省略記号 (…) をクリックし、Project Settings をクリックします。 Project Settings ボタンは各プロジェクトのランディングページにもあります。
- Triggers に移動します。
- 新しいスケジュールを作成するには、Add Trigger をクリックします。
- フォームに入力して新しいスケジュールを定義し、Save Trigger をクリックします。
このフォームには、 パイプラインパラメーターを追加するオプションもあります。これは、設定ファイルで最初に宣言した型指定されたパイプライン変数です。
API を使用する場合
プロジェクトにスケジュール化したワークフローがなく、パイプラインのスケジュール実行を試してみたい場合:
- CCI トークンを準備します、または API トークンの管理 のページに記載されている手順に従って新しいトークンを作成します。
- API を使用して新しいスケジュールを作成します。 例えば、下記のようになります。
curl --location --request POST "https://circleci.com/api/v2/project/<project-slug>/schedule" \
--header "circle-token: <PERSONAL_API_KEY>" \
--header "Content-Type: application/json" \
--data-raw '{
"name": "my schedule name",
"description": "some description",
"attribution-actor": "system",
"parameters": {
"branch": "main"
<additional pipeline parameters can be added here>
},
"timetable": {
"per-hour": 3,
"hours-of-day": [1,15],
"days-of-week": ["MON", "WED"]
}
}'
詳細は、 API v2 に関するドキュメントの Schedule のセクションを参照してください。
パイプラインのスケジュール実行のビデオチュートリアル
このビデオでは以下のシナリオに対する短いチュートリアルをご覧いただけます。
- Web アプリでスケジュールを設定する
- API を使ってスケジュールを設定する
- ワークフローのスケジュール実行からパイプラインのスケジュール実行への移行する
これらのシナリオについてのドキュメントは、以下のページでご確認いただけます。
FAQ
質問: 既存のワークフローのスケジュール実行をパイプラインのスケジュール実行に移行することはできますか?
回答: はい、できます。詳細については、 パイプラインのスケジュール実行への移行 を参照してください。
質問: 作成したスケジュールの見つけ方は?
回答: スケジュール化されたパイプラインは CircleCI に直接保存されるため、スケジュール毎に関連付けされた UUID があります。 作成したスケジュールは、プロジェクト設定のトリガーのページで閲覧できます。 一つのプロジェクトの配下のすべてのスケジュールをリストアップすることも可能です。
curl --location --request GET "https://circleci.com/api/v2/project/<project-slug>/schedule" \
--header "circle-token: <PERSONAL_API_KEY>"
GitHub および Bitbucket ユーザーの場合: project-slug
は、例えば、gh/CircleCI-Public/api-preview-docs
のような vcs-type/org-name/repo-name
の形式を取ります。
GitLab.com ユーザーの場合: project-slug
は circleci/:slug-remainder
の形式を取ります。 プロジェクトスラグの形式に関する詳細は、API 開発者向けガイドの 入門ガイドのセクションを参照してください。
質問: スケジュール化したパイプラインが実行されないのはなぜですか?
回答: 考えられる理由は複数あります。
- スケジュール化されたパイプラインに設定されている実行ユーザーは現在も組織の一員ですか?
- スケジュールに設定されたブランチが削除されていませんか?
- お客様の GitHub 組織では SAML 保護を使用していませんか? SAML トークンは頻繁に失有効期限が切れます。失効していると GiHub へのリクエストが失敗します。
質問: パイプラインのスケジュール実行が思っていたより遅いのはなぜですか?
回答: Cron 式と比較して、パイプラインのスケージュール実行にはスケジュール方法に微妙な違いがあります。
たとえば、08:00 (協定世界時) のスケジュールを 1 時間に 1 回と指定すると、このスケジュールされたパイプラインは 08:00 ~ 09:00 (協定世界時) の間に 1 回実行されます。 これは 08:00 (協定世界時) ちょうどに実行されるという意味ではないのでご注意ください。
このパイプラインのスケジュール実行は、その後は常に最初の実行と同じ時間に実行されます。 つまり、最初にスケジュールされたパイプラインが 08:11 (協定世界時) に実行された場合、その次も 08:11 (協定世界時) に実行されます。
質問: 正規表現はサポートしていますか?
回答: 現在はサポートしていません。 パイプラインのスケジュール実行には、Webhook、API 呼び出し、スケジュールに含まれるコミット SHA、ブランチ、タグ (完全認証、正規表現なし) などの高度に決定論的な入力が必要です。
次のステップ
ドキュメントの改善にご協力ください
このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。
- このページの編集をご提案ください (最初に「コントリビューションガイド」をご覧ください)。
- ドキュメントの問題点を報告する、またはフィードバックやコメントを送信するには、GitHub で issue を作成してください。
- CircleCI は、ユーザーの皆様の弊社プラットフォームにおけるエクスペリエンスを向上させる方法を常に模索しています。 フィードバックをお寄せいただける場合は、リサーチコミュニティにご参加ください。
サポートが必要ですか
CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。
または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。
CircleCI Documentation by CircleCI is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.