如何从派生存储库(GitLab)的父分支中导入环境变量?

时间:2019-07-22 20:32:27

标签: ssh gitlab-ci-runner

我正在设置一个Gitlab运行器以SSH到远程服务器,以便可以在物理硬件上运行测试,但是从分支分支启动后,作业将失败。我将SSH密钥另存为父级中的环境变量,但分叉运行程序上运行的作业未将其获取。如何从父级导入环境变量?

当我手动将SSH密钥作为环境变量添加到我的派生存储库中时,作业成功完成,但是此操作不可扩展。我尝试将项目和所有参与的人员添加到一个公共组中,并在其中设置相同的变量,并启动组运行器。看来,如果您从您的个人帐户中启动了跑步者,那么您将无法访问必要的变量。

.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。如何强制跑步者始终从父仓库运行?

1 个答案:

答案 0 :(得分:0)

It might be because of this:

可以保护变量。只要变量受到保护,它就只能安全地传递到在受保护分支或受保护标签上运行的管道。其他管道将不会获得任何受保护的变量。

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

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

要保护分支或标签:

设置->存储库->受保护的分支/标签