Azure devops 您可以在多阶段devops管道中的条件语句中使用构建标记吗
是否可以在后续阶段的条件部分使用多阶段管道构建上设置的构建标记Azure devops 您可以在多阶段devops管道中的条件语句中使用构建标记吗,azure-devops,azure-pipelines,multistage-pipeline,Azure Devops,Azure Pipelines,Multistage Pipeline,是否可以在后续阶段的条件部分使用多阶段管道构建上设置的构建标记 ##### task in build stage ##### - task: YodLabs.VariableTasks.AddTag.AddTag@0 displayName: Adding environment tag to build inputs: tags: | deploy $(DEPLOY_ENV) 谢谢据我所知,这在
##### task in build stage #####
- task: YodLabs.VariableTasks.AddTag.AddTag@0
displayName: Adding environment tag to build
inputs:
tags: |
deploy
$(DEPLOY_ENV)
谢谢据我所知,这在YAML中还不可能实现,因为在YAML中没有简单的方法可以获得可用的标签。您可以尝试的是
输出变量
jobs:
- job: Foo
steps:
- script: |
echo "This is job Foo."
echo "##vso[task.setvariable variable=doThing;isOutput=true]Yes" #The variable doThing is set to true
name: DetermineResult
- job: Bar
dependsOn: Foo
condition: eq(dependencies.Foo.outputs['DetermineResult.doThing'], 'Yes') #map doThing and check if true
steps:
- script: echo "Job Foo ran and doThing is true."
您也可以尝试使用Workaround,在这种情况下:
PUT中使用RESTAPI获取标记https://dev.azure.com/{organization}/{project}/_-api/build/builds/{buildId}/tags/{tag}?api版本=5.1
stageDependencies.stageName.jobName.outputs['stepName.variableName']
。
注意:默认情况下,管道中的每个阶段都取决于
在YAML文件中的前面。因此,每个阶段都可以使用输出
前一阶段的变量。您可以更改依赖关系图,
这也将改变哪些输出变量可用。对于
例如,如果阶段3需要来自阶段1的变量,则需要
在阶段1上声明显式依赖项
我现在试过了:
阶段:
-阶段:A
工作:
-工作:JA
步骤:
-脚本:|
echo“这是job Foo”
echo“##vso[task.setvariable=doThing;isooutput=true]Yes”#变量doThing设置为true
名称:DetermineResult
#如果A失败,阶段B运行
-阶段:B
条件:eq(stageDependencies.A.JA.输出['DetermineResult.doThing','Yes')#映射doThing并检查是否为真
工作:
-工作:JB
步骤:
-bash:echo“Hello world B阶段第一份工作”
但我有一个错误:
加载YAML生成管道时出错。未被承认
值:“阶段相关性”。位于表达式中的位置4处:
eq(stageDependences.A.JA.输出['DetermineResult.doThing','Yes')。
有关更多帮助,请参阅
然而,这一功能很快就会与我们同在 不幸的是,作业级别的输出变量在各个阶段都不可用。因此,对于这两个选项中的任何一个,我的阶段都需要先进行初始作业,以获取值,然后才能添加条件。我现在有类似的工作;但是使用存储在构建输出中的bash脚本。我想做的是跳过整个阶段,而不必在itExcellent上运行任何作业。我将关注特性实现的发行说明。
jobs:
- job: Foo
steps:
- script: |
echo "This is job Foo."
echo "##vso[task.setvariable variable=doThing;isOutput=true]Yes" #The variable doThing is set to true
name: DetermineResult
- job: Bar
dependsOn: Foo
condition: eq(dependencies.Foo.outputs['DetermineResult.doThing'], 'Yes') #map doThing and check if true
steps:
- script: echo "Job Foo ran and doThing is true."