У меня есть два Azure конвейера yaml DevOps, один для сборки, а затем один для развертывания (да, я знаю, что могу сделать оба в одном конвейере, но для моего варианта использования мне нужно разделить его).
Первый конвейер создает артефакты, и затем я настроил второй конвейер, который будет запускаться, когда первый будет завершен для развертывания этих артефактов.
Я пытаюсь сделать так, чтобы имя моего второго конвейера совпадало с именем первого конвейера чтобы упростить корреляцию между двумя.
Итак, если первый конвейер запущен и автоматически называется «1.0.0», я хочу, чтобы второй конвейер также назывался «1.0.0» при его запуске .
Мой первый конвейер (ниже) начинается следующим образом и имеет автоматически сгенерированное семанти c имя.
# Generate build name - see variables section below
name: '$(Version.MajorMinor).$(Version.Revision)$(Version.Suffix)'
# These are Continuous Integration Triggers for automatically starting a new pipeline run when there is a check in for any of the matching branches
trigger:
- trunk
- feature/*
- task/*
- bug/*
# Use this section to set variables that are specific to the Microservice / Solution being processed
variables:
Version.MajorMinor: 1.0 # Major = non-backward compatible version increment, Minor = backward compatible version increment
Version.Revision: $[counter(variables['Version.MajorMinor'],0)] # Increments automatically every build, resets if Version.MajorMinor is changed
# Set the suffix of the version number depending on whether this is trunk, pr or other branch
${{ if eq(variables['Build.SourceBranch'], 'refs/heads/trunk') }}:
Version.Suffix: '' # trunk
${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
Version.Suffix: '-pr' # pull request
${{ if and(ne(variables['Build.SourceBranch'], 'refs/heads/trunk'), ne(variables['Build.Reason'], 'PullRequest')) }}:
Version.Suffix: '-pre' # pre-release
Запускается мой второй конвейер:
# Use the name of the first pipeline
name: '$(originalVersion)-test'
resources:
pipelines:
- pipeline: original # reference to build pipeline
source: 'DevOps - CI'
branch: trunk
variables:
# variable contains the name of the build pipeline
originalVersion: $[variables['resources.pipeline.original.runName']]
stages:
- stage: start
jobs:
- job: LogJob
displayName: 'Logging'
steps:
- checkout: none
- pwsh: |
Write-Host "originalVersion: $(originalVersion)"
Write-Host "pipelineID: $(resources.pipeline.original.pipelineID)"
Write-Host "runName: $(resources.pipeline.original.runName)"
Write-Host "runID: $(resources.pipeline.original.runID)"
Write-Host "runURI: $(resources.pipeline.original.runURI)"
Write-Host "sourceBranch: $(resources.pipeline.original.sourceBranch)"
Write-Host "sourceCommit: $(resources.pipeline.original.sourceCommit)"
Write-Host "sourceProvider: $(resources.pipeline.original.sourceProvider)"
Write-Host "requestedFor: $(resources.pipeline.original.requestedFor)"
Write-Host "requestedForID: $(resources.pipeline.original.requestedForID)"
displayName: "PoSh: Dependant Pipeline Details"
Я добавил '-test' к имени второго конвейера для отладки, так как, когда конвейер запускается первым завершением, присвоенное ему имя просто '-test'.
Однако в журнал ging, он правильно распечатывает имя предыдущей сборки, в частности, в этих двух строках печатается '1.0.0'
Write-Host "originalVersion: $(originalVersion)"
Write-Host "pipelineID: $(resources.pipeline.original.pipelineID)"
, но использование этой переменной в свойстве 'name:' приводит к пустому значение.
В первом конвейере я могу использовать переменные в имени сборки, созданном из выражений (увеличивающийся номер версии), но во втором конвейере подстановка переменных, похоже, работает.
Кто-нибудь может определить, делаю ли я что-то глупое, или это ошибка / ограничение в Azure DevOps YAML?