我是否必须在 Azure DevOps 管道中明确下载工件?

Dav*_*ard 5 artifact azure-devops azure-pipelines

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

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

这是我的管道的一个例子。的Dev,Staging和Production分期纳入部署策略,并在许多场合都会有这两个阶段的部署之间的延迟(也许天)。

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:
  - ...
Run Code Online (Sandbox Code Playgroud)

为了发布包含我的函数应用程序的人工制品,我使用publish了Publish舞台最后一个作业中的步骤。

- publish: $(System.DefaultWorkingDirectory)
  artifact: FunctionApp
Run Code Online (Sandbox Code Playgroud)

我的问题是,我是否需要download在Dev、Staging和Production部署阶段使用相应的步骤,或者人工制品始终可用$(Pipeline.Workspace)?请记住,我不会立即完成部署阶段。

- download: current
  artifact: FunctionApp
Run Code Online (Sandbox Code Playgroud)

Sha*_*zyk 5

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

- stage: Dev
  displayName: Deploy Dev
  jobs:
  - deployment: Staging
    environment: 'Dev'
    strategy:
      runOnce:
        deploy:
          steps:
            - powershell: Write-Host "Test"
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到有关部署作业的更多信息。