YAML 管道:如果 RESOURCES_TRIGGERINGALIAS = "ui" 则执行任务
YAML pipeline: Execute task if RESOURCES_TRIGGERINGALIAS = "ui"
我有两个预合并管道:
- uipr
- apipr
和一个 CI/CD 管道:
- 申请
在 UI 存储库中,每当对分支 main
生成 PR 时,uipr 将 运行。 API 回购和 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') 只发生在 运行时间而不是模板扩展。这就是我所缺少的,不知道该怎么做
如果我明白了,您只想在管道被另一个管道触发时或在 运行 手动使用标记参数时拥有管道的一部分 运行。您可以通过以下方式实现:
parameters:
- name: compileui
displayName: compile ui
type: boolean
default: false
trigger: none
pr: none
resources:
pipelines:
- pipeline: hadar # Name of the pipeline resource
source: kmadof.hadar # Name of the pipeline referenced by the pipeline resource
trigger:
branches:
- releases/*
- master
stages:
- stage: printer
jobs:
- job: printVariables
steps:
- script: |
echo "$(Build.Reason)"
echo "Build run name was: $(resources.pipeline.hadar.runName)"
- ${{ if or(and(eq(parameters.compileui, true), eq(variables['build.reason'], 'Manual')), eq(variables['build.reason'], 'ResourceTrigger')) }}:
- stage: ci
condition: and(in(variables['build.reason'], 'Manual', 'ResourceTrigger'), succeeded())
jobs:
- job: ui
steps:
- script: echo "Hello from ci"
YAML pipeline: Execute task if RESOURCES_TRIGGERINGALIAS = “ui”
您可以将管道资源元数据用作预定义变量resources.pipeline.<Alias>.pipelineName
,并将参数用作作业级别的条件:
- stage: ci
jobs:
- job: ui
pool:
vmImage: 'vs2017-win2016'
condition: or(eq(variables['resources.pipeline.ui.pipelineName'], 'ui'), eq(${{parameters.compileui}}, true))
steps:
- template: steps/build-ui.yaml
您可以查看以下参考资料以获取更多详细信息:
The pipeline resource metadata as predefined variables
How to get previous build pipeline's build number in case of consecutive build pipelines?
我有两个预合并管道:
- uipr
- apipr
和一个 CI/CD 管道:
- 申请
在 UI 存储库中,每当对分支 main
生成 PR 时,uipr 将 运行。 API 回购和 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') 只发生在 运行时间而不是模板扩展。这就是我所缺少的,不知道该怎么做
如果我明白了,您只想在管道被另一个管道触发时或在 运行 手动使用标记参数时拥有管道的一部分 运行。您可以通过以下方式实现:
parameters:
- name: compileui
displayName: compile ui
type: boolean
default: false
trigger: none
pr: none
resources:
pipelines:
- pipeline: hadar # Name of the pipeline resource
source: kmadof.hadar # Name of the pipeline referenced by the pipeline resource
trigger:
branches:
- releases/*
- master
stages:
- stage: printer
jobs:
- job: printVariables
steps:
- script: |
echo "$(Build.Reason)"
echo "Build run name was: $(resources.pipeline.hadar.runName)"
- ${{ if or(and(eq(parameters.compileui, true), eq(variables['build.reason'], 'Manual')), eq(variables['build.reason'], 'ResourceTrigger')) }}:
- stage: ci
condition: and(in(variables['build.reason'], 'Manual', 'ResourceTrigger'), succeeded())
jobs:
- job: ui
steps:
- script: echo "Hello from ci"
YAML pipeline: Execute task if RESOURCES_TRIGGERINGALIAS = “ui”
您可以将管道资源元数据用作预定义变量resources.pipeline.<Alias>.pipelineName
,并将参数用作作业级别的条件:
- stage: ci
jobs:
- job: ui
pool:
vmImage: 'vs2017-win2016'
condition: or(eq(variables['resources.pipeline.ui.pipelineName'], 'ui'), eq(${{parameters.compileui}}, true))
steps:
- template: steps/build-ui.yaml
您可以查看以下参考资料以获取更多详细信息:
The pipeline resource metadata as predefined variables
How to get previous build pipeline's build number in case of consecutive build pipelines?