variables - 如何将值从提交传递到 GitLab CI 管道作为变量?

标签 variables continuous-integration gitlab gitlab-ci pipeline

我需要将值动态传递给 GitLab CI 管道,以将值进一步传递给作业。问题是:该值不能存储在代码中,不需要重新配置管道(例如,我可以在 .gitlab-ci.yml 的“变量”部分传递值,但它意味着存储值在代码中,或更改“CI/CD 设置”的“环境变量”部分意味着手动重新配置)。此外,分支名称也不能用于该目的。

它不是 secret 字符串,而是修改管道执行的关键字。 那么,我该怎么做呢?

最佳答案

您没有指定此值的来源。

你说“将提交的值传递给...”
如果是关于提交本身的一些元信息,请查看 Predefined environment variables 的列表
有很多名为 CI_COMMIT_* 的变量可能对您有用。

但是, 如果它是您在管道中在一项工作 中产生的某些值(value),并希望传递给另一项工作 - 则另当别论。 有一个长期存在的请求Pass variables between jobs , 仍未实现。

目前的解决方法是使用artifacts - 文件来分阶段在作业之间传递信息。
我们的用例是从 pom.xml 中提取 Java 应用程序版本,然后将其传递给某个打包作业。
以下是我们在 .gitlab-ci.yml 中的做法:

...
variables:
  VARIABLES_FILE: ./variables.txt  # "." is required for image that have sh not bash

...

get-version:
  stage: prepare
  image: ...
  script:
    - APP_VERSION=...
    - echo "export APP_VERSION=$APP_VERSION" > $VARIABLES_FILE
  artifacts:
    paths:
      - $VARIABLES_FILE
...
package:
  stage: package
  image: ...
  script:
    - source $VARIABLES_FILE
    - echo "Use env var APP_VERSION here as you like ..."

关于variables - 如何将值从提交传递到 GitLab CI 管道作为变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56817867/

相关文章:

git - 来自一个 pull 请求的提交显示在第二个 pull 请求中

gitlab - 搞乱了 gitlab 权限,现在不知道该怎么办

variables - :/= mean in %date:/=%? 是什么意思

javascript - django 将数据传递给 javascript 的最佳方式

javascript - 小数点四舍五入 JavaScript

ant - TFS 不会从相对路径发布 ANT 测试结果

git - 如何使用 curl 下载 gitlab CI/CD 工件?

centos - centos 7安装gitlab后报错422

java - 指令分配一个值,但该值不会在任何后续指令中读取或使用

android - 如何保护用于上传 google play 商店的 faSTLane json key 文件