如何在GitLab CI流水线中存储多个变量供其他作业使用
GitLab CI 跨作业传递多个变量的方法
原理和单变量传递的逻辑一致,都是通过dotenv类型的制品报告实现,只需要在生成的.env文件中写入多组变量即可。
多变量传递完整配置示例
build: stage: build script: # 写入多个变量到.env文件,每行一个变量 - echo "BUILD_VERSION=v1.2.3" >> build.env - echo "BUILD_TIMESTAMP=$(date +%s)" >> build.env - echo "COMMIT_AUTHOR=$(git log -1 --pretty=%an)" >> build.env # 带空格的变量值需要用引号包裹 - echo "BUILD_DESC=\"正式版构建产物\"" >> build.env artifacts: reports: dotenv: build.env deploy: stage: deploy script: # 直接用$+变量名即可访问所有传递过来的变量 - echo "版本号:$BUILD_VERSION" - echo "构建时间戳:$BUILD_TIMESTAMP" - echo "提交作者:$COMMIT_AUTHOR" - echo "构建描述:$BUILD_DESC" dependencies: - build
核心规则说明
- 所有需要传递的变量都逐行写入同一个.env文件,格式为
变量名=变量值 - 变量值包含空格、特殊字符时,需要用双引号包裹值,避免解析异常
- 下游作业只要配置了
dependencies关联上游生成.env文件的作业,就可以直接读取所有写入的变量,无需额外配置 - 如果有多个上游作业都生成了dotenv报告,下游作业会自动合并所有变量,重名变量以后加载的为准
内容的提问来源于stack exchange,提问作者John Baltimore
相关产品推荐
相关产品推荐

