次の方法で共有


パイプラインのスケジュールを構成する

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 のスケジュールされたパイプラインには、次の制約があります。

スケジュールされたトリガーの分岐に関する考慮事項

スケジュールされたトリガーは、次のイベントが発生したときに分岐に対して評価されます。

  • パイプラインが作成されます。
  • パイプラインの 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-featurebranches リストに追加され、この変更が 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 という名前のブランチが作成され、releasemain ブランチの 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

releasemainブランチのブランチ フィルターに追加されましたが、release ブランチのブランチ フィルターには追加されていないためrelease ブランチはそのスケジュールに基づいて構築されません。 リリース ブランチの YAML ファイル内のブランチ フィルターに releaseブランチ が追加された場合にのみ、スケジュールされたビルドがスケジューラに追加されます。

スケジュールされたトリガーのバッチに関する考慮事項

batch プロパティは、Azure DevOps Server 2022.1 以降で使用できます。

batch プロパティは、以前にスケジュールされた実行が進行中の場合にパイプラインを実行するかどうかを構成します。 batchtrueされている場合、前のパイプラインの実行がまだ進行中の場合、スケジュールにより新しいパイプラインの実行は開始されません。 既定値は falseです。

batch プロパティは、always プロパティの設定の影響を受けます。 alwaystrueされると、batchtrueされ、実行中の実行がある場合でも、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,Fri0 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/* ブランチ フィルター条件を満たすブランチを構築する

    スケジュールされたトリガー UTC + 5:30 タイム ゾーン

  • 毎週月曜日から金曜日の午前 3:00 (UTC - 5:00 タイム ゾーン)、 features/nc/* ブランチ フィルター条件を満たすブランチを構築する

    スケジュールされたトリガー UTC -5:00 タイム ゾーン

同等の 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/* ブランチ フィルター条件を満たすブランチを構築します

    スケジュールされたトリガーの頻度 1。

  • 毎週日曜日の午前 3 時 (UTC) に、ソースまたはパイプラインが変更されていない場合でも、 releases/lastversion ブランチを構築します

    スケジュールされたトリガーの頻度 2。

同等の 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

誰かがブランチに変更をプッシュしたときではなく、スケジュールに従ってパイプラインを実行する必要がある

誰かが変更をブランチにプッシュしたり、変更をメイン ブランチにマージしたりしない場合は、パイプラインで既定の 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  

詳細については、 スケジュールされたトリガーの分岐に関する考慮事項を参照してください。