Номера запуска и сборки
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
ли начинать число и 01
02
т. д.
Если в рамках схемы нумерирования версий используется нумерованный 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)