Я пытаюсь передать переменную, которая выводится в шаблоне, состоящем из шагов, в другой шаблон шагов в том же задании, настройка выглядит следующим образом:
Ошибка:
Значение параметра semVersion не является допустимым значением.
jobs:
- job: job_git_tag
displayName: Tag new version
steps:
- template: /templates/git/semantic_version_type.yaml
parameters:
semVersion: ${{ parameters.semVersion }}
- template: /templates/git/git_tag.yaml
parameters:
module: ${{ parameters.module }}
semVersion: $(Type.Semversion)
Семантическая версия шаблона
parameters:
- name: semVersion
type: string
default: auto
values:
- major
- minor
- patch
- auto
steps:
- ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
- bash: |
### do some scripting magic and output variable
echo "##vso[task.setvariable variable=semVersion;isOutput=true]major"
displayName: Get semantic version type
name: Type
Шаблон тега Git
parameters:
- name: module
type: string
- name: semVersion
type: string
default: patch
values:
- major
- minor
- patch
steps:
- bash: |
### here the repository is checkedout and tagged with the correction version after being bumped.
displayName: Tag new version
@RuiJarimba добавил ошибку в описание.
Не могли бы вы добавить определение параметров конвейера в первый блок (job: job_git_tag
)?
Выходная переменная semVersion
будет установлена только тогда, когда Build.Reason==PullRequest
. Каким должно быть поведение, когда конвейер НЕ работает как часть запроса на включение?
parameters
оцениваются в compile time
перед запуском конвейера, передача значения переменных из 1-го шаблона в качестве параметра 2-го шаблона не поддерживается.
В качестве альтернативы вы можете удалить semVersion: $(Type.Semversion)
для второго шаблона, напрямую вызвать его в шаблоне.
jobs:
- job: job_git_tag
displayName: Tag new version
steps:
- template: /templates/git/semantic_version_type.yaml
parameters:
semVersion: ${{ parameters.semVersion }}
- template: /templates/git/git_tag.yaml
parameters:
module: ${{ parameters.module }}
И второй шаблон:
parameters:
- name: module
type: string
# - name: semVersion
# type: string
# default: patch
# values:
# - major
# - minor
# - patch
steps:
- bash: |
echo $(Type.Semversion)
displayName: Tag new version
Вывод на моей стороне:
Вы устанавливаете список разрешенных значений для параметра semVersion
в шаблонах:
parameters:
- name: semVersion
type: string
default: auto
values:
- major
- minor
- patch
- auto
Но конвейер завершится ошибкой со следующей ошибкой, поскольку $(Type.semVersion)
будет создан во время выполнения, т. е. он не существует при компиляции конвейера:
Обнаружены ошибки при анализе YAML конвейера: /pipelines/test01-pipeline.yaml (строка: 29, столбец: 23): значение параметра «semVersion» «$(Type.semVersion)» не является допустимым значением.
В качестве обходного пути вы можете удалить список разрешенных значений:
parameters:
- name: semVersion
type: string
default: auto
Или, как вариант, добавьте $(Type.semVersion)
в список:
parameters:
- name: semVersion
type: string
default: auto
values:
- major
- minor
- patch
- auto
- $(Type.semVersion)
В чем должна быть проблема? Есть ли ошибка? Переменная пуста? ...