如何解决Gitlab CI管道可在同一阶段并行运行作业,并调用/触发同一阶段的其他作业
我正在尝试创建用于数据加载的自动化管道。我有一种情况,如下所述:
stages
- stage1
- stage2
job1:
stage: stage1
script:
- echo "stage 1 job 1"
job2:
stage: stage1
script:
- echo "stage 1 job 2"
job3:
stage: stage1
script:
- echo "stage 1 job 3"
job4:
stage: stage1
script:
- echo "stage 1 job 4"
我想在同一阶段并行运行job1和job2。因此,在Job1和Job2成功之后
- job1将调用/触发job3。这意味着job3成功执行后将自动启动
- job2将调用/触发job4,这意味着job2成功时将自动启动
我正在.gitlab-ci.yml中编写管道。
有人可以帮助我实现这一目标吗?
解决方法
无法严格执行您的要求(据我所知),作业3和4需要处于单独的阶段(尽管支持将它们置于同一阶段is planned)。需要明确的是:可以满足其他功能要求,即:
- job1和job2并行开始
- job1将立即触发job3(无需等待job2完成)
- job2将立即触发job4(无需等待job1完成)
关键是使用needs关键字将pipieline转换为directed acyclic graph:
stages:
- stage-1
- stage-2
job-1:
stage: stage-1
needs: []
script:
- echo "job-1 started"
- sleep 5
- echo "job-1 done"
job-2:
stage: stage-1
needs: []
script:
- echo "job-2 started"
- sleep 60
- echo "job-2 done"
job-3:
stage: stage-2
needs: [job-1]
script:
- echo "job-3 started"
- sleep 5
- echo "job-3 done"
job-4:
stage: stage-2
needs: [job-2]
script:
- echo "job-4 started"
- sleep 5
- echo "job-4 done"
如屏幕截图所示,即使作业2仍在运行,作业3也已启动。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。