如何从分叉回购(GitLab)中的父分支导入环境变量?

How to import the environment variables from the parent branch in a forked repo (GitLab)?

我正在设置 Gitlab 运行ner 以通过 SSH 连接到远程服务器,这样我就可以 运行 在物理硬件上进行测试,但是从我的分叉分支启动时作业失败。我将 SSH 密钥作为环境变量保存在父级中,它们不会被分叉的 运行 上的作业 运行ning 拾取。如何从父级导入环境变量?

当我手动将 SSH 密钥作为环境变量添加到我的分叉存储库时,作业成功,但是这是不可扩展的。我尝试将项目和所有相关人员添加到一个公共组中,并在其中设置相同的变量,并启动 Group Runners。似乎如果您从您的个人帐户启动 运行ner,那么您将无法访问必要的变量。

.gitlab-ci.yml 文件中,我添加了一些打印输出语句以帮助调试。我在父仓库中将 SSH_PRIVATE_KEYRUNNER_ID 设置为它们所需的值,并在我的分叉分支中未分配。当我的个人帐户 运行 时,我得到空白输出。

gitlab-ci.yml

hardware-1:
  image: ubuntu
  before_script:
    - echo "$SSH_PRIVATE_KEY"
    - echo "$RUNNER_ID"
  tags:
    - hardware
  script:
    - ssh pi@raspberry "./test-hardware.sh"

分叉回购上的运行器控制台输出。

$ ...
$ Updating certificates in /etc/ssl/certs...
$ 0 added, 0 removed; done.
$ Running hooks in /etc/ca-certificates/update.d...
$ echo "$SSH_PRIVATE_KEY"

$ echo "$RUNNER_ID"

在父分支上,控制台输出实际的SSH_PRIVATE_KEY和RUNNER_ID。如何强制 运行ner 始终从父存储库 运行?

It might be because of this:

可以保护变量。每当变量受到保护时,它只会安全地传递到受保护分支或受保护标记上的管道 运行。其他管道不会获得任何受保护的变量。

可以通过转到项目的“设置”> CI/CD,然后找到名为“变量”的部分,然后选中“受保护”来添加受保护的变量。

设置后,它们将可用于所有后续管道。

保护分支或标签:

设置 -> 存储库 -> 受保护 branches/tags