如何根据分支机构更改gitlab cicd管道中的变量

时间:2020-09-15 23:58:08

标签: gitlab-ci

我需要从gitlab cicd管道调用bash脚本。当我调用它时,输入参数需要根据这是否合并为master进行更改。基本上我想要的是这个

如果是主用户:

test:
  stage: test
  script:
  - INPUT="foo"
  - $(myscript.sh $INPUT)

如果不是管理员:

test:
  stage: test
  script:
  - INPUT=""
  - $(myscript.sh $INPUT)

我试图找出一种方法来设置INPUT,具体取决于管道在哪个分支上运行。我知道有规则以及只有/例外,但是它们似乎不允许您设置变量,只能测试它们。我知道强行方式是只写两次,一个写“只有主”,另一个写“除主”,但是我真的想避免这种情况。

谢谢

2 个答案:

答案 0 :(得分:0)

为什么没有两个作业来运行脚本并使用规则来控制它们何时针对主服务器运行?

test:
  stage: test
  script:
  - if [$CI_BUILD_REF_NAME == 'master']; then export INPUT="foo"; else INPUT=""; fi
  - $(myscript.sh $INPUT)

答案 1 :(得分:0)

我使用 yml 锚点来扩展任务。

我发现它更易于阅读,并且自定义可以包括其他内容,而不仅仅是变量。

例如:

.test_my_software:
  stage: test
  script:
    - echo ${MESSAGE}
    - bash test.sh

test stable:
  <<: *test_my_software
  variables:
    MESSAGE: testing stable code!
  only:
    - /stable.*/

test:
  <<: *test_my_software
  variables:
    MESSAGE: testing our code!
  except:
    - /stable.*/

你明白了……