Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure devops 我必须在Azure DevOps管道中显式下载人工制品吗?_Azure Devops_Azure Pipelines_Artifact - Fatal编程技术网

Azure devops 我必须在Azure DevOps管道中显式下载人工制品吗?

Azure devops 我必须在Azure DevOps管道中显式下载人工制品吗?,azure-devops,azure-pipelines,artifact,Azure Devops,Azure Pipelines,Artifact,我正在使用Azure DevOps创建一个管道,该管道将有一个阶段来构建和发布一个功能应用程序作为人工制品,然后在后续阶段中通过所需的生命周期部署该功能应用程序 我不确定的是,我是否需要在后续部署阶段显式下载构建和发布阶段创建的工件?关于这一点有很多文档,但有点模棱两可,我看不到有人提到这个问题 工件与生成它们的运行相关联,并在运行完成后保持可用 下面是我的管道示例。Dev、Staging和Production阶段包含部署策略,在许多情况下,这些阶段的部署之间会有延迟(可能是几天) s

我正在使用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:
  - ...
要发布包含我的功能应用程序的人工制品,我在
publish
阶段的最后一个作业中使用
publish
步骤

- publish: $(System.DefaultWorkingDirectory)
  artifact: FunctionApp
我的问题是,我是否需要使用
开发
登台
生产
部署阶段中相应的
下载
步骤,还是人工制品始终在
$(Pipeline.Workspace)
中可用?请记住,我不会立即完成部署阶段

- download: current
  artifact: FunctionApp

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

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

有关您可以找到的部署作业的详细信息。

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

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

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

如果您在Shayki提到的后续部署阶段使用。那么您就不需要显式地使用下载任务。对于下载工件任务,将仅在部署作业的部署挂钩中自动注入。看

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


太好了,谢谢您的确认。我正在使用
部署
作业,因此我将排除
下载
步骤。谢谢@shayki,我正在使用
部署
作业,因此我将排除
下载
步骤。