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