Azure DevOps Services |Azure DevOps Server 2022 |Azure DevOps Server 2020
Azure Pipelines には、パイプラインの開始方法を構成するためのトリガーがいくつか用意されています。
- スケジュールされたトリガーは、夜間ビルドなどのスケジュールに基づいてパイプラインを開始します。 この記事では、スケジュールされたトリガーを使用してスケジュールに基づいてパイプラインを実行する方法について説明します。
- イベント ベースのトリガーは、プル要求の作成やブランチへのプッシュなどのイベントに応答してパイプラインを開始します。 イベントベースのトリガーの使用については、「 Azure Pipelines のトリガー」を参照してください。
たとえば、プッシュが行われるたびにビルドを検証する (CI トリガー)、プル要求が行われるとき (PR トリガー)、夜間ビルド (スケジュールされたトリガー) など、スケジュールされたトリガーとイベントベースのトリガーをパイプラインで組み合わせることができます。 イベント ベースのトリガーに応答せず、スケジュールに従ってパイプラインのみを構築する場合は、パイプラインで他のトリガーが有効になっていないことを確認します。 たとえば、GitHub リポジトリ内の YAML パイプラインでは、CI トリガーと PR トリガーが既定で有効になっています。 既定のトリガーを無効にする方法については、「 Azure Pipelines のトリガー 」を参照し、リポジトリの種類に関するセクションに移動します。
スケジュールされたトリガー
Important
パイプライン設定 UI を使用して定義されたスケジュールされたトリガーは、YAML のスケジュールされたトリガーよりも優先されます。
YAML パイプラインに YAML スケジュールされたトリガーと UI で定義されたスケジュールされたトリガーの両方がある場合、UI で定義されたスケジュールされたトリガーのみが実行されます。 YAML パイプラインで YAML 定義のスケジュールされたトリガーを実行するには、パイプライン設定 UI で定義されているスケジュールされたトリガーを削除する必要があります。 すべての UI スケジュールされたトリガーが削除されたら、YAML スケジュールされたトリガーの評価を開始するためにプッシュを行う必要があります。
UI スケジュールされたトリガーを YAML パイプラインから削除するには、 UI 設定が YAML スケジュールされたトリガーをオーバーライドする方法に関する記事を参照してください。
スケジュールされたトリガーは、 cron 構文を使用して定義されたスケジュールで実行するようにパイプラインを構成します。
schedules:
- cron: string # cron syntax defining a schedule
displayName: string # friendly name given to a specific schedule
branches:
include: [ string ] # which branches the schedule applies to
exclude: [ string ] # which branches to exclude from the schedule
always: boolean # whether to always run the pipeline or only if there have been source code or pipeline settings changes since the last successful scheduled run. The default is false.
schedules:
- cron: string # cron syntax defining a schedule
displayName: string # friendly name given to a specific schedule
branches:
include: [ string ] # which branches the schedule applies to
exclude: [ string ] # which branches to exclude from the schedule
always: boolean # whether to always run the pipeline or only if there have been source code or pipeline settings changes since the last successful scheduled run. The default is false.
batch: boolean # Whether to run the pipeline if the previously scheduled run is in-progress; the default is false.
# batch is available in Azure DevOps Server 2022.1 and higher
YAML のスケジュールされたパイプラインには、次の制約があります。
- cron スケジュールのタイム ゾーンは UTC です。 GitHub Copilot から AI の支援を受けて、cron 式を作成できます。
-
branches
にinclude
句を指定せずにexclude
句を指定する場合、include
句で*
を指定することと同じです。 - スケジュールを指定するときにパイプライン変数を使用することはできません。
- YAML ファイルでテンプレートを使用する場合は、テンプレート ファイルではなくメイン YAML ファイルでスケジュールを指定する必要があります。
スケジュールされたトリガーの分岐に関する考慮事項
スケジュールされたトリガーは、次のイベントが発生したときに分岐に対して評価されます。
- パイプラインが作成されます。
- パイプラインの YAML ファイルは、プッシュから、またはパイプライン エディターで編集することによって更新されます。
- パイプラインの YAML ファイル パスが 更新され、別の YAML ファイルが参照されます。 この変更により、既定のブランチのみが更新されるため、既定のブランチの更新された YAML ファイル内のスケジュールのみが取得されます。 その後、他のブランチが既定のブランチ (
git pull origin main
など) をマージすると、新しく参照された YAML ファイルからスケジュールされたトリガーがそのブランチに対して評価されます。 - 新しいブランチが作成されます。
ブランチでこれらのイベントのいずれかが発生すると、そのブランチのスケジュールされた実行が、そのブランチの YAML ファイルに含まれるスケジュールされたトリガーのブランチ フィルターと一致する場合に追加されます。
Important
ブランチのスケジュールされた実行は、ブランチがその特定のブランチの YAML ファイル内のスケジュールされたトリガーのブランチ フィルターと一致 する場合にのみ追加されます。
たとえば、次のスケジュールでパイプラインが作成され、このバージョンの YAML ファイルが main
ブランチにチェックインされます。 このスケジュールは、毎日 main
ブランチを構築します。
# YAML file in the main branch
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
次に、new-feature
という名前のmain
に基づいて新しいブランチが作成されます。 新しいブランチの YAML ファイルからスケジュールされたトリガーが読み取られ、 new-feature
ブランチに一致しないため、スケジュールされたビルドに変更は加えられません。また、 new-feature
ブランチはスケジュールされたトリガーを使用してビルドされません。
new-feature
が branches
リストに追加され、この変更が new-feature
ブランチにプッシュされると、YAML ファイルが読み取られ、new-feature
がブランチ リストに追加されたので、new-feature
ブランチのスケジュールされたビルドが追加されます。
# YAML file in the new-feature-branch
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
- new-feature
ここで、main
に基づいて release
という名前のブランチが作成され、release
が main
ブランチの YAML ファイル内のブランチ フィルターに追加され、新しく作成された release
ブランチには追加されないことを検討してください。
# YAML file in the release branch
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
# YAML file in the main branch with release added to the branches list
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
- release
release
はmain
ブランチのブランチ フィルターに追加されましたが、release
ブランチのブランチ フィルターには追加されていないため、release
ブランチはそのスケジュールに基づいて構築されません。 リリース ブランチの YAML ファイル内のブランチ フィルターに release
ブランチ が追加された場合にのみ、スケジュールされたビルドがスケジューラに追加されます。
スケジュールされたトリガーのバッチに関する考慮事項
注
batch
プロパティは、Azure DevOps Server 2022.1 以降で使用できます。
batch
プロパティは、以前にスケジュールされた実行が進行中の場合にパイプラインを実行するかどうかを構成します。
batch
がtrue
されている場合、前のパイプラインの実行がまだ進行中の場合、スケジュールにより新しいパイプラインの実行は開始されません。 既定値は false
です。
batch
プロパティは、always
プロパティの設定の影響を受けます。
always
がtrue
されると、batch
がtrue
され、実行中の実行がある場合でも、cron スケジュールに従ってパイプラインが実行されます。
Always (常に) | Batch | 行動 |
---|---|---|
false |
false |
最後にスケジュールされたトリガーから進行中の実行がある場合でも、最後に成功したスケジュールされたパイプライン実行に関する変更がある場合にのみ、パイプラインが実行されます。 |
false |
true |
パイプラインの実行は、最後に成功したスケジュールされたパイプラインの実行に関して変更があり、進行中のスケジュールされたパイプラインの実行がない場合にのみ実行されます。 |
true |
false |
パイプラインは、cron スケジュールに従って実行されます。 |
true |
true |
進行中の実行がある場合でも、cron スケジュールに従ってパイプラインが実行されます。 |
Build.CronSchedule.DisplayName 変数
注
Build.CronSchedule.DisplayName
変数は、Azure DevOps Server 2022.1 以降で使用できます。
cron スケジュールされたトリガーが原因でパイプラインが実行されている場合、定義済みの Build.CronSchedule.DisplayName
変数には、パイプラインの実行をトリガーした cron スケジュールの displayName
が含まれます。
YAML パイプラインには複数の cron スケジュールが含まれている場合があり、どの cron スケジュールを実行するかに基づいて、パイプラインで異なるステージまたはジョブを実行できます。 たとえば、夜間ビルドと毎週のビルドがあり、夜間ビルド中にのみ特定のステージを実行する必要があるとします。 ジョブまたはステージの条件で Build.CronSchedule.DisplayName
変数を使用して、そのジョブまたはステージを実行するかどうかを決定できます。
- stage: stage1
# Run this stage only when the pipeline is triggered by the
# "Daily midnight build" cron schedule
condition: eq(variables['Build.CronSchedule.DisplayName'], 'Daily midnight build')
その他の例については、 schedules.cron の例を参照してください。
例示
次の例では、2 つのスケジュールを定義します。
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
- releases/*
exclude:
- releases/ancient/*
- cron: '0 12 * * 0'
displayName: Weekly Sunday build
branches:
include:
- releases/*
always: true
最初のスケジュール (毎日午前 0 時のビルド) は、毎日午前 0 時にパイプラインを実行しますが、releases/ancient/*
の下のブランチを除く、main
とすべてのreleases/*
ブランチについて、スケジュールされた最後の正常な実行以降にコードが変更された場合にのみ実行されます。
2 番目のスケジュールである Weekly Sunday ビルドでは、すべての releases/*
ブランチについて、コードが前回の実行以降に変更されたかどうかにかかわらず、日曜日の正午にパイプラインが実行されます。
注
cron スケジュールのタイム ゾーンは UTC であるため、これらの例では、午前 0 時のビルドと正午のビルドは UTC の午前 0 時と正午です。
その他の例については、 クラシック エディターからの移行を参照してください。
Cron 構文
各 Azure Pipelines のスケジュールされたトリガー cron 式は、次の順序で 5 つのエントリを含むスペース区切りの式です。 式は単一引用符で囲 '
。
mm HH DD MM DW
\ \ \ \ \__ Days of week
\ \ \ \____ Months
\ \ \______ Days
\ \________ Hours
\__________ Minutes
フィールド | 指定可能な値 |
---|---|
分 | 0 ~ 59 |
時間 | 0 ~ 23 |
日数 | 1 ~ 31 |
月 | 1 から 12、完全な英語名、英語名の最初の 3 文字 |
曜日 | 0 ~ 6 (日曜日以降)、完全な英語名、英語名の最初の 3 文字 |
値の形式は次のとおりです。
Format | Example | Description |
---|---|---|
Wildcard | * |
このフィールドのすべての値に一致します |
単一の値 | 5 |
このフィールドの 1 つの値を指定します |
コンマ区切り | 3,5,6 |
このフィールドに複数の値を指定します。 複数の形式を組み合わせることができます。 1,3-6 |
範囲 | 1-3 |
このフィールドの値の包括範囲 |
間隔 |
*/4 または 1-5/2 |
このフィールドに一致する間隔 (4 番目の値ごと、ステップ間隔が 2 の範囲 1 ~ 5 など) |
Example | Cron 式 |
---|---|
毎週月曜日、水曜日、金曜日の午後 6:00 にビルドする |
0 18 * * Mon,Wed,Fri 、 0 18 * * 1,3,5 、または 0 18 * * 1-5/2 |
6 時間ごとにビルドする |
0 0,6,12,18 * * * 、0 */6 * * * 、または 0 0-18/6 * * * |
午前 9 時から 6 時間ごとにビルドする |
0 9,15,21 * * * または 0 9-21/6 * * * |
サポートされている形式の詳細については、「 Crontab 式」を参照してください。
GitHub Copilot を使用して cron 式を作成する
GitHub Copilot から AI の支援を受けて cron 式を構築したり、既存の cron 式をローカル タイム ゾーンから UTC に変換したりできます。
Azure Pipelines cron スケジュールは UTC で定義されているため、 毎週月曜日、水曜日、金曜日の午後 6 時にビルド などのスケジュールを cron 構文を使用して作成し、ローカル タイム ゾーンから UTC に変換する必要があります。
次のプロンプトをカスタマイズして cron 式を作成するか、式の作成に使用したタイム ゾーンから cron 式を UTC に変換します。
次の例では、Copilot は毎週月曜日、水曜日、金曜日の午後 6 時 (東部標準時) に構築する UTC cron スケジュールを作成するように求められます。
Build a UTC cron expression for Monday, Wednesday, and Friday at 6:00 PM Eastern Standard Time
ローカル タイム ゾーンに cron 式が既にある場合は、Copilot に UTC に変換するように依頼できます。 この例では、毎週月曜日、水曜日、金曜日の午後 6:00 (0 18 * * Mon,Wed,Fri
) 東部標準時にビルドする cron スケジュールが UTC に変換されます。
Convert the following cron expression from Eastern Standard Time to UTC: 0 18 * * Mon,Wed,Fri
cron 式を UTC に変換するには、式の曜日を変更する必要がある場合があります。 次の例では、月曜日から金曜日の午前 12 時 30 分に中央ヨーロッパ標準時にビルドする UTC cron スケジュールを作成するように求められます。 中央ヨーロッパ標準時は UTC より前なので、結果の式は月曜日の早朝ではなく日曜日の夜遅くに開始され、木曜日に終了します。
Build a UTC cron expression for Monday through Friday at 12:30 AM Central European Standard Time
Copilot によって生成された cron 式に関する追加の詳細を取得するには、プロンプトで生成された cron 式の説明を提供するように Copilot に依頼できます。
Build a UTC cron expression for Monday through Friday at 12:30 AM Central European Standard Time and explain the different parts of the cron expression
Copilot では AI を利用しているため、想定外のことや間違いが起こる可能性があります。 詳細については、 Copilot の一般的な使用に関する FAQ を参照してください。
スケジュールされた実行ビュー
パイプラインのパイプラインの詳細ページのコンテキスト メニューから [スケジュールされた実行] を選択すると、今後のスケジュールされたビルドのプレビューを表示できます。
Important
スケジュールされた実行ビューには、現在の日付から 7 日以内に実行するようにスケジュールされたパイプラインのみが表示されます。 cron スケジュールの間隔が 7 日より長く、次の実行が現在の日付から 7 日後に開始されるようにスケジュールされている場合、スケジュールされた 実行 ビューには表示されません。
スケジュールされたトリガーを作成または更新したら、 スケジュールされた実行 ビューを使用してそれらを確認できます。
この例では、次のスケジュールのスケジュールされた実行を表示します。
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
[スケジュールされた実行] ウィンドウには、Azure DevOps ポータルの参照に使用したコンピューターで設定されたローカル タイム ゾーンに変換された時刻が表示されます。 次の使用例は、EST タイム ゾーンで撮影されたスクリーンショットを表示します。
注
実行中のパイプラインのスケジュールを更新した場合、現在実行中のパイプラインが完了するまで、 スケジュールされた実行 ビューは新しいスケジュールで更新されません。
コードの変更がない場合でも実行する
既定では、前回正常にスケジュールされた実行以降にコードの変更がない場合、パイプラインはスケジュールどおりに実行されません。 たとえば、パイプラインを毎日午後 9 時に実行するようにスケジュールしたとします。 平日は、さまざまな変更をコードにプッシュします。 パイプラインはスケジュールに従って実行されます。 週末には、コードに変更を加えることはありません。 金曜日にスケジュールされた実行以降にコードの変更がない場合、パイプラインは週末にスケジュールどおりに実行されません。
コードの変更がない場合でもパイプラインを強制的に実行するには、 always
キーワードを使用します。
schedules:
- cron: ...
...
always: true
YAML パイプラインでのスケジュールされた実行の数に関する制限
パイプラインを実行するようにスケジュールできる頻度には、一定の制限があります。 これらの制限は、Azure Pipelines リソース (特に Microsoft がホストするエージェント) の誤用を防ぐために設定されています。 制限は次のとおりです。
- パイプラインあたり 1 週間あたり約 1,000 回の実行
- パイプラインあたり 15 分あたり 10 回の実行
クラシック エディターからの移行
次の例では、クラシック エディターから YAML にスケジュールを移行する方法を示します。
例: 複数のタイム ゾーンでの Git リポジトリの夜間ビルド
この例では、クラシック エディターのスケジュールされたトリガーに 2 つのエントリがあり、次のビルドが生成されます。
毎週月曜日から金曜日の午前 3:00 (UTC + 5:30 タイム ゾーン)、
features/india/*
ブランチ フィルター条件を満たすブランチを構築する毎週月曜日から金曜日の午前 3:00 (UTC - 5:00 タイム ゾーン)、
features/nc/*
ブランチ フィルター条件を満たすブランチを構築する
同等の YAML スケジュールされたトリガーは次のとおりです。
schedules:
- cron: '30 21 * * Sun-Thu'
displayName: M-F 3:00 AM (UTC + 5:30) India daily build
branches:
include:
- /features/india/*
- cron: '0 8 * * Mon-Fri'
displayName: M-F 3:00 AM (UTC - 5) NC daily build
branches:
include:
- /features/nc/*
最初のスケジュールでは、 M- F 3:00 AM (UTC + 5:30) インドの毎日のビルドでは、cron 構文 (mm HH DD MM DW
) が 30 21 * * Sun-Thu
。
- 分と時間 -
30 21
-21:30 UTC
(9:30 PM UTC
) にマップされます。 クラシック エディターで指定されたタイム ゾーンは UTC + 5:30 であるため、YAML トリガーを指定するために目的の UTC 時刻に到達するには、目的のビルド時間である午前 3 時から 5 時間 30 分を減算する必要があります。 GitHub Copilot から AI の支援を受けて、cron 式を作成できます。 - 日と月はワイルドカードとして指定されます。このスケジュールでは、月の特定の日または特定の月にのみ実行するように指定されていないためです。
- 曜日 -
Sun-Thu
- タイムゾーン変換のため、ビルドが UTC + 5:30 インドのタイム ゾーンで午前 3 時に実行されるため、前日を UTC 時刻で開始することを指定する必要があります。 また、曜日を0-4
または0,1,2,3,4
として指定することもできます。
2 番目のスケジュールでは、 M- F 3:00 AM (UTC - 5) NC 日次ビルドでは、cron 構文が 0 8 * * Mon-Fri
。
- 分と時間 -
0 8
- これは8:00 AM UTC
にマップされます。 クラシック エディターで指定されたタイム ゾーンは UTC - 5:00 であるため、YAML トリガーに指定する目的の UTC 時刻に到着するには、目的のビルド時間の午前 3 時から 5 時間を追加する必要があります。 GitHub Copilot から AI の支援を受けて、cron 式を作成できます。 - 日と月はワイルドカードとして指定されます。このスケジュールでは、月の特定の日または特定の月にのみ実行するように指定されていないためです。
- 曜日 -
Mon-Fri
- タイムゾーンの変換は目的のスケジュールに対して週の複数の日にまたがるので、ここで変換を行う必要はありません。 また、曜日を1-5
または1,2,3,4,5
として指定することもできます。
Important
YAML スケジュールされたトリガーの UTC タイム ゾーンでは、夏時間は考慮されません。
ヒント
週の 3 文字の日を使用し、複数の日から日のスパンを必要とする場合、Sun は週の最初の日と見なす必要があります 。たとえば、EST の午前 0 時、木曜日から日曜日のスケジュールの場合、cron 構文は 0 5 * * Sun,Thu-Sat
。
例: 異なる周波数で夜間ビルドする
この例では、クラシック エディターのスケジュールされたトリガーに 2 つのエントリがあり、次のビルドが生成されます。
毎週月曜日から金曜日の午前 3 時 (UTC) に、
main
およびreleases/*
ブランチ フィルター条件を満たすブランチを構築します毎週日曜日の午前 3 時 (UTC) に、ソースまたはパイプラインが変更されていない場合でも、
releases/lastversion
ブランチを構築します
同等の YAML スケジュールされたトリガーは次のとおりです。
schedules:
- cron: '0 3 * * Mon-Fri'
displayName: M-F 3:00 AM (UTC) daily build
branches:
include:
- main
- /releases/*
- cron: '0 3 * * Sun'
displayName: Sunday 3:00 AM (UTC) weekly latest version build
branches:
include:
- /releases/lastversion
always: true
最初のスケジュールである M から F 3:00 AM (UTC) の毎日のビルドでは、cron 構文が 0 3 * * Mon-Fri
。
- 分と時間 -
0 3
- これは3:00 AM UTC
にマップされます。 クラシック エディターで指定されたタイム ゾーンは UTC であるため、タイム ゾーン変換を行う必要はありません。 - 日と月はワイルドカードとして指定されます。このスケジュールでは、月の特定の日または特定の月にのみ実行するように指定されていないためです。
- 曜日 -
Mon-Fri
- タイムゾーンの変換がないため、週の曜日はクラシック エディターのスケジュールから直接マップされます。 曜日を1,2,3,4,5
として指定することもできます。
2 番目のスケジュールである 日曜日の午前 3:00 (UTC) の毎週の最新バージョンビルドでは、cron 構文が 0 3 * * Sun
。
- 分と時間 -
0 3
- これは3:00 AM UTC
にマップされます。 クラシック エディターで指定されたタイム ゾーンは UTC であるため、タイム ゾーン変換を行う必要はありません。 - 日と月はワイルドカードとして指定されます。このスケジュールでは、月の特定の日または特定の月にのみ実行するように指定されていないためです。
- 曜日 -
Sun
- タイムゾーンの変換は目的のスケジュールに対して週の複数の日にまたがるので、ここで変換を行う必要はありません。 曜日を0
として指定することもできます。 - また、ソース コードが更新されたかどうかにかかわらず、このビルドの実行がスケジュールされているため、
always: true
も指定します。
FAQ
- 誰かがブランチに変更をプッシュしたときではなく、スケジュールに従ってパイプラインを実行する必要がある
- YAML ファイルでスケジュールを定義しました。 しかし、実行されませんでした。 どうされました。
- 私のYAMLスケジュールは正常に動作していました。 しかし、彼らは今作業を停止しました。 これをデバッグするにはどうすればよいですか?
- コードは変更されていませんが、スケジュールされたビルドがトリガーされます。 なぜでしょうか。
- [スケジュールされた実行] パネルに計画された実行が表示されます。 ただし、その時点では実行されません。 なぜでしょうか。
- YAML パイプラインで定義されたスケジュールは、一方のブランチでは機能しますが、もう一方のブランチでは機能しません。 これを修正するにはどうすればよいですか?
誰かがブランチに変更をプッシュしたときではなく、スケジュールに従ってパイプラインを実行する必要がある
誰かが変更をブランチにプッシュしたり、変更をメイン ブランチにマージしたりしない場合は、パイプラインで既定の CI トリガーと PR トリガーを明示的に無効にする必要があります。
既定の CI トリガーと PR トリガーを無効にするには、次のステートメントを YAML パイプラインに追加し、 UI トリガーで YAML パイプライン トリガーをオーバーライドしていないことを確認します。
trigger: none
pr: none
詳細については、 pr 定義 および トリガー定義を参照してください。
YAML ファイルでスケジュールを定義しました。 しかし、実行されませんでした。 どうされました。
Azure Pipelines がパイプライン用にスケジュールした次のいくつかの実行を確認します。 これらの実行を見つけるには、パイプラインで [スケジュールされた実行 ] アクションを選択します。 この一覧はフィルター処理され、今後数日間の数回の実行のみが表示されます。 これが期待を満たさない場合は、cron スケジュールを誤って入力したか、正しいブランチでスケジュールが定義されていない可能性があります。 スケジュールを構成する方法については、上記のトピックを参照してください。 cron 構文を再評価します。 cron スケジュールのすべての時刻は UTC です。
YAML ファイルに小さな変更を加え、その更新をリポジトリにプッシュします。 以前に YAML ファイルからスケジュールを読み取る場合に問題が発生した場合は、ここで修正する必要があります。
UI でスケジュールが定義されている場合、YAML スケジュールは受け入れられません。 パイプラインのエディターに移動し、[トリガー] を選択して、UI スケジュールがないことを確認 します。
パイプラインに対してスケジュールできる実行の数には制限があります。 制限の詳細については、こちらをご 覧ください。
コードに変更がない場合、Azure Pipelines は新しい実行を開始しない可能性があります。 この動作を オーバーライド する方法について説明します。
私のYAMLスケジュールは正常に動作していました。 しかし、彼らは今作業を停止しました。 これをデバッグするにはどうすればよいですか?
always:true
を指定しなかった場合、コードに対して何らかの更新が行われない限り、パイプラインはスケジュールされません。 コードが変更されたかどうか、および スケジュールの構成方法を確認します。パイプラインをスケジュールできる回数には 制限 があります。 これらの制限を超えているかどうかを確認します。
他のユーザーが UI でより多くのスケジュールを有効にしているかどうかを確認します。 パイプラインのエディターを開き、[トリガー] を選択 します。 UI でスケジュールが定義されている場合、YAML スケジュールは受け入れられません。
パイプラインが一時停止または無効になっているかどうかを確認します。 パイプラインの [設定] を 選択します。
Azure Pipelines がパイプライン用にスケジュールした次のいくつかの実行を確認します。 これらの実行を見つけるには、パイプラインで [スケジュールされた実行 ] アクションを選択します。 予期したスケジュールが表示されない場合は、YAML ファイルに小さな変更を加え、リポジトリに更新をプッシュします。 これにより、スケジュールが再同期されます。
GitHub を使用してコードを格納する場合、新しい実行を開始しようとしたときに、Azure Pipelines が GitHub によって調整されている可能性があります。 新しい実行を手動で開始できるかどうかを確認します。
コードは変更されていませんが、スケジュールされたビルドがトリガーされます。 なぜでしょうか。
コードの変更がない場合でも、スケジュールされたビルドを 常に 実行するオプションを有効にしている可能性があります。 YAML ファイルを使用する場合は、YAML ファイル内のスケジュールの構文を確認します。 クラシック パイプラインを使用する場合は、スケジュールされたトリガーでこのオプションをオンにしたかどうかを確認します。
ビルド パイプラインまたはパイプラインのプロパティを更新した可能性があります。 これにより、ソース コードを更新していない場合でも、新しい実行がスケジュールされます。 クラシック エディターを使用して、パイプラインの変更 履歴 を確認します。
リポジトリへの接続に使用するサービス接続が更新されている可能性があります。 これにより、ソース コードを更新していない場合でも、新しい実行がスケジュールされます。
Azure Pipelines は、まずコードに更新があるかどうかを確認します。 Azure Pipelines がリポジトリに到達できない場合、またはこの情報を取得できない場合は、 情報実行が作成されます。 これは、Azure Pipelines がリポジトリに到達できないことを知らせるダミー ビルドです。
パイプラインに完全に成功したビルドがない可能性があります。 新しいビルドをスケジュールするかどうかを決定するために、Azure DevOps は、完全に正常にスケジュールされた最後のビルドを検索します。 見つからない場合は、新しいスケジュールされたビルドがトリガーされます。 部分的に成功したスケジュールされたビルドは成功とは見なされないため、パイプラインに部分的に成功したビルドしかない場合、コードが変更されていない場合でも、Azure DevOps によってスケジュールされたビルドがトリガーされます。
[スケジュールされた実行] パネルに計画された実行が表示されます。 ただし、その時点では実行されません。 なぜでしょうか。
- [ スケジュールされた実行] パネルには、考えられるすべてのスケジュールが表示されます。 ただし、コードを実際に更新しない限り、実際には実行されない場合があります。 スケジュールを常に実行するように強制するには、YAML パイプラインで always プロパティを設定していることを確認するか、クラシック パイプラインで常に実行するオプションをオンにします。
YAML パイプラインで定義されたスケジュールは、一方のブランチでは機能しますが、もう一方のブランチでは機能しません。 これを修正するにはどうすればよいですか?
スケジュールは YAML ファイルで定義され、これらのファイルはブランチに関連付けられます。 パイプラインを特定のブランチに対してスケジュールする場合 (たとえば、 features/X
)、 そのブランチの YAML ファイルに cron スケジュールが定義されていること、およびスケジュールに適切なブランチインクルードがあることを確認します。 この例では、 features/X
ブランチの YAML ファイルに次の schedule
が必要です。
schedules:
- cron: '0 12 * * 0' # replace with your schedule
branches:
include:
- features/X
詳細については、 スケジュールされたトリガーの分岐に関する考慮事項を参照してください。