如何覆盖 .gitlab-ci.yml 中的 gitlab 组或项目 CD/CI 变量?

问题描述 投票:0回答:2

我在 Gitlab 中有一个项目,在项目组文件夹的 Gitlab UI 中定义了变量。在我的 git 存储库之一的新分支上,我需要覆盖其中一些变量。

variables:
  GLOBALLY_DEFINED_VARIABLE: "branch_specific_value"

但在具体构建中,该值仍然是全局变量的原始值。 如何获取

.gitlab_ci.yml
文件内的值来赢得项目值?

我知道,文档(https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence)说 yml 中的变量具有较低的优先级,但这没有任何意义( yml 位于项目内部,因此它通常必须具有比项目更高的优先级)。有什么方法可以让我的 yml 文件获胜吗?注意:我确实不想想排除所有变量!其中大部分仍然需要,我只需要覆盖一些 我的用例是这样的:新分支准备代码库以便能够在新的网络服务器上运行。所以这个分支显然需要有存储路径和新服务器类似的变量。但当然,所有存储库的主要分支仍应构建到当前(旧)活动服务器,直到主新服务器分支上的迁移完成

并经过测试

。因此,在这个准备分支上,我必须能够覆盖旧服务器设置。旧设置存储在项目组变量中,因为它们对于许多存储库都是相同的,但现在需要在单个存储库的单个分支中进行更改。

gitlab gitlab-ci gitlab-ci.yml
2个回答
8
投票
script

before_script
:
 中设置变量值
variables: LOCALLY_DEFINED_VARIABLE: "branch_specific_value" before_script: - GLOBALLY_DEFINED_VARIABLE=$LOCALLY_DEFINED_VARIABLE



2
投票

variables: LOCAL_WEB_HOST: localhost LOCAL_DB_HOST: db LOCAL_USERNAME: test before_script: - export LOCAL_ENV_VARS=$(env | grep LOCAL_) - export LOCAL_ENV_VARS=$(echo "$LOCAL_ENV_VARS" | perl -pe 's/LOCAL_//g') - export $(echo "$LOCAL_ENV_VARS" | xargs)

因此,我想要覆盖的 GitLab CI 变量只是以 
LOCAL_

为前缀,然后在 brefore_script 中以编程方式删除该前缀

    

© www.soinside.com 2019 - 2024. All rights reserved.