Azure yaml中,局部变量、条件变量和模板变量如何一起使用?
In Azure yaml, how to use local variables, conditional variables and template variables together?
考虑以下场景,其中作业(或阶段)需要使用一些本地、条件和模板变量:
# (1) Local for the yaml file
variables:
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
# (2) Conditional, depending on parameters
variables:
- ${{ if eq(parameters.environment, 'dev') }}:
- environment: 'development'
- ${{ if eq(parameters.environment, 'test') }}:
- environment: 'test'
- ${{ if eq(parameters.environment, 'prod') }}:
- environment: 'production'
# (3) Specific, defined on a template file
variables:
- template: environment-variables-$(environment).yml
如何将这 3 个结合起来?
我需要不依赖于环境的变量 (1),但有些变量是特定于环境的 (3),因此,我根据“parameter.environment”值读取了不同的模板 (2)。
显然,当我尝试多次使用“变量标记”时,Azure-Devops 会抱怨,因为“变量”已经定义了。我该怎么做?
How can I combine these 3?
在 Pipeline YAML 中,变量只能在一个阶段或根级别定义一次。
为了满足您的要求,您需要在同一个变量字段中定义三种类型的变量。
这是一个例子:
parameters:
- name: environment
displayName: Test
type: string
values:
- dev
- test
- prod
variables:
- name: buildPlatform
value: 'Any CPU'
- name: buildConfiguration
value: 'Release'
- template: variables.yml
- ${{ if eq(parameters.environment, 'dev') }}:
- name: environment
value: development
- ${{ if eq(parameters.environment, 'test') }}:
- name: environment
value: test
- ${{ if eq(parameters.environment, 'prod') }}:
- name: environment
value: prod
考虑以下场景,其中作业(或阶段)需要使用一些本地、条件和模板变量:
# (1) Local for the yaml file
variables:
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
# (2) Conditional, depending on parameters
variables:
- ${{ if eq(parameters.environment, 'dev') }}:
- environment: 'development'
- ${{ if eq(parameters.environment, 'test') }}:
- environment: 'test'
- ${{ if eq(parameters.environment, 'prod') }}:
- environment: 'production'
# (3) Specific, defined on a template file
variables:
- template: environment-variables-$(environment).yml
如何将这 3 个结合起来?
我需要不依赖于环境的变量 (1),但有些变量是特定于环境的 (3),因此,我根据“parameter.environment”值读取了不同的模板 (2)。
显然,当我尝试多次使用“变量标记”时,Azure-Devops 会抱怨,因为“变量”已经定义了。我该怎么做?
How can I combine these 3?
在 Pipeline YAML 中,变量只能在一个阶段或根级别定义一次。
为了满足您的要求,您需要在同一个变量字段中定义三种类型的变量。
这是一个例子:
parameters:
- name: environment
displayName: Test
type: string
values:
- dev
- test
- prod
variables:
- name: buildPlatform
value: 'Any CPU'
- name: buildConfiguration
value: 'Release'
- template: variables.yml
- ${{ if eq(parameters.environment, 'dev') }}:
- name: environment
value: development
- ${{ if eq(parameters.environment, 'test') }}:
- name: environment
value: test
- ${{ if eq(parameters.environment, 'prod') }}:
- name: environment
value: prod