为什么我不能在 Azure Pipeline YAML 配置文件中使用变量来定义环境 属性?
Why can't I use a variable to define the environment property in the Azure Pipeline YAML config file?
我正在尝试为所有 environments/stages 创建一个部署管道 YAML 模板。我已经在 Azure DevOps 上设置了环境,这样我就可以在测试和生产环境部署之前添加检查和批准。我为每个阶段设置了一个库组,每个阶段都有一个名为 'env' 的变量,它定义了管道中的当前阶段 运行。出于某种原因,部署作业下的环境 属性(请参阅下面的代码片段)不会读取该变量。
有没有人以前遇到过这个问题,或者为什么没有为特定的 属性 读取变量?
注意:我已经测试了变量并且它们确实有效,例如,阶段 属性 输出为 'deploy-dev/test/prod'(取决于环境)
- stage: deploy-$(env)
jobs:
- deployment: DeployWeb
displayName: deploy Web App
pool:
vmImage: 'Ubuntu-latest'
# creates an environment if it doesn't exist
environment: 'smarthotel-$(env)'
strategy:
runOnce:
deploy:
steps:
- script: echo Hello world
你不能这样做,因为它必须在编译阶段就知道。
但是你可以试试这个(让这个文件命名为 deploy.yml):
parameters:
- name: env
type: string
default: 'dev'
stages:
- stage: deploy-${{ parameters.env }}
jobs:
- deployment: DeployWeb
displayName: deploy Web App
pool:
vmImage: 'Ubuntu-latest'
# creates an environment if it doesn't exist
environment: 'smarthotel-${{ parameters.env }}'
strategy:
runOnce:
deploy:
steps:
- script: echo Hello world
然后您需要 运行 如下(在 build.yml 文件中):
stages:
- template: deploy.yml
paramaters:
env: dev
- template: deploy.yml
paramaters:
env: qa
- template: deploy.yml
paramaters:
env: prod
我正在尝试为所有 environments/stages 创建一个部署管道 YAML 模板。我已经在 Azure DevOps 上设置了环境,这样我就可以在测试和生产环境部署之前添加检查和批准。我为每个阶段设置了一个库组,每个阶段都有一个名为 'env' 的变量,它定义了管道中的当前阶段 运行。出于某种原因,部署作业下的环境 属性(请参阅下面的代码片段)不会读取该变量。
有没有人以前遇到过这个问题,或者为什么没有为特定的 属性 读取变量?
注意:我已经测试了变量并且它们确实有效,例如,阶段 属性 输出为 'deploy-dev/test/prod'(取决于环境)
- stage: deploy-$(env)
jobs:
- deployment: DeployWeb
displayName: deploy Web App
pool:
vmImage: 'Ubuntu-latest'
# creates an environment if it doesn't exist
environment: 'smarthotel-$(env)'
strategy:
runOnce:
deploy:
steps:
- script: echo Hello world
你不能这样做,因为它必须在编译阶段就知道。
但是你可以试试这个(让这个文件命名为 deploy.yml):
parameters:
- name: env
type: string
default: 'dev'
stages:
- stage: deploy-${{ parameters.env }}
jobs:
- deployment: DeployWeb
displayName: deploy Web App
pool:
vmImage: 'Ubuntu-latest'
# creates an environment if it doesn't exist
environment: 'smarthotel-${{ parameters.env }}'
strategy:
runOnce:
deploy:
steps:
- script: echo Hello world
然后您需要 运行 如下(在 build.yml 文件中):
stages:
- template: deploy.yml
paramaters:
env: dev
- template: deploy.yml
paramaters:
env: qa
- template: deploy.yml
paramaters:
env: prod