无法在本地网络服务器上注册 git runner

Posted

技术标签:

【中文标题】无法在本地网络服务器上注册 git runner【英文标题】:Unable to register git runner on local network server 【发布时间】:2019-12-28 13:48:37 【问题描述】:

我正在尝试在我公司的本地网络服务器上注册一个 git 运行器,gitlab 使用自签名证书可以正常工作,但是当尝试注册一个这样的 git 运行器时

sudo gitlab-runner register --tls-ca-file=/home/gitlab-runner/certs/git.crt

然后粘贴 git URL

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/)
https://git.mycompany/

然后是令牌:

Please enter the gitlab-ci token for this runner: 
TOKEN

然后是描述和标签,然后我得到这个错误:

ERROR: Registering runner... failed   
runner=TOKEN status=couldn't execute POST against https://git.mycompany/api/v4/runners:
Post https://git.mycompany/api/v4/runners: 
dial tcp: lookup git.mycompany on 127.0.0.53:53: 
no such host
PANIC: Failed to register this runner. Perhaps you are having network problems

我没有使用 docker,只是正常设置,请任何帮助,提前非常感谢

更新:

我将 DNS 服务器的名称服务器添加到 /etc/resolv.conf,最后一个错误消失了,但我有新错误:

 x509: certificate has expired or is not yet valid

即使我用 .crt 将跑步者注册为documentation 和

sudo gitlab-runner register --tls-ca-file /path/to/some-host-gitlab.com.crt

这是自签名证书

更新

有效期为 2019 年 6 月 5 日至 2019 年 7 月 5 日的证书是否是自签名证书重要吗?

【问题讨论】:

lookup git.mycompany on 127.0.0.53:53 - 看起来您正在运行 dnsmasq 或其他一些本地解析器,并且您的系统已配置为将其用作名称服务器。这与 gitlab runner 无关。您需要修复本地 DNS 配置。 【参考方案1】:

关于 DNS 问题,您必须更改 /etc/resolv.conf 中的 DNS 服务器并将您的 nameserver 设置为您的 DNS。

对于证书,Gitlab 运行程序默认检查系统证书存储并根据系统中存储的 CA 验证 Gitlab 服务器。要将您的证书添加到系统中,您应该将您的受信任证书添加到/usr/local/share/ca-certificates/ 并执行sudo update-ca-certificates。也可以在注册跑步者时将证书设置为参数--tls-ca-file

我建议创建一个具有更多验证天数的新证书。 (不要忘记在 apache2 或 ngix 的 gitlab 配置中更改证书路径。

【讨论】:

【参考方案2】:

看起来像是名称解析的问题。能否请您验证 dns 服务器的可达性?

从日志中,我可以看到它正在尝试从主机本身解析

dial tcp: **lookup git.mycompany on **127.0.0.53:53:**** 没有这样的主机

【讨论】:

嗨 @jobina 我可以通过 git.mycompany 打开 git 并 ping 您检查过这些文档吗? docs.gitlab.com/runner/configuration/tls-self-signed.html 和 gitlab.com/gitlab-org/gitlab-runner/blob/master/docs/… 是的,但是你想让我看看他们的具体内容吗? 请将 CA 也添加到服务器信任库。 openssl x509 -in /usr/local/share/ca-certificates/ca.pem -inform PEM -out /usr/local/share/ca-certificates/ca.crt and update-ca-certificates ***.com/questions/44458410/…【参考方案3】:

回答您关于证书的最后编辑: 跑步者将验证您的自签名证书,以确保连接安全。在您的证书中包含有效日期是第一步,但跑步者仍将拒绝验证自签名证书。为此,我建议您阅读问题讨论:https://gitlab.com/gitlab-org/gitlab-runner/issues/1754

您可以获取自签名证书,将其放入 PEM 文件中,然后按照https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/configuration/tls-self-signed.md 将其提供给 GitLab Runner

还有一个 tls-skip-verify 选项:https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/configuration/advanced-configuration.md

【讨论】:

嗨 @William 我没有使用 docker only shell,它们对于非 docker 跑步者来说不是 tls-skip-verify,我已经尝试添加 PEM 文件并将其提供给 GitLab Runner跨度>

以上是关于无法在本地网络服务器上注册 git runner的主要内容,如果未能解决你的问题,请参考以下文章

如何利用外网服务器和本地内网机搭建反向隧道?

Git push 执行不需要的 Gitlab runner

XAMPP Apache 服务器无法在内部网络上运行

gitlab-runner 找不到 git

使用Git 本地代码提交到 GitHub

github 本地及服务器安装配置