我目前正在用一个小的POC评估Azure Pipelines,我想我遇到了一个限制,但是想知道是否有人可以解决。
这是我正在尝试做的关键部分。
天蓝色管道
variables:
- name: FavouriteSportsTeam
value: "Houston Rockets"
jobs:
- template: Build1.yml
parameters:
SportsTeam: $(FavouriteSportsTeam)
- template: Build2.yml
parameters:
SportsTeam: $(FavouriteSportsTeam)
Run Code Online (Sandbox Code Playgroud)
Build1.yml
parameters:
SportsTeam: "A Default Team"
jobs:
- job: SportsTeamPrinter
steps:
- script: "echo ${{ parameters.SportsTeam }}"
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试运行此文件时,不会扩展从azure-pipelines.yml文件传递的变量,并将其保留为“ $(FavouriteSportsTeam)”
是否可以将扩展变量作为参数传递给另一个文件?
这有效:
azure-pipelines.yml
variables:
FavouriteSportsTeam: "Houston Rockets"
jobs:
- template: Build1.yml
parameters:
SportsTeam: $(FavouriteSportsTeam)
- template: Build2.yml
parameters:
SportsTeam: $(FavouriteSportsTeam)
Run Code Online (Sandbox Code Playgroud)
构建1.yml
parameters:
SportsTeam: "A Default Team"
jobs:
- job: SportsTeamPrinter
steps:
- script: "echo ${{ parameters.SportsTeam }}"
Run Code Online (Sandbox Code Playgroud)
我在模板中的部署作业遇到了同样的问题,我试图在其中设置environment依赖参数。模板参数将接收一个运行时变量$(Environment)。
问题是在environment解释传递给的值时,运行时变量尚不可用。解决方案是不在运行时语法中传递变量,而是使用表达式语法 ${{ variables.environment }}:
parameters:
- name: environment # don't pass run-time variables
jobs:
- deployment: DeployAppService
environment: ${{ parameters.environment }}
strategy: [...]
Run Code Online (Sandbox Code Playgroud)
- stage: QA
variables:
Environment: QA
jobs:
- template: templates/deploy-appservice.yml
parameters:
environment: ${{ variables.environment }} # use expression syntax
Run Code Online (Sandbox Code Playgroud)
如果错误地传递了运行时变量,$(Environment)此字符串就是部署作业将尝试命名 Azure DevOps 环境的字符串。我想,因为这不是一个有效的名称,它将Test用作后备名称,然后出现在环境菜单中。
我在我的个人网站上写了一篇关于管理部署环境的更详细的博客文章。
| 归档时间: |
|
| 查看次数: |
1424 次 |
| 最近记录: |