在Gitlab中,如何在某些情况下手动和自动运行管道
我一直在检查Gitlab工作流,目前有类似的设置:在Gitlab中,如何在某些情况下手动和自动运行管道,gitlab,gitlab-ci,Gitlab,Gitlab Ci,我一直在检查Gitlab工作流,目前有类似的设置: workflow: rules: - if: $CI_MERGE_REQUEST_ID - if: $CI_COMMIT_TAG - if: $CI_COMMIT_BRANCH == "master" 这使我可以自动和手动触发管道。但是,我希望在某些情况下可以手动触发作业,也可以自动启动作业,例如: 当PR合并到master时 手动触发 我曾尝试在工作流规则下使用when:manual标志,
workflow:
rules:
- if: $CI_MERGE_REQUEST_ID
- if: $CI_COMMIT_TAG
- if: $CI_COMMIT_BRANCH == "master"
这使我可以自动和手动触发管道。但是,我希望在某些情况下可以手动触发作业,也可以自动启动作业,例如:
- 当PR合并到master时
- 手动触发
image: "hseeberger/scala-sbt:11.0.6_1.3.10_2.11.12"
services:
- mysql:latest
connect:
stage: test
image: mysql
script:
- echo "SELECT 'OK';" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
workflow:
rules:
- if: $CI_MERGE_REQUEST_ID
- if: $CI_COMMIT_TAG
- if: $CI_COMMIT_BRANCH == "master"
stages:
- test
- release
test:
script:
- sbt scalafmtCheckAll test-ci
- sbt it:test
docker:image:
stage: release
image: "hseeberger/scala-sbt:11.0.6_1.3.10_2.11.12"
script:
- sbt docker:publishLocal
only:
- master
我假设您希望为发布阶段运行手动作业,那么您的
docker:image
部分将如下所示:
docker:图像:
阶段:发布
图片:“hseeberger/scala sbt:11.0.6_1.3.10_2.11.12”
脚本:
-sbt docker:publishLocal
规则:
-如果:$CI_COMMIT_BRANCH=='master'
时间:手动
所有作业都应自动启动,并且只有
docker:image
应仅在手动操作时运行我假设您希望在发布阶段运行手动作业,那么您的docker:image
部分将如下所示:
docker:图像:
阶段:发布
图片:“hseeberger/scala sbt:11.0.6_1.3.10_2.11.12”
脚本:
-sbt docker:publishLocal
规则:
-如果:$CI_COMMIT_BRANCH=='master'
时间:手动
所有作业都应自动启动,并且只有
docker:image
应仅在手动操作时运行,当:manual
对工作流无效时。您可以在作业级别使用when
for,它将允许设置when:manual
以手动运行作业您好,谢谢您的回答,我无法让它工作,在这个设置中它会是什么样子?我将用我的完整设置更新这个问题。嗨,我发布了一个例子,希望它能有所帮助。如果不让我知道:)不完全正确,但最终成功了,谢谢伙计。when:manual
对工作流
无效。您可以在作业级别使用when
for,它将允许设置when:manual
以手动运行作业您好,谢谢您的回答,我无法让它工作,在这个设置中它会是什么样子?我将用我的完整设置更新这个问题。嗨,我发布了一个例子,希望它能有所帮助。如果不让我知道:)不完全是,但最终还是成功了,谢谢,伙计。