Azure DevOps管道-获取上一阶段的内部版本号

时间:2020-05-20 08:04:49

标签: azure azure-devops

我有一个包含两个阶段的yml管道:

- stage:
- stage:

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

试图摆脱stageDependencies:

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'

失败:

## [错误]术语'stageDependencies.BuildPublish.BuildPublishJob.outputs [MsiVersion.msiVersion]'不被识别为cmdlet,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者是否包含路径,请确认路径正确,然后重试。

1 个答案:

答案 0 :(得分:1)

最近发生了变化:

stages:
- stage: A
  jobs:
  - job: JA
    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
    - script: echo $(DetermineResult.doThing)
      name: echovar
  - job: JA_2
    dependsOn: JA
    condition: eq(dependencies.JA.outputs['DetermineResult.doThing'], 'Yes')
    steps:
    - script: |
        echo "This is job Bar."

#stage B runs if DetermineResult task set doThing variable n stage A
- stage: B
  dependsOn: A
  jobs:
  - job: JB
    condition: eq(stageDependencies.A.JA.outputs['DetermineResult.doThing'], 'Yes') #map doThing and check if true
    variables:
      varFromStageA: $[ stageDependencies.A.JA.outputs['DetermineResult.doThing'] ]
    steps:
    - bash: echo "Hello world stage B first job"
    - script: echo $(varFromStageA)

但是,请注意,在{strong>阶段级别,stageDependencies不能使用。当然,您不仅可以在有条件的情况下使用stageDependencies