我一直在检查Gitlab工作流程,目前具有类似的设置:
workflow:
rules:
- if: $CI_MERGE_REQUEST_ID
- if: $CI_COMMIT_TAG
- if: $CI_COMMIT_BRANCH == "master"
这使我可以自动或手动触发管道。但是,我希望作业可以手动触发以及在某些情况下自动启动,例如:
我尝试使用以下情况:工作流规则下的手动标记,但根据Gitlab而言,这不是有效的配置。
有什么办法可以做到这一点?
完整设置如下:
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
答案 0 :(得分:0)
我假设您想在发布阶段运行手动作业,那么您的docker:image
部分将如下所示:
docker:image:
stage: release
image: "hseeberger/scala-sbt:11.0.6_1.3.10_2.11.12"
script:
- sbt docker:publishLocal
rules:
- if: $CI_COMMIT_BRANCH == 'master'
when: manual
所有作业应自动启动,并且只有docker:image
应该仅在手动操作下运行