运行GitLab CI Runner时,我必须指定
environment = [“ GIT_SSL_NO_VERIFY = true”]“
没有它,我从GitLab CI收到以下错误
Cloning into 'D:/GitRunner/builds/c2RN8y5j/0/joeybob/mytestproect'...
fatal: unable to access 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@myserver.local/joeybob/mytestproect.git/': error setting certificate verify locations:
CAfile: D:\GitRunner\builds\c2RN8y5j\0\joeybob\mytestproect.tmp\CI_SERVER_TLS_CA_FILE
CApath: none
检查CI_SERVER_TLS_CA_FILE的内容,我发现它与BEGIN CERTIFICATE和END CERTIFICATE之间的期望值匹配。
当我提示GIT_SSL_NO_VERIFY = true时,CI窗口会产生以下错误,但仍然成功
WARNING: Failed to load system CertPool: crypto/x509: system root pool is not available on Windows
ERROR: Failed to parse PEM in D:\GitRunner\builds\c2RN8y5j\0\joeybob\mytestproect.tmp\CI_SERVER_TLS_CA_FILE
我认为PEM(crt)文件有问题。我在Windows Server 2016上运行此证书,并以base-64编码的X.509格式从本地受信任的根证书存储中导出了证书。这个问题与Windows编码文件的方式有关吗?
答案 0 :(得分:0)
Joey,这可能为时已晚,对您不再有用,但也许也会为您提供帮助。我遇到了完全相同的问题,并通过以下方式解决了该问题:
这是我认为您已经完成的事情:
gitlab-runner register --tls-ca-file=/path
注册通过证书的跑步者(证书必须为.pem格式)environment = ["GIT_SSL_NO_VERIFY=true"]"
。现在是踢手:
3。多次将证书内容复制到.pem文件
我的意思是,您只需要打开.pem文件,然后复制内容并将其多次粘贴到同一文件中即可。保存并让管道再次运行。您应该不再看到任何错误。
问题在于内容有误。问题是因为内容从字节转换为字符串,所以将UTF-8打包为BOM。
在文件中多次添加证书应该摆脱Runner中的错误。这不是解决方案,而是解决方法,但可以快速完成,至少可以做些。
有关此的更多信息:https://gitlab.com/gitlab-org/gitlab-runner/issues/4814
和:https://gitlab.com/gitlab-org/gitlab-runner/issues/2173#note_24022134
希望有帮助!