Jam*_*ill 15 azure-devops azure-pipelines
我正在设置我的 Azure Devops Pipelines,并且有一个需要一些相当长的设置步骤才能运行的构建。这些需要在其他可以并行运行的任务之前运行。
但是,我只能通过指定作业来完成此操作,这需要每次都执行这些冗长的步骤。IE:
jobs:
- job: Run1
steps:
- task: Long running setup task
- task: Run taskA
- job: Run2
- task: Long running setup task
- task: Run taskB
Run Code Online (Sandbox Code Playgroud)
有没有办法让这个长时间运行的任务运行,并使任务 A/B 依赖于该环境而不需要按顺序运行它们?理想情况下,它会是这样的:
-job
steps:
-task: Long running setup
-task: Parallel: taskA
-task: Parallel: taskB
Run Code Online (Sandbox Code Playgroud)
或者,如果可能的话,之前的作业是否拍摄了容器/映像快照并重用?
dpa*_*kar 11
简短的回答,你不能。
作业中的任务无法并行运行,因为它们在同一代理上运行,并且 Azure Devops 无法“快照”环境以便稍后由其他作业并行重新利用。但是作业可以并行运行,因为它们可以安排在不同的代理上,因此设置将运行两次但并行运行。因此,您需要根据自己的要求在时间和资源使用之间进行权衡。
不过,还有另一种解决方案,取决于您愿意为此投资多少:
如果您的“设置”不经常更改并且您愿意托管自己的代理。然后,您可以运行一个单独的“设置 + 代理”构建,它会创建代理的 docker 映像,将其推送到您的 azure 容器注册表,然后将此映像部署到您的自托管代理(Azure Kubernetes 服务)集群。然后任务 A 和任务 B 可以轻松地并行运行,前提是它们运行的环境(代理 + 设置 docker 映像)始终准备就绪。这正是我的设置。
| 归档时间: |
|
| 查看次数: |
8039 次 |
| 最近记录: |