【问题标题】:Do I have to explicitly download an artefact in an Azure DevOps pipeline?我是否必须在 Azure DevOps 管道中显式下载工件?
【发布时间】:2020-06-13 11:58:47
【问题描述】:

我正在使用 Azure DevOps 创建一个管道,该管道将在一个阶段构建和发布一个功能应用程序作为工件,然后在后续阶段通过所需的生命周期部署功能应用程序。

我不确定是否需要在后续部署阶段明确下载构建和发布阶段创建的工件?有很多关于这方面的文档,但它有点模棱两可,我看不到这个特定问题的提及。

这是我的管道示例。 DevStagingProduction 阶段包含部署策略,在许多情况下,这些阶段的部署之间会有延迟(可能是几天)。

stages:
- stage: Publish
  displayName: Publish Function App
  jobs:
  - ...
- stage: Dev
  displayName: Deploy Dev
  jobs:
  - ...
- stage: Staging
  displayName: Deploy Staging
  jobs:
  - ...
- stage: Production
  displayName: Deploy Production
  jobs:
  - ...

为了发布包含我的 Function App 的人工制品,我在 Publish 阶段的最后一个作业中使用了 publish 步骤。

- publish: $(System.DefaultWorkingDirectory)
  artifact: FunctionApp

我的问题是,我是否需要在DevStagingProduction 部署阶段使用相应的download 步骤,还是始终可以在$(Pipeline.Workspace) 获得人工制品?请记住,我不会立即完成部署阶段。

- download: current
  artifact: FunctionApp

【问题讨论】:

    标签: azure-devops azure-pipelines artifact


    【解决方案1】:

    是的,您需要在每个阶段添加下载工件步骤,除非您指定作业为deployment作业:

    - stage: Dev
      displayName: Deploy Dev
      jobs:
      - deployment: Staging
        environment: 'Dev'
        strategy:
          runOnce:
            deploy:
              steps:
                - powershell: Write-Host "Test"
    

    有关部署作业的更多信息,您可以找到here

    【讨论】:

    【解决方案2】:

    如果您使用 Microsoft 托管的代理。 yaml 管道中定义的每个作业都将在全新的虚拟机上运行。虚拟机在使用一次后被丢弃。

    因此,来自 Build 阶段的 Build 作业的构建工件在 Deploy 阶段的部署作业的代理机器上不存在。这就是为什么您需要在后续部署阶段中显式下载在发布阶段构建和发布的工件。

    当您使用下载任务时,工件被下载到 $(Pipeline.Workspace)/{artifact},其中 artifact 是工件的名称。始终保留工件的文件夹结构。见here

    如 Shayki 所述,如果您在后续部署阶段使用 deployment job。然后您不需要明确使用下载任务。对于下载工件任务将仅在部署作业的部署挂钩中自动注入。见here

    工件将下载到部署作业代理计算机上的文件夹 $(Pipeline.Workspace)/{previousStageName.jobName}。请参阅下面我的测试管道的屏幕截图。

    【讨论】:

    • 太好了,感谢您的确认。我正在使用deployment 作业,因此我将排除download 步骤。
    • 实际上,在deployment 作业中自动下载工件时,它们并没有以舞台名称为前缀。至少不适合我?
    猜你喜欢
    • 1970-01-01
    • 2019-08-01
    • 2019-10-31
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    相关资源
    最近更新 更多