如何通过脚本设置gitlab-ci变量,而不仅仅是在.gitlab-ci.yaml的“变量”部分中?这样我就可以在一个作业中设置变量并在其他作业中使用
答案 0 :(得分:1)
GitLab当前无法在阶段或作业之间传递环境变量。
但是有一个要求:https://gitlab.com/gitlab-org/gitlab/-/issues/22638
当前解决方法是使用工件-基本是传递文件。
我们有一个类似的用例-从pom.xml
获取Java应用程序版本,并将其传递给管道中稍后的各种作业。
我们如何在.gitlab-ci.yml
中做到这一点:
stages:
- prepare
- package
variables:
VARIABLES_FILE: ./variables.txt # "." is required for image that have sh not bash
get-version:
stage: build
script:
- APP_VERSION=...
- echo "export APP_VERSION=$APP_VERSION" > $VARIABLES_FILE
artifacts:
paths:
- $VARIABLES_FILE
package:
stage: package
script:
- source $VARIABLES_FILE
- echo "Use env var APP_VERSION here as you like ..."
答案 1 :(得分:0)
如果运行脚本,则可以设置环境变量
export MY_VAR=the-value
设置了环境变量后,它应该在当前环境中持续存在。
现在,为什么您不想想要这样做。
像Gitlab CI这样的工具旨在实现您的重复性 文物。一致性是这里的问题。如果第二份工作会怎样 有要从第一个中提取一个变量吗?然后,您有多个路径!
# CI is a sequence
first -> second -> third -> fourth -> ...
# not a graph
first -> second A -> third ...
\> second B />
您如何获得第三名?现在,如果您必须调试第三条,则要测试哪个路径?如果第三个内置物坏了,谁负责第二个A或第二个B?
如果您需要一个变量,请立即使用它,以后不要在其他作业/脚本中使用它。每当你 想要编写更长的命令序列使其成为脚本并执行脚本!