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

标签 azure azure-devops azure-pipelines azure-pipelines-yaml

我有一个包含 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'

失败:

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

最佳答案

最近发生了变化:

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)

但是,请注意,stageDependencystage 级别的条件下不可用。当然,您不仅可以在条件中使用stageDependency

关于Azure DevOps 管道 - 获取前一阶段的内部版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61908077/

相关文章:

azure - 在 Azure Devops Pipeline 中将 Docker 镜像任务拉取和推送到 ACR 失败 "unauthorized: Invalid clientid or client secret."

Python:如何从不同目录导入 zip

azure - 将 Azure 应用服务应用程序设置传递给 SPA JS 应用程序

azure - 为什么可以将资源移动到 Azure 中的只读资源组?

azure-devops - 无法在 Azure Pipelines 中有条件地下载安全文件

azure-pipelines - 如何获取 Azure 数据工厂管道中错误消息的详细信息

json - 用于 JSON 转换的 U-SQL 脚本

testing - 有时 testcafé 登录失败

Azure DevOps Pipeline 任务失败但仍显示绿色(成功)

Azure DevOps 安全文件 Windows 代理支持