次の方法で共有


実行番号とビルド番号

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

一意の実行番号またはビルド番号は、Azure Pipelines パイプラインまたはビルドの各実行を識別します。 この記事では、この数値の構造と、チームにとってより有用または意味のあるものになるようにカスタマイズする方法について説明します。

YAML パイプラインでビルド名を指定しない場合、またはクラシック パイプラインで [名前 ] または [ ビルド番号の形式 ] フィールドを空白のままにした場合、各実行は名前として一意の整数を取得します。 ビルド名には、他の文字、トークン、変数を使用できます。 名前付けパターン、特殊なトークン、定義済み変数またはユーザー定義変数を使用して、実行番号とビルド番号をカスタマイズできます。

ビルド番号の構成

クラシック パイプラインでは、パイプライン定義の [オプション]ビルド番号の形式をカスタマイズできます。 YAML パイプラインでは、YAML ファイルのname レベルで プロパティを使用して、実行番号の形式をカスタマイズできます。 name プロパティは、テンプレートまたはステージではサポートされていません。

次の例では、 MyProject_MyBuild_main_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 になります

次のビルド番号形式では、 2024 年 5 月 6 日の 2 回目の実行の名前 Fabrikam_CIBuild_main_20240506.2 が生成されます。

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

ビルド番号トークンは次のように解決されます。

  • プロジェクト名: Fabrikam
  • ビルド定義名: CIBuild
  • ブランチ: main
  • 日付: 2024 年 5 月 6 日
  • その日の実行番号: 2

番号トークンを実行する

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

トークン 値の例 メモ
$(Build.DefinitionName) CIBuild ビルド名。無効な文字や空白文字を含めることはできません。
$(Build.BuildId) 752 Azure DevOps 組織で一意である、内部の不変 ID ( Run IDとも呼ばれます)。
$(Date:yyyyMMdd) 20240506 日付形式。 $(Date:MMddyy)など、他の日付形式を指定することもできます。
$(DayOfMonth) 6
$(DayOfYear) 126
$(Hours) 21 (二十一)
$(Minutes) 7
$(Month) 5
$(Rev:r) 2 その日の実行数における順位。 $(Rev:r) を使用して、完了した各ビルドに一意の名前が付いているかを確認します。
$(Seconds) 3
$(SourceBranchName) メイン
$(TeamProject) Fabrikam
$(Year:yy) 24
$(Year:yyyy) 2024

重要

実行番号に、0 のプレフィックスを表示する場合は、より多くの r 文字を Rev トークンに追加できます。 たとえば、$(Rev:rr) 番号をの 1 桁目を Rev01などにする場合は、02 を指定します。

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

実行番号内の式

式を使用して実行番号を設定する場合、パイプライン式の評価時に値がまだ設定されていないため、 $(Build.BuildId)$(Build.BuildUri)、または $(Build.BuildNumber) トークンを使用することはできません。

実行番号の変数

実行番号には、定義済み変数とユーザー定義変数の両方を使用できます。 たとえば、 My.Variableを定義する場合は、次の数値書式を指定できます。 最初の 4 つの変数は定義済みです。

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

定義済み変数の詳細については、「 定義済み変数の使用」を参照してください。 ユーザー変数を定義する方法については、変数の 定義を参照してください。

FAQ

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

実行番号には、最大 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)'

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

スクリプト内の $(Build.BuildNumber) として実行番号を直接参照することも、数値を含むカスタム変数を作成することもできます。 例えば次が挙げられます。

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

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