実行番号またはビルド番号を構成する

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

パイプラインの実行の番号付け方法をカスタマイズできます。 実行番号の既定値は $(Date:yyyyMMdd).$(Rev:r) です。

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

$(Rev:r) は、ビルド番号の一部を変更するとリセットされます。 たとえば、ビルド番号の形式を $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r) として 構成した場合、翌日に日付が変更されるとビルド番号がリセットされます。 ビルド番号が MyBuild_20230621.1 の場合、その日の次のビルド番号は MyBuild_20230621.2 です。 翌日、ビルド番号は MyBuild_20230622.1 です。

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

YAML では、このプロパティには name という名前が付けられ、パイプラインのルート レベルである必要があります。

Note

YAML ファイルのルート レベルで指定された項目は、パイプライン プロパティです。

指定しない場合、実行には名前として一意の整数が指定されます。 チームにとって意味のある、使いやすい名前を実行に付けることができます。 トークン、変数、アンダースコア文字の組み合わせを使用できます。 name プロパティは、テンプレート ファイルでは機能しません。

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

steps:
  - script: echo '$(Build.BuildNumber)' # outputs customized build number like project_def_master_20200828.1

TFS では、YAML ビルドは使用できません。

その時点で、実行が開始されます。

  • プロジェクト名: Fabrikam

  • パイプライン名: CIBuild

  • [ブランチ]: main

  • ビルド ID/実行 ID: 752

  • 日付: 2019 年 5 月 5 日

  • 時刻 : 午後 9:07:03

  • 1 回の実行は、今日の早い段階で完了しました。

このビルド番号の形式を指定する場合:

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

次に、この日の 2 回目の実行には Fabrikam_CIBuild_main_20190505.2 という名前が付けられます。

トークン

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

トークン 置換値の例
$(Build.DefinitionName) CIBuild

注: パイプライン名に無効な文字または空白文字を含めてはなりません。
$(Build.BuildId) 752

$(Build.BuildId) は、実行 ID とも呼ばれる内部不変 ID です。 組織全体で一意です。
$(DayOfMonth) 5
$(DayOfYear) 217
$(Hours) 21
$(Minutes) 7
$(Month) 8
$(Rev:r) 2 (3 回目の実行は 3 など)

$(Rev:r) は、完了したすべてのビルドの名前を一意にするために使用します。 ビルド番号が他に何も変更されていない場合、ビルドが開始されると、Rev 整数値は 1 ずつ増加します。

数値にプレフィックス 0 を表示する場合は、さらに 'r' 文字を追加できます。 たとえば、Rev 番号を 01、02 で始める場合は、$(Rev:rr) を指定します。 バージョン番号付けスキームの一部として埋め込まれた Rev をゼロで埋め込む場合は、NuGet パッケージなどの一部のパイプライン タスクまたは一般的なツールで、先頭のゼロが削除され、生成される成果物のバージョン番号が一致しなくなることに注意してください。
$(Date:yyyyMMdd) 20090824

$(Date:MMddyy) などの他の日付形式を指定できます。
$(Seconds) 3
$(SourceBranchName) メイン
$(TeamProject) Fabrikam
$(Year:yy) 09
$(Year:yyyy) 2009

変数

また、数値に "All" のスコープを持つユーザー定義変数と定義済み変数を使用することもできます。 たとえば、My.Variable を定義した場合は、次の数値形式を指定できます。

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

最初の 4 つの変数は定義済みです。 My.Variable は、[変数] タブでユーザーによって定義されます。

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

よく寄せられる質問

実行番号の大きさと使用できる文字は何ですか?

実行は 255 文字まで指定できます。 使用できない文字には、"/:<>'|?@* などがあります。 . で終了することはできません。

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

タイム ゾーンは UTC です。

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

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

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

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


steps:
- script: echo $(MyRunNumber) # display MyRunNumber
- script: echo $(Build.BuildNumber) #display Run Number

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

変数は、実行番号の一部として使用できます。 この例では、変数 whyBuild.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)' ## output run number