次の方法で共有


実行番号とビルド番号

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

この記事では、Azure Pipelines のビルド番号と実行番号の作成方法と、それらをパイプラインでカスタマイズする方法について説明します。

実行番号は、パイプラインまたはビルドの特定の実行を識別するために使用されます。 ビルド番号は、実行番号と同義です。

YAML パイプラインでビルド名を指定しない場合、またはクラシック パイプラインで Name フィールドを空白のままにした場合、実行はその名前として一意の整数を取得します。 チームにとって意味のある、より有用な名前を実行に付けることができます。 ビルド名には、トークン、変数、アンダースコアの文字を組み合わせて使用できます。

YAML パイプラインでは、ビルド名プロパティは name 呼び出され、パイプラインのルート レベルである必要があります。 YAML ファイルのルート レベルで指定された項目は、パイプライン プロパティです。

Note

name プロパティは、テンプレート ファイルでは機能しません。

次のコード例では、 project_def_master_20240828.1 などのカスタマイズされたビルド番号を出力します。

name: $(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:r)

steps:
  - script: echo '$(Build.BuildNumber)'

実行数

Azure Pipelines の実行番号の既定値は $(Date:yyyyMMdd).$(Rev:r)です。 $(Rev:r) は、ビルド番号フィールドでのみ機能する特殊な変数形式です。 ビルドが完了すると、ビルド番号に何も変更されていない場合、 Rev 整数値は 1 ずつ増加します。

$(Rev:r) は、ビルド番号の他の部分が変更されたときに 1 にリセットされます。 たとえば、ビルド番号の形式を $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r) として構成すると、日付が変更されるとビルド番号がリセットされます。

前のビルド番号が MyBuild_20230621.1された場合、その日の次のビルド番号が MyBuild_20230621.2。 次の日の最初のビルド番号は MyBuild_20230622.1

$(Rev:r) また、ビルド番号を変更してバージョンの変更を示す場合は、 1 にリセットされます。 たとえば、ビルド形式が 1.0.$(Rev:r) で、最後のビルド番号が 1.0.3された場合、ビルド番号を 1.1.$(Rev:r)に変更すると、次のビルド番号が 1.1.1

ビルド実行では、次のデータを検討してください。

  • プロジェクト名: Fabrikam
  • パイプライン名: CIBuild
  • [ブランチ]: main
  • ビルド ID/実行 ID: 752
  • 日付: 2024 年 5 月 6 日
  • 時間: 9:07:03 PM
  • 1 回の実行は、今日の早い段階で完了しました。

次のビルド番号形式を指定した場合、2024 年 5 月 6 日の 2 回目の実行の名前は Fabrikam_CIBuild_main_20240506.2

$(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:.r)

トークン

次の表は、前の例に基づいて、各トークンがどのように解決されるかを示しています。 これらのトークンは、実行番号の定義にのみ使用できます。 パイプライン内の他の場所では機能しません。

Token 値の例 メモ
$(Build.DefinitionName) CIBuild パイプライン名に無効な文字や空白文字を含めることはできません。
$(Build.BuildId) 752 $(Build.BuildId) は、Azure DevOps 組織全体で一意である、内部の不変 ID (実行 ID とも呼ばれます) です。
$(DayOfMonth) 6
$(DayOfYear) 126
$(Hours) 21
$(Minutes) 7
$(Month) 5
$(Rev:r) 2 3 回目の毎日の実行は 3などです。 $(Rev:r)を使用して、完了したすべてのビルドに一意の名前を付けます。
$(Date:yyyyMMdd) 20240506 $(Date:MMddyy)など、他の日付形式を指定できます。
$(Seconds) 3
$(SourceBranchName) メイン
$(TeamProject) Fabrikam
$(Year:yy) 24
$(Year:yyyy) 2024

重要

実行番号にプレフィックス 0 を表示する場合は、Rev トークンにさらにr文字を追加できます。 たとえば、Rev番号を0102で始める場合は、$(Rev:rr)を指定します。

バージョン番号付けスキームの一部としてゼロ埋め込み Rev を使用する場合は、一部のパイプライン タスクまたは NuGet パッケージなどの一般的なツールで、先頭のゼロを削除することに注意してください。 この動作により、生成される成果物のバージョン番号の不一致が発生します。

式を使用してビルド番号を設定する場合は、式の評価時に値が設定されないため、一部のトークンを使用できません。 これらのトークンには、$(Build.BuildId)$(Build.BuildURL)$(Build.BuildNumber) が含まれます。

変数

ビルド番号には、ユーザー定義変数と定義済み変数を使用できます。 たとえば、 My.Variableを定義する場合は、次の数値形式を指定できます。

$(Build.DefinitionName)_$(Build.DefinitionVersion)_$(Build.RequestedFor)_$(Build.BuildId)_$(My.Variable)

前の例では、最初の 4 つの変数が定義済みです。 ユーザー変数を定義する方法については、「 パイプラインで変数を設定するを参照してください。

よく寄せられる質問

実行番号の大きさと、どのような文字を使用できますか?

実行番号は最大 255 文字です。 文字 "/:<>'|?@、または *を使用することはできません。また、 .で番号を終了することはできません。

ビルド番号の時間値は、どのタイム ゾーンで表されますか?

タイム ゾーンは UTC です。

タイム ゾーンは、アプリケーション層サーバーを実行するコンピューターのオペレーティング システムのタイム ゾーンと同じです。

条件を使用してビルド番号を動的に設定するにはどうすればよいですか?

変数は、実行番号の一部として使用できます。 次の例では、変数 why が実行番号の一部として使用され、その値は Build.Reasonに応じて変化します。

variables:
  - name: why
    ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
      value: pr
    ${{ elseif eq(variables['Build.Reason'], 'Manual' ) }}:
      value: manual
    ${{ elseif eq(variables['Build.Reason'], 'IndividualCI' ) }}:
      value: indivci
    ${{ else }}:
      value: other

name: $(TeamProject)_$(SourceBranchName)_$(why)_$(Date:yyyyMMdd).$(Rev:.r)

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: echo '$(Build.BuildNumber)'

スクリプト内で実行番号変数を参照するにはどうすればよいですか?

実行番号を含む新しい変数を定義するか、実行番号を直接呼び出すことができます。 次の例では、 $(MyRunNumber) は実行番号を含む新しい変数です。 MyRunNumberまたは$(Build.BuildNumber)を使用して、実行番号変数を呼び出すことができます。

# Set MyRunNumber
variables: 
  MyRunNumber: '1.0.0-CI+$(Build.BuildNumber)'

steps:
- script: echo $(MyRunNumber)
- script: echo $(Build.BuildNumber)

変数の定義