首页 > 解决方案 > 如何动态设置 gitlab-ci 变量?

问题描述

如何通过脚本设置 gitlab-ci 变量,而不仅仅是在 .gitlab-ci.yaml 的“变量”部分?这样我就可以在一项工作中设置变量并在不同的工作中使用

标签: gitlab-ci

解决方案


GitLab 目前无法在阶段或作业之间传递环境变量。

但是有一个要求:https ://gitlab.com/gitlab-org/gitlab/-/issues/22638

当前的解决方法是使用工件- 基本上是传递文件。
我们有一个类似的用例——从管道中获取 Java 应用程序版本pom.xml并将其传递给管道中的各种作业。

我们是如何做到的.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 ..."


推荐阅读