我正在尝试使用Gitlab CI的needs
关键字来更改管道的顺序。理想情况下,我希望我的作业按以下顺序执行:
|-> android_build -> android_deploy -|
test -| |-> notify
|-> windows_build -> windows_deploy -|
这是因为android_build
确实很慢,所以我想在windows_deploy
完成后立即运行windows_build
,因为它不需要android_build
完成。但是,我的管道当前处于阻塞状态,直到两个构建作业都完成。
我尝试使用needs
关键字,如下所示,但无济于事。
在其上方添加dependencies
(具有相同的内容)没有帮助。
这是我的.gitlab-ci.yml
文件,其内容如下:
stages:
- test
- build
- deploy
- notify
lint:
stage: test
script:
- ./renpy.sh $CI_PROJECT_DIR lint
windows_build:
stage: build
script:
- ./renpy.sh launcher distribute $CI_PROJECT_DIR --package pc --dest "$BUILDS_DIR"
artifacts:
paths:
- builds/*.zip
android_build:
stage: build
script: # [long list of commands]
artifacts:
paths:
- builds/*.apk
.ssh_template: &ssh_before_script
before_script: # [ssh configuration to my server]
android_deploy:
<<: *ssh_before_script
stage: deploy
needs: [android_build]
script: # [deploy APKs]
windows_deploy:
<<: *ssh_before_script
stage: deploy
needs: [windows_build]
script: # [deploy ZIPs]
discord_webhook:
<<: *ssh_before_script
stage: notify
script: # [call Discord webhook]
管道像以前一样运行,似乎忽略了needs
关键字。我在这里缺少什么,以及如何正确配置乱序执行?