你可以在 gitlab 管道中存储一个值,以便以后的管道可以访问它吗?

Posted

技术标签:

【中文标题】你可以在 gitlab 管道中存储一个值,以便以后的管道可以访问它吗?【英文标题】:can you store a value in a gitlab pipeline so that later piplines can acces it? 【发布时间】:2020-01-26 12:19:37 【问题描述】:

我正在尝试创建一个版本控制系统,该系统在每次将提交推送到主分支时自动增加。我通过 Settings->CI/CD->Environment variables 创建了一个环境变量,并尝试使用以下代码递增它:

   old_version = os.environ["SEMVER_VERSION"]
   new_version = bump(old_version)
   os.environ["SEMVER_VERSION"] = new_version 

问题在于,这些更改仅对环境变量的本地副本进行,该副本在管道完成时被丢弃。所以我的问题是,是否有任何方法可以存储一个值,以便所有管道都可以访问它并更改它?

对此的常见解决方案似乎是将值存储在 git 标签或文件中,然后将其推送回 git 存储库,我遵循的教程是这样做的 https://threedots.tech/post/automatic-semantic-versioning-in-gitlab-ci/,但我无法以编程方式推送提交限制我正在使用的自托管 gitlab 服务器。

【问题讨论】:

【参考方案1】:

您可以使用 API 使用新值更新相同的变量:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \ 
"https://gitlab.example.com/api/v4/projects/1/variables/SEMVER_VERSION" \ 
--form "value=$new_version"

【讨论】:

以上是关于你可以在 gitlab 管道中存储一个值,以便以后的管道可以访问它吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复管道gitlab?

如何在 Gitlab 中成功的管道结束时创建合并请求?

如何创建一个工件,以便它可以在 .gitlab-ci.yml 中下载

如何在 Gitlab 中禁用“分离”管道?

当另一个作业包含“仅”时,在管道中显示 GitLab 作业

触发 Gitlab CI/CD 管道以部署存储库的特定部分