Azure DevOps管道-获取前一阶段的构建编号

Azure DevOps管道-获取前一阶段的构建编号,azure,azure-devops,Azure,Azure Devops,我有一个yml管道,分为两个阶段: - stage: - stage: 我的第二阶段需要参考上一阶段的$(Build.BuildNumber)。如何做到这一点?我的理解是,输出变量的作用域是相同的阶段,不能跨阶段使用 试图摆脱阶段依赖: stages: - stage: BuildPublish displayName: "Build & Publish" jobs: - job: BuildPublishJob displayName:

我有一个yml管道,分为两个阶段:

- stage:
- stage:
我的第二阶段需要参考上一阶段的
$(Build.BuildNumber)
。如何做到这一点?我的理解是,输出变量的作用域是相同的阶段,不能跨阶段使用

试图摆脱阶段依赖:

stages:
  - stage: BuildPublish
    displayName: "Build & Publish"
    jobs:
      - job: BuildPublishJob
        displayName: "Build & Publish"
        steps:
          - script: |
              echo "Recording MSI version"
              echo "##vso[task.setvariable variable=msiVersion;isOutput=true]$(Build.BuildNumber)"
            name: MsiVersion
          - script: echo $(MsiVersion.msiVersion)
            name: echovar

  - stage: DeployInstallerTest
    displayName: "Deploy Installer Test"
    jobs:
    - job:
      displayName: "Deploy Installer Test"
      steps:
      - task: AzurePowerShell@5
        inputs:
          azureSubscription: 'Spektrix Non-Prod'
          ScriptType: 'InlineScript'
          Inline: |
            $msiVersion = stageDependencies.BuildPublish.BuildPublishJob.outputs['MsiVersion.msiVersion']
          azurePowerShellVersion: 'LatestVersion'
在以下情况下失败:

##[错误]术语“StageDependences.BuildPublish.BuildPublishJob.outputs[MsiVersion.MsiVersion]”未被识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

最近发生了更改:

阶段:
-阶段:A
工作:
-工作:JA
步骤:
-脚本:|
echo“这是job Foo”
echo“##vso[task.setvariable=doThing;isooutput=true]Yes”#变量doThing设置为true
名称:DetermineResult
-脚本:echo$(DetermineResult.doThing)
姓名:echovar
-工作:JA_2
戴彭森:是的
条件:eq(dependencies.JA.outputs['DetermineResult.doThing'],'Yes')
步骤:
-脚本:|
echo“这是作业栏。”
#如果阶段A中的DetermineResult任务集点变量n,则运行阶段B
-阶段:B
德彭森:A
工作:
-工作:JB
条件:eq(stageDependencies.A.JA.输出['DetermineResult.doThing','Yes')#映射doThing并检查是否为真
变量:
varFromStageA:$[stageDependences.A.JA.outputs['DetermineResult.doThing']]
步骤:
-bash:echo“Hello world B阶段第一份工作”
-脚本:echo$(varFromStageA)
但是,请注意,
stageDependencies
阶段级别的条件下不可用。当然,您不仅可以在条件下使用阶段相关性。

它最近发生了变化:

阶段:
-阶段:A
工作:
-工作:JA
步骤:
-脚本:|
echo“这是job Foo”
echo“##vso[task.setvariable=doThing;isooutput=true]Yes”#变量doThing设置为true
名称:DetermineResult
-脚本:echo$(DetermineResult.doThing)
姓名:echovar
-工作:JA_2
戴彭森:是的
条件:eq(dependencies.JA.outputs['DetermineResult.doThing'],'Yes')
步骤:
-脚本:|
echo“这是作业栏。”
#如果阶段A中的DetermineResult任务集点变量n,则运行阶段B
-阶段:B
德彭森:A
工作:
-工作:JB
条件:eq(stageDependencies.A.JA.输出['DetermineResult.doThing','Yes')#映射doThing并检查是否为真
变量:
varFromStageA:$[stageDependences.A.JA.outputs['DetermineResult.doThing']]
步骤:
-bash:echo“Hello world B阶段第一份工作”
-脚本:echo$(varFromStageA)

但是,请注意,
stageDependencies
阶段级别的条件下不可用。当然,您不仅可以在条件下使用阶段独立性。

非常感谢。如果我得到“术语“stageDependencies.A.JA.outputs[Myscript.myar]”未被识别为cmdlet、函数、脚本文件或可操作程序的名称。”-这可能与版本控制有关吗?这是我正在使用的构建管道。你能把你的YAML添加到问题中吗?当然,我只包括了相关部分。MsiVersion.MsiVersion在第一阶段结束时已成功回显。请检查我的更新。您将找到一个示例,说明如何不仅在
条件下使用变量。非常感谢。如果我得到“术语“stageDependencies.A.JA.outputs[Myscript.myar]”未被识别为cmdlet、函数、脚本文件或可操作程序的名称。”-这可能与版本控制有关吗?这是我正在使用的构建管道。你能把你的YAML添加到问题中吗?当然,我只包括了相关部分。MsiVersion.MsiVersion在第一阶段结束时已成功回显。请检查我的更新。您将看到一个示例,说明如何不仅在
条件下使用变量。