#azure-devops #azure-pipelines
#azure-devops #azure-конвейеры
Вопрос:
Изначально я хотел определить переменные конвейера в моем azure-pipelines.yml
, которые я могу при необходимости установить во время очереди, но, похоже, на данный момент это не поддерживается: переменные, которые могут быть установлены во время очереди, могут быть определены только в конструкторе. Эта переменная (через запятую) имеет имя nx_versions
и будет использоваться для построения матричной стратегии. Вот минимальный пример:
# azure-pipelines.yml
jobs:
- template: job-template.yml
parameters:
nx_versions: $(nx_versions)
и
# job-template.yml
parameters:
nx_versions:
- 1
jobs:
- job: build
strategy:
matrix:
${{ each nxver in parameters.nx_versions }}:
NX_${{ nxver }}:
NXVersion: ${{ nxver }}
steps:
- powershell: echo $(NXVersion)
Постановка сборки в очередь с nx_versions = 2,3
(значение на самом деле не имеет значения) приводит к ошибке:
/job-template.yml (Line: 9, Col: 9): Expected a sequence or mapping. Actual value '$(nx_versions)'
Возможно ли это вообще? Я также пробовал использовать ${{ nx_versions }}
и ${{ variables.nx_versions }}
безрезультатно.
Это возможно с помощью полноценного дизайнерского решения.
Комментарии:
1. Я не пробовал это сам, но вы также пробовали формат выражения во время выполнения? $[variables.var], как указано здесь: learn.microsoft.com/en-us/azure/devops/pipelines/process /…
Ответ №1:
Тривиальный конвейер (не ссылающийся на шаблоны, но может быть легко расширен для этого)
parameters:
- name: nx_versions
type: object
default:
- 1
- 4
jobs:
- job: build
strategy:
matrix:
${{ each nxver in parameters.nx_versions }}:
NX_${{ nxver }}:
NXVersion: ${{ nxver }}
steps:
- powershell: echo $(NXVersion)
Расширяется до
parameters:
- name: nx_versions
type: object
default:
- 1
- 4
stages:
- stage: __default
jobs:
- job: build
strategy:
matrix:
NX_1:
NXVersion: 1
NX_4:
NXVersion: 4
steps:
- task: PowerShell@2
inputs:
targetType: inline
script: echo $(NXVersion)
Если вы перейдете в очередь сборки для этого, вы получите страницу параметров со значениями по умолчанию:
которую вы можете переопределить:
что приводит к:
Ответ №2:
Я сталкиваюсь с той же проблемой. Я не думаю, что в настоящее время это возможно. Я полагаю, что над этим ведется работаhttps://github.com/Microsoft/azure-pipelines-yaml/pull/129