1

我有一个包含 2 个阶段的 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、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

4

1 回答 1

4

最近变了:

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)

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

于 2020-05-20T08:06:31.460 回答