有没有办法添加需求才能运行作业?或者,如果您在特定分支上,是否有特定的方法来添加条件,请将此作业添加为依赖项?到目前为止,我的规则部分中有一个“需求”。审核作业仅在功能分支上运行。有人问类似的问题。
test:sauce:
...
script:
- export MASTER_URL=https://masterurlexample.io
- export TEST_PREVIEW_APP=$CI_COMMIT_REF_SLUG
- cd $MAVEN_DIRECTORY
- if [ "$CI_COMMIT_BRANCH" == "master" || "$EMULATE_BRANCH" == "master" ]; then
export TEST_PREVIEW_APP=$MASTER_URL;
needs:
fi;
- echo "Testing on $TEST_PREVIEW_APP"
- echo "starting test"
- sleep 30
- mvn -U $MAVEN_CLI_OPTS ...
rules:
- if: "$CI_COMMIT_BRANCH" != "master"
needs: [ "review "]
我认为不可能。
解决方法可以是创建一个模板作业(名称以
.
开头)来包含您的代码,并将作业扩展两次,一次针对案例 "$CI_COMMIT_BRANCH" != "master"
与 needs: [ "review "]
,另一次针对 - if: "$CI_COMMIT_BRANCH" == "master"
无需需要部分。
编辑: 我尝试更好地解释自己,我的想法是使用像
这样的隐藏工作.hidden_job:
script:
- YOUR CODE HERE
之后,将这项工作扩展到具有正确需求的其他工作,例如:
job1:
extends: .hidden_job
rules:
- if: "$CI_COMMIT_BRANCH" != "master"
needs: [ "review "]
job2:
extends: .hidden_job
rules:
- if: "$CI_COMMIT_BRANCH" == "master"
通过这种方式,您可以定义具有不同规则和需求的多个作业来满足您的要求,而无需每次都重复您的代码。 (例如,仅在特定分支上使用特定需求,例如 job1)
needs:optional
语法
如果
'review'
作业仅存在于感兴趣的分支上,您可以将其标记为“可选”,gitlab将忽略它不存在于其他分支的管道上的事实。
test:sauce:
# ...
needs:
- job: 'review'
optional: true
如果
'review'
作业无条件存在,您可以制作一个仅存在于分支上的虚拟作业。
review_on_master:
needs: ['review']
variables:
GIT_STRATEGY: none
script: ['true']
rules:
- if: "$CI_COMMIT_BRANCH" != "master"
when: never
test:sauce:
# ...
needs:
- job: 'review_on_master'
optional: true