我有两个预合并管道:
- 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')仅在运行时发生,而不是在模板扩展时发生。这就是我所缺少的,不知道该怎么做