我在两个管道之间启用了管道资源触发器。想用触发管道资源动态替换别名值。下面是管道代码
resources:
pipelines:
- pipeline: pipeline1
project: onecom
source: pipeline1-api
trigger:
branches:
- develop
- feat/*
- pipeline: pipeline2
project: onecom
source: pipeline2-api
trigger:
branches:
- develop
- feat
variables:
- name: apiname
value: $(resources.pipeline.<Alias>.pipelineName)
- name: dockertag
value: $(resources.pipeline.<Alias>.sourceCommit)
- name: runname
value: $(resources.pipeline.<Alias>.runName)
stages:
- stage: ScanImage
jobs:
- job: ScanImage
pool:
vmImage: 'ubuntu-16.04'
steps:
- script: echo $(apiname)
- script: echo $(runname)
如果构建来自于 pipeline1,我想将 $(resources.pipeline..pipelineName) 中的 别名 值替换为 pipeline1 >source:pipeline1-api 和 pipeline2 如果构建来自源:pipeline2-api 动态。
答案 0 :(得分:0)
请试试这个
variables:
- name: alias
value: $(resources.triggeringAlias)
那么你可以尝试如下替换它
$(resources.pipeline.$(alias).pipelineName)
答案 1 :(得分:0)
如果构建来自源:pipeline1-api,我想将 $(resources.pipeline..pipelineName) 中的别名值替换为值 pipeline1,如果构建来自源:pipeline2-api,则替换为 pipeline2。
由于嵌套变量的值(例如 $(resources.pipeline.$(alias).pipelineName))
在构建/发布管道中尚不支持。所以我们不能直接在变量中使用它:
variables:
- name: apiname
value: $(resources.pipeline.$(alias).pipelineName)
为了解决这个问题,我们需要添加一个内联的 powershell 来根据 resources.pipeline.<Alias>.pipelineName
的值设置变量 $(resources.triggeringAlias)
:
variables:
- name: alias
value: $(resources.triggeringAlias)
- task: InlinePowershell@1
inputs:
script: |
if ("$(alias)" -eq "PipelineA")
{
Write-Host ("##vso[task.setvariable variable=dockertag]$(resources.pipeline.PipelineA.sourceCommit) | cut -c -7")
}
elseif ("$(alias)" -eq "PipelineB")
{
Write-Host ("##vso[task.setvariable variable=dockertag]$(resources.pipeline.PipelineB.sourceCommit) | cut -c -7")
}
更新:
<块引用>你能帮我在 bash 中使用相同的配置吗? linux机器上的任务
- task: PowerShell@2
displayName: 'Inline Powershell'
inputs:
TargetType: inline
Script: |
if ("$(alias)" -eq "PipelineA")
{
Write-Host ("##vso[task.setvariable variable=dockertag]$(resources.pipeline.PipelineA.sourceCommit) | cut -c -7")
}
elseif ("$(alias)" -eq "PipelineB")
{
Write-Host ("##vso[task.setvariable variable=dockertag]$(resources.pipeline.PipelineB.sourceCommit) | cut -c -7")
}
pwsh: true