【发布时间】:2020-10-30 11:49:33
【问题描述】:
我有两个预合并管道:
- uipr
- apipr
还有一个 CI/CD 管道:
- 应用
在 UI 存储库中,每当一个 PR 生成到分支 main 时,uipr 就会运行。 API repo 和 apipr 也是如此。
如果此 PR 前运行成功,Application 管道将运行。
Application 管道将填充 resources.triggeringalias 变量,其中包括执行 CI 的预合并管道的名称:uipr / apipr
Application 管道还有两个布尔参数,分别称为 compileui 和 compileapi,默认设置为 false。如果我手动运行Application 管道并将其中任何一个设置为true,它将执行模板以编译所选的任何一个。
我想要实现的是:
- 如果
resources.triggeringalias等于 uipr 或parameters.compileui等于 true 则执行模板 compileui.yaml - 如果
resources.triggeringalias等于 apipr 或parameters.compileapi等于 true 然后执行模板 compileapi.yaml
这是我目前所拥有的:
parameters:
- name: compileui
displayName: compile ui
type: boolean
default: false
- name: compileapi
displayName: compile api
type: boolean
default: false
resources:
repositories:
- repository: api
- repository: ui
pipelines:
- pipeline: ui
source: uipr
trigger: true
- pipeline: api
source: apipr
trigger: true
stages:
- stage: ci
jobs:
- job: ui
steps:
- checkout: ui
- ${{ if or(eq(variables['resources.triggerinalias'], 'ui'),eq(parameters.compileui, true)) }}:
- template: steps/build-ui.yaml
- job: api
steps:
- checkout: api
- ${{ if or(eq(variables['resources.triggeringalias'], 'api'),eq(parameters.compileapi, true)) }}:
- template: steps/build-api.yaml
我知道 (variables['resources.triggeringalias'], 'ui') 仅在运行时发生,而不是在模板扩展时发生。这就是我所缺少的,不知道该怎么做
【问题讨论】:
-
你好@Leo Liu-MSFT 我即将测试你提出的解决方案我会告诉你谢谢你的帮助!
标签: azure-devops azure-yaml-pipelines azure-devops-yaml