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

How to override a gitlab group or project CD/CI variable in .gitlab-ci.yml?

我在 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 在 里面 project,因此它通常必须具有比 project 更高的优先级)。有什么方法可以让我的 yml 文件获胜吗?注意:我不是想排除所有变量!大部分还是需要的,我只需要覆盖一些.

我的用例是这样的:新分支准备代码库以便能够 运行 在新的网络服务器上。所以这个分支显然需要有变量存储路径和新服务器的类似内容。但是当然,所有存储库的主要分支仍然应该构建到当前(旧的)实时服务器,直到 main-new-server 分支上的迁移完成 并测试 。所以在这个准备分支上,我必须能够覆盖旧服务器设置。旧设置存储在项目组变量中,因为它们对于许多存储库都是相同的,但现在需要在单个存储库的单个分支中进行更改。

您可以在 scriptbefore_script:

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