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

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure Pipelines には、パイプラインの開始方法を構成するために、いくつかの種類のトリガーが用意されています。

  • スケジュールされたトリガーにより、夜間ビルドなどのスケジュールに基づくパイプラインが開始されます。 この記事では、スケジュールされたトリガーを使って、スケジュールに基づくパイプラインを実行する方法について説明します。
  • イベント ベースのトリガーは、pull request の作成やブランチへのプッシュなどのイベントに応答してパイプラインを開始します。 イベント ベースのトリガーの使用については、Azure Pipelines でのトリガーに関する記事をご覧ください。

スケジュールされたトリガーとイベント ベースのトリガーをパイプラインで組み合わせることができ、たとえば、プッシュが行われるたび (CI トリガー)、pull request が行われたとき (PR トリガー)、および夜間ビルドのとき (スケジュールされたトリガー) に、ビルドを検証できます。 イベント ベースのトリガーには応答せず、スケジュールのみに基づいてパイプラインを構築する場合は、パイプラインで他のトリガーが有効になっていないことを確認してください。 たとえば、GitHub リポジトリの YAML パイプラインでは、CI トリガーと PR トリガーが既定で有効になっています。 既定のトリガーを無効にする方法については、Azure Pipelines でのトリガーに関する記事で、リポジトリの種類についてのセクションをご覧ください。

スケジュールされたトリガー

重要

パイプライン設定 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 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 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 です。
  • branches に対して include 句を指定せずに exclude 句を指定すると、include 句で * を指定した場合と同じなります。
  • スケジュールを指定するときは、パイプライン変数を使用できません。
  • YAML ファイルでテンプレートを使用する場合は、テンプレート ファイルではなくメイン YAML ファイルでスケジュールを指定する必要があります。

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

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

  • パイプラインが作成されたとき。
  • プッシュから、またはパイプライン エディターで編集することによって、パイプラインの YAML ファイルが更新されたとき。
  • パイプラインの YAML ファイル パスが、異なる YAML ファイルを参照するように更新されたとき。 この変更では既定のブランチのみが更新されるため、更新された YAML ファイルでの既定のブランチのスケジュールのみが取得されます。 その後、他のブランチが既定のブランチをマージした場合 (例: git pull origin main)、新しく参照されるようになった YAML ファイルからのスケジュールされたトリガーが、そのブランチに対して評価されます。
  • 新しいブランチが作成されたとき。

ブランチでこれらのイベントのいずれかが発生すると、そのブランチの YAML ファイルに含まれるスケジュールされたトリガーのブランチ フィルターとそのブランチが一致する場合、そのブランチに対するスケジュールされた実行が追加されます。

重要

ブランチのスケジュールされた実行は、その特定のブランチの YAML ファイルでのスケジュールされたトリガーに関するブランチ フィルターと、ブランチが一致する場合にのみ追加されます。

たとえば、次のスケジュールでパイプラインが作成され、このバージョンの YAML ファイルが main ブランチにチェックインされます。 このスケジュールでは、main ブランチが毎日ビルドされます。

# YAML file in the main branch
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main

次に、main に基づいて new-feature という名前の新しいブランチが作成されます。 新しいブランチの 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

ここで、release という名前のブランチが main に基づいて作成された後、main ブランチの YAML ファイルのブランチ フィルターには release が追加されますが、新しく作成された 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

main ブランチのブランチ フィルターには release が追加されましたが、release ブランチのブランチ フィルターには追加されなかったため、release ブランチはそのスケジュールではビルドされません。 リリース ブランチの YAML ファイルのブランチ フィルターに release ブランチが追加された場合にのみ、スケジュールされたビルドがスケジューラに追加されます。

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

Note

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

batch プロパティは、以前にスケジュールされた実行が進行中の場合にパイプラインを実行するかどうかを構成します。デフォルトは false です。 これは、パイプライン リポジトリのバージョンに関係なく適用されます。

alwaysbatch の相互作用についての説明を以下の表に示します。

常時 Batch 動作
false false パイプラインは、最後に成功したスケジュールされたパイプライン実行に関して変更がある場合にのみ実行されます。
false true パイプラインは、最後に成功したスケジュールされたパイプライン実行に関して変更があり、進行中のスケジュールされたパイプライン実行がない場合にのみ実行されます。
true false パイプラインは、cron スケジュールに従って実行されます。
true true パイプラインは、cron スケジュールに従って実行されます。

重要

alwaystrue の場合、パイプラインは、たとえ batchtrue であっても cron スケジュールに従って実行されます。

Build.CronSchedule.DisplayName 変数

Note

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 の例を参照してください。

スケジュールされたビルドは、Azure DevOps Server 2019 の YAML 構文ではサポートされていません。 YAML ビルド パイプラインを作成した後で、パイプラインの設定を使って、スケジュールされたトリガーを指定できます。

次の例では、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

