Номера запуска и сборки

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

В этой статье объясняется, как создаются номера сборки и номера выполнения Azure Pipelines и как их можно настроить в конвейерах.

Номер выполнения используется для определения определенного выполнения конвейера или сборки. Номер сборки синонимом номера выполнения.

Если имя сборки не указано в конвейерах YAML или поле "Имя " пусто в классических конвейерах, выполнение получает уникальное целое число в качестве его имени. Вы можете предоставить более полезные имена, значимые для вашей команды. В именах сборки можно использовать сочетание маркеров, переменных и символов подчеркивания.

В конвейерах YAML вызывается name свойство имени сборки и должно находиться на корневом уровне конвейера. Элементы, указанные на корневом уровне файла YAML, являются свойствами конвейера .

Примечание.

Свойство name не работает в файлах шаблонов.

В следующем примере кода выводится настроенный номер сборки, например project_def_master_202408281.

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

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

Запуск номер

Значением по умолчанию для номера выполнения в Azure Pipelines является $(Date:yyyyMMdd).$(Rev:r). $(Rev:r) — это специальный формат переменной, который работает только в поле номера сборки. Когда сборка завершается, если в номере сборки ничего другого не изменилось, Rev целочисленное значение увеличивается на один.

$(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
  • Branch (Ветвь): main.
  • Идентификатор сборки и выполнения: 752
  • Дата: 6 мая 2024 г.
  • Время: 9:07:03 вечера
  • Один запуск завершился ранее сегодня.

Если указать следующий формат номера сборки, второй запуск 6 мая 2024 г. называется Fabrikam_CIBuild_main_20240506.2.

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

Токены

В следующей таблице показано, как разрешается каждый маркер на основе предыдущего примера. Эти маркеры можно использовать только для определения чисел выполнения. Они не работают нигде в конвейере.

Маркер Пример значения Примечания.
$(Build.DefinitionName) CIBuild Имя конвейера не может содержать недопустимые или пробелы.
$(Build.BuildId) 752 $(Build.BuildId) — это внутренний неизменяемый идентификатор, который также называется идентификатором запуска, уникальным в организации Azure DevOps.
$(DayOfMonth) 6
$(DayOfYear) 126
$(Hours) 21
$(Minutes) 7
$(Month) 5
$(Rev:r) 2 Третий ежедневный запуск , 3и т. д. Используйте для $(Rev:r) обеспечения уникального имени каждой завершенной сборки.
$(Date:yyyyMMdd) 20240506 Можно указать другие форматы дат, $(Date:MMddyy)например.
$(Seconds) 3
$(SourceBranchName) main
$(TeamProject) Fabrikam
$(Year:yy) 24
$(Year:yyyy) 2024

Внимание

Если вы хотите отобразить нули префикса в номере выполнения, можно добавить дополнительные r символы в Rev маркер. Например, укажите$(Rev:rr), нужно Rev ли начинать число и 0102т. д.

Если в рамках схемы нумерирования версий используется нумерованный Rev от нуля, следует учитывать, что некоторые задачи конвейера или популярные средства, такие как пакеты NuGet, удалите начальные нули. Это поведение приводит к несоответствию номера версии в созданных артефактах.

Выражения

Если для задания номера сборки используется выражение, вы не можете использовать некоторые маркеры, так как их значения не задаются во время вычисления выражений. К этим маркерам относятся $(Build.BuildId), $(Build.BuildURL)и $(Build.BuildNumber).

Переменные

В номере сборки можно использовать определяемые пользователем и предопределенные переменные. Например, если вы определяете My.Variable, можно указать следующий формат чисел:

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

В предыдущем примере первые четыре переменные предопределяются. Сведения о том, как определить пользовательские переменные, см. в разделе "Задание переменных в конвейерах".

Вопросы и ответы

Насколько большим может быть номер выполнения и какие символы можно использовать?

Число выполнения может составлять до 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)

Определение переменных