【问题标题】:How do I recover the name of a downloaded artifact in a deployment job of Azure DevOps?如何在 Azure DevOps 的部署作业中恢复已下载项目的名称?
【发布时间】:2022-08-17 13:24:25
【问题描述】:

我正在构建一个多阶段管道,其中我的构建阶段将单个文件存储为管道工件。在部署阶段,工件会自动下载,我需要文件名才能继续执行以下步骤。

目前,我正在将存储为构建工件的文件名作为变量发布。我想知道download 任务是否能够提供文件名,以便我可以进一步分离构建和部署阶段。

这就是我现在正在使用的:

    - bash: |
        jarFile=`ls -1 *.jar`
        echo \"##vso[task.setvariable variable=jarFile;isOutput=true]${jarFile}\"
      workingDirectory: target
      name: mavenTarget
      displayName: Finds name of built `.jar` file

然后在部署阶段:

variables:
    - name: jarFile
      value: $[ stageDependencies.ci.build.outputs[\'mavenTarget.jarFile\'] ]
  • 您能否提供更多详细信息,您的代码有效吗?如果不是,那是什么症状?至少,根据official example,语法似乎很好,当然如果您可以提供没有敏感信息的完整代码,那就太好了。
  • 我发布的代码有效,我只是想知道我是否过于复杂,因为一些管道任务已经设置了有用的输出变量。例如,DownloadSecureFile 导出 secureFile 属性。如果download 给了我下载的工件的名称,我可以消除阶段之间的依赖。

标签: azure-devops azure-pipelines azure-pipelines-yaml azure-pipelines-tasks


【解决方案1】:

我想知道下载任务是否能够提供文件的名称,以便我可以进一步分离构建和部署阶段。

恐怕下载构建工件任务没有内置的输出变量可以表示工件的名称或工件中的文件。

下载工件任务的输出变量是XXX.buildnumber。它不包含有关工件名称或工件中的文件的信息。

当前 YAML 中使用的 cross-stage variables 是一种有效的方法。您可以继续使用该方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 2021-02-06
    • 1970-01-01
    相关资源
    最近更新 更多