1 つ目のスケジュール Daily midnight build では、毎日午前 0 時にパイプラインが実行されますが、main とすべての releases/* ブランチについて、最後の正常なスケジュールされた実行以降にコードが変更された場合だけであり、releases/ancient/* の下のブランチは除外されます。

2 つ目のスケジュール Weekly Sunday build では、すべての releases/* ブランチについて、コードが前回の実行以降に変更されているかどうかに関係なく、日曜日の正午にパイプラインが実行されます。

注意

Cron スケジュールのタイム ゾーンは UTC であるため、これらの例の午前 0 時のビルドと正午のビルドは、UTC での午前 0 時と正午です。

その他の例については、「クラシック エディターからの移行」をご覧ください。

スケジュールされたビルドは、Azure DevOps Server 2019 の YAML 構文ではサポートされていません。 YAML ビルド パイプラインを作成した後で、パイプラインの設定を使って、スケジュールされたトリガーを指定できます。

Cron 構文

Azure Pipelines のスケジュールされたトリガーの各 Cron 式は、次の順序で 5 つのエントリを含むスペース区切りの式です。 式は単一引用符 ' で囲まれています。

mm HH DD MM DW
 \  \  \  \  \__ Days of week
  \  \  \  \____ Months
   \  \  \______ Days
    \  \________ Hours
     \__________ Minutes
フィールド 指定可能な値
0 - 59
時間 0 - 23
日間 1 - 31
Months 1 - 12、完全な英語名、英語名の最初の 3 文字
曜日 0 - 6 (日曜日始まり)、完全な英語名、英語名の最初の 3 文字

値は、次の形式で指定できます。

Format 説明
ワイルドカード * このフィールドのすべての値と一致します
単一値 5 このフィールドの 1 つの値を指定します
カンマ区切り 3,5,6 このフィールドの複数の値を指定します。 複数の形式を組み合わせることができます (例: 1,3-6)
範囲 1-3 このフィールドの値の両端を含む範囲
頻度 */4 または 1-5/2 このフィールドに一致する間隔 (4 番目の値ごと、範囲 1 - 5 でステップ間隔 2、など)
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 式」をご覧ください。

スケジュールされたビルドは、Azure DevOps Server 2019 の YAML 構文ではサポートされていません。 YAML ビルド パイプラインを作成した後で、パイプラインの設定を使って、スケジュールされたトリガーを指定できます。

スケジュールされた実行ビュー

パイプラインのパイプライン詳細ページのコンテキスト メニューから [スケジュールされた実行] を選ぶことで、今後のスケジュールされたビルドのプレビューを表示できます。

重要

スケジュールされた実行ビューには、現在の日付から 7 日以内に実行されるようにスケジュールされたパイプラインのみが表示されます。 cron スケジュールの間隔が 7 日を超えていて、次の実行が現在の日付から 7 日後に開始されるようにスケジュールされている場合、スケジュールされた実行ビューには表示されません。

[スケジュールされた実行] メニュー

スケジュールされたトリガーを作成または更新したら、このビューを使ってトリガーを確認できます。

スケジュールされた実行

この例では、次のスケジュールのスケジュールされた実行を表示します。

schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main

[スケジュールされた実行] ウィンドウには、Azure DevOps ポータルの参照に使われるコンピューターで設定されているローカル タイム ゾーンに変換された日時が表示されます。 この例で示すスクリーンショットは、EST タイム ゾーンで取得されたものです。

スケジュールされたビルドは、Azure DevOps Server 2019 の YAML 構文ではサポートされていません。 YAML ビルド パイプラインを作成した後で、パイプラインの設定を使って、スケジュールされたトリガーを指定できます。

コードの変更がない場合でも実行する

既定では、最後の正常なスケジュールされた実行以降にコードが変更されていない場合、パイプラインはスケジュールどおりに実行されません。 たとえば、毎晩午後 9 時に実行するようにパイプラインをスケジュールしたとします。 平日は、さまざまな変更をコードにプッシュします。 パイプラインはスケジュールに従って実行されます。 週末は、コードを変更しません。 金曜のスケジュールされた実行以降にコードの変更がない場合、週末にはパイプラインはスケジュールのとおりに実行されません。

コードの変更がない場合でもパイプラインを強制的に実行するには、always キーワードを使用できます。

schedules:
- cron: ...
  ...
  always: true

このバージョンの Azure DevOps Server の YAML 構文では、スケジュールされたビルドはサポートされていません。 YAML ビルド パイプラインを作成した後で、パイプラインの設定を使って、スケジュールされたトリガーを指定できます。

YAML パイプラインでのスケジュールされた実行の回数に関する制限

パイプラインの実行を事前に設定できる頻度には、一定の制限があります。 これらの制限は、Azure Pipelines リソース (特に Microsoft がホストするエージェント) の誤用を防止するために設定されています。 次の制限があります。

  • パイプラインごとに 1 週間あたり約 1,000 回の実行
  • パイプラインごとに 15 分あたり 10 回の実行

クラシック エディターからの移行

次の例では、クラシック エディターから YAML にスケジュールを移行する方法を示します。

例: 複数のタイム ゾーンでの Git リポジトリの夜間ビルド

この例では、クラシック エディターのスケジュールされたトリガーに 2 つのエントリがあり、次のビルドが生成されます。

  • 毎週月曜日から金曜日の午前 3 時 (UTC + 5:30 タイム ゾーン) に、features/india/* ブランチ フィルター条件を満たすブランチをビルドします

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

  • 毎週月曜日から金曜日の午前 3 時 (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) India daily build では、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 分を引く必要があります。
  • このスケジュールでは、特定の日または特定の月にのみ実行するように指定されていないため、日と月はワイルドカードで指定されています。
  • 曜日 - Sun-Thu - タイム ゾーンの変換のため、ビルドをインドのタイム ゾーン (UTC + 5:30) で午前 3 時に実行するには、UTC 時刻で前日に開始するように指定する必要があります。 曜日は、0-4 または 0,1,2,3,4 と指定することもできます。

2 番目のスケジュール M-F 3:00 AM (UTC - 5) NC daily build では、Cron 構文は 0 8 * * Mon-Fri です。

  • 分と時 - 0 8 - これは 8:00 AM UTC にマップされます。 クラシック エディターで指定されたタイム ゾーンは UTC - 5:00 であるため、YAML トリガーに指定する目的の UTC 時刻を得るには、目的のビルド時刻である午前 3 時に 5 時間を足す必要があります。
  • このスケジュールでは、特定の日または特定の月にのみ実行するように指定されていないため、日と月はワイルドカードで指定されています。
  • 曜日 - Mon-Fri - タイム ゾーンの変換は目的のスケジュールで複数の曜日にまたがっていないので、ここでは変換を行う必要はありません。 曜日は、1-5 または 1,2,3,4,5 と指定することもできます。

重要

YAML のスケジュールされたトリガーの UTC タイム ゾーンでは、夏時間は考慮されません。

ヒント

3 文字の曜日を使い、日曜日から複数の日にまたがる場合は、Sun を最初の曜日と見なす必要があります。たとえば、木曜日から日曜日までの午前 0 時 EST のスケジュールの場合、Cron 構文は 0 5 * * Sun,Thu-Sat となります。

例: 異なる頻度での夜間ビルド

この例では、クラシック エディターのスケジュールされたトリガーに 2 つのエントリがあり、次のビルドが生成されます。

  • 毎週月曜日から金曜日の午前 3 時 (UTC) に、mainreleases/* のブランチ フィルター条件を満たすブランチをビルドします

    スケジュールされたトリガーの頻度 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) daily build では、Cron 構文は 0 3 * * Mon-Fri です。

  • 分と時 - 0 3 - これは 3:00 AM UTC にマップされます。 クラシック エディターで指定されたタイム ゾーンは UTC であるため、タイム ゾーンの変換を行う必要はありません。
  • このスケジュールでは、特定の日または特定の月にのみ実行するように指定されていないため、日と月はワイルドカードで指定されています。
  • 曜日 - Mon-Fri - タイム ゾーンの変換がないため、曜日はクラシック エディターのスケジュールから直接マップされます。 曜日は、1,2,3,4,5 と指定することもできます。

2 番目のスケジュール Sunday 3:00 AM (UTC) weekly latest version build の Cron 構文は 0 3 * * Sun です。

  • 分と時 - 0 3 - これは 3:00 AM UTC にマップされます。 クラシック エディターで指定されたタイム ゾーンは UTC であるため、タイム ゾーンの変換を行う必要はありません。
  • このスケジュールでは、特定の日または特定の月にのみ実行するように指定されていないため、日と月はワイルドカードで指定されています。
  • 曜日 - Sun - タイム ゾーンの変換は目的のスケジュールで複数の曜日にまたがっていないので、ここでは変換を行う必要はありません。 曜日は、0 と指定することもできます。
  • また、このビルドはソース コードが更新されたかどうかに関係なく実行するようにスケジュールされているため、always: true も指定します。

よく寄せられる質問

誰かが変更をブランチにプッシュしたときではなく、スケジュールでのみパイプラインを実行したい

誰かが変更をブランチにプッシュしたり、変更をメイン ブランチにマージしたりしたときではなく、スケジュールでのみパイプラインを実行したい場合は、パイプラインで既定の 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 を使っている場合は、GitHub が新しい実行を開始しようとして Azure Pipelines を調整している可能性があります。 新しい実行を手動で開始できるかどうかを調べます。

コードは変わっていないのに、スケジュールされたビルドがトリガーされます。 なぜですか?

  • コードが変更されていない場合でもスケジュールされたビルドを常に実行するオプションを、有効にしている可能性があります。 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  

詳しくは、「スケジュールされたトリガーに関するブランチの考慮事項」をご覧ください。