Azure Devops 管道:作业之间的等待
Azure Devops pipeline: waiting between jobs
我有一个包含三个作业的管道:
- Job 1 启动后台 bash 作业(使用 nohup 和 &)收集 K8s 指标 2 小时,然后退出(以免占用 agent 两个小时)。它还跟踪它 运行 所在的文件夹,并配置为始终在特定代理上 运行。
- 作业 2 等待 2 小时,有一个延迟任务。
- 作业 3,也在同一个代理上配置为 运行,进入上面保存的文件夹,并使用指标收集的结果进行一些计算。
问题是,虽然我确认它进入了正确的文件夹,但它找不到结果文件。我也用了一点测试,我在作业 1 中触摸了一个文件,在作业 3 的文件夹中看不到它。我只能看到原始内容,即作业 1 执行之前存在的内容。结果文件和测试触摸文件丢失。
我使用以下命令将文件夹保存在作业 1 中:
variables:
Folder: $[ dependencies.job_1.outputs['job_1_folder.RUNNING_FOLDER'] ]
...在工作 3 中,我只是 cd 到 $(Folder)
有什么想法吗?解决上述问题,或者允许作业 3 以不同的方式访问作业 1 中生成的内容...
Either to fix the above, or perhaps to allow job 3 access to something that was produced in job 1 in a different way...
这取决于您使用的代理类型。
如果您使用的是hosted agent,由于每次分配一个agent,MS都会为您分配一个新的agent,所以您在job1中存储的文件不会保存到job3中。
要解决此问题,您可以检查 GeralexGR 提到的想法,使用任务发布构建工件并将其下载到 job3 中并使用下载构建工件任务。
如果您使用私有代理,您需要确保 job1 和 job3 使用相同的代理,并且不要在管道配置中启用清除选项:
我有一个包含三个作业的管道:
- Job 1 启动后台 bash 作业(使用 nohup 和 &)收集 K8s 指标 2 小时,然后退出(以免占用 agent 两个小时)。它还跟踪它 运行 所在的文件夹,并配置为始终在特定代理上 运行。
- 作业 2 等待 2 小时,有一个延迟任务。
- 作业 3,也在同一个代理上配置为 运行,进入上面保存的文件夹,并使用指标收集的结果进行一些计算。
问题是,虽然我确认它进入了正确的文件夹,但它找不到结果文件。我也用了一点测试,我在作业 1 中触摸了一个文件,在作业 3 的文件夹中看不到它。我只能看到原始内容,即作业 1 执行之前存在的内容。结果文件和测试触摸文件丢失。
我使用以下命令将文件夹保存在作业 1 中:
variables:
Folder: $[ dependencies.job_1.outputs['job_1_folder.RUNNING_FOLDER'] ]
...在工作 3 中,我只是 cd 到 $(Folder)
有什么想法吗?解决上述问题,或者允许作业 3 以不同的方式访问作业 1 中生成的内容...
Either to fix the above, or perhaps to allow job 3 access to something that was produced in job 1 in a different way...
这取决于您使用的代理类型。
如果您使用的是hosted agent,由于每次分配一个agent,MS都会为您分配一个新的agent,所以您在job1中存储的文件不会保存到job3中。
要解决此问题,您可以检查 GeralexGR 提到的想法,使用任务发布构建工件并将其下载到 job3 中并使用下载构建工件任务。
如果您使用私有代理,您需要确保 job1 和 job3 使用相同的代理,并且不要在管道配置中启用清除选项: