如何根据条件添加“需求”

Pau*_*art 6 gitlab gitlab-ci

有没有办法添加需求才能运行作业?或者,如果您在特定分支上,是否有特定的方法来添加条件,请将此作业添加为依赖项?到目前为止,我的规则部分中有一个“需求”。审核作业仅在功能分支上运行。有人问类似的问题

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 "]
Run Code Online (Sandbox Code Playgroud)

Dan*_*ace 1

我认为不可能。

解决方法可以是创建一个模板作业(名称以 开头.)来包含您的代码,并将作业扩展两次,一次用于案例"$CI_COMMIT_BRANCH" != "master"needs: [ "review "]另一次用于- if: "$CI_COMMIT_BRANCH" == "master"不带需求部分的情况。

编辑:我尝试更好地解释自己,我的想法是使用隐藏的工作,例如

.hidden_job:
  script:
    - YOUR CODE HERE
Run Code Online (Sandbox Code Playgroud)

之后,将这项工作扩展到具有正确需求的其他工作,例如:

job1:
  extends: .hidden_job
  rules:
    - if: "$CI_COMMIT_BRANCH" != "master"
    needs: [ "review "]


job2:
  extends: .hidden_job
  rules:
    - if: "$CI_COMMIT_BRANCH" == "master"
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以定义具有不同规则和需求的多个作业来满足您的要求,而无需每次都重复您的代码。(EG仅在特定分支上使用特定需求,例如job1)