我需要从gitlab cicd管道调用bash脚本。当我调用它时,输入参数需要根据这是否合并为master进行更改。基本上我想要的是这个
如果是主用户:
test:
stage: test
script:
- INPUT="foo"
- $(myscript.sh $INPUT)
如果不是管理员:
test:
stage: test
script:
- INPUT=""
- $(myscript.sh $INPUT)
我试图找出一种方法来设置INPUT,具体取决于管道在哪个分支上运行。我知道有规则以及只有/例外,但是它们似乎不允许您设置变量,只能测试它们。我知道强行方式是只写两次,一个写“只有主”,另一个写“除主”,但是我真的想避免这种情况。
谢谢
答案 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.*/
你明白了……