将 ca 证书添加到 drone.io 构建容器,以便 git fetch 可以使用它?
add ca certificate to drone.io build container such that git fetch can use it?
我有一个本地 gitlab 节点和一个本地 drone.io 节点。
drone.io 节点在 ubuntu 上运行。
gitlab 节点使用自签名证书。
我已经以规范的 ubuntu 方式将证书添加到 drone.io 节点 (cp cert.pem /usr/share/ca-certificates/; update-ca-certificates)。
无人机以 -v /etc/ssl:/etc/ssl:ro 启动。
我知道无人机容器知道这个证书,因为它解决了由于 oauth 中的证书问题而无法登录的问题。
但是构建在 git 中使用 "SSL certificate problem: self signed certificate"
获取错误
我怀疑 drone 启动了一些其他容器进行构建,而另一个容器没有证书。但是我不知道发生了什么,也不知道如何在那里注入我的证书。
启动无人机的脚本:
#!/bin/bash
set -x
docker kill drone
docker rm drone
docker run \
--volume /var/lib/drone:/var/lib/drone \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume /etc/ssl:/etc/ssl:ro \
--env-file /etc/drone/dronerc \
--restart=always \
--publish=80:8000 \
--detach=true \
--name=drone \
drone/drone:0.4 \
-debug
/etc/drone/dronerc:
# in gitlab, as an administrator, go to /admin/applications
# add a new application, the redirect uri being https://drone.machine/authorize
REMOTE_DRIVER=gitlab
REMOTE_CONFIG=https://ci-poc.devel.balabit?client_id=b88f2a6faefd8d9a05eddd82c8327bda6a59858fc7772753f4e2c0e6a7cd96e4&client_secret=966f752d39f211ef6b79a8c079d2ff1226f6ccd772a239efab4f4e4fb5de67a9
DATABASE_DRIVER=sqlite3
DATABASE_CONFIG=/var/lib/drone/drone.sqlite
HTTP_PROXY=http://proxy.balabit:3128/
HTTPS_PROXY=http://proxy.balabit:3128/
构建日志:
[info] Pulling image plugins/drone-git:latest
Drone Git Plugin built from 8be7aa9
$ git init
Initialized empty Git repository in /drone/src/gitlab.private/mag/devsec/.git/
$ git remote add origin https://gitlab.private/mag/devsec.git
$ git fetch --no-tags --depth=50 origin +refs/heads/master:
fatal: unable to access 'https://gitlab.private/mag/devsec.git/': SSL certificate problem: self signed certificate
[info] build failed (exit code 1)
解决方法是为克隆设置 skip_verify。drone.yml 在 http://addons.drone.io/git/
找到解决方案
我的.drone.yml如下,前两行相关。
clone:
skip_verify: true
build:
image: magwas/edemotest:xslt
commands:
- ./bin/script
您可以设置以下环境变量以使主机的 CA 证书可供 Drone 运行器使用:
-e DRONE_RUNNER_VOLUMES=/etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt
我有一个本地 gitlab 节点和一个本地 drone.io 节点。 drone.io 节点在 ubuntu 上运行。 gitlab 节点使用自签名证书。 我已经以规范的 ubuntu 方式将证书添加到 drone.io 节点 (cp cert.pem /usr/share/ca-certificates/; update-ca-certificates)。 无人机以 -v /etc/ssl:/etc/ssl:ro 启动。 我知道无人机容器知道这个证书,因为它解决了由于 oauth 中的证书问题而无法登录的问题。 但是构建在 git 中使用 "SSL certificate problem: self signed certificate"
获取错误我怀疑 drone 启动了一些其他容器进行构建,而另一个容器没有证书。但是我不知道发生了什么,也不知道如何在那里注入我的证书。
启动无人机的脚本:
#!/bin/bash
set -x
docker kill drone
docker rm drone
docker run \
--volume /var/lib/drone:/var/lib/drone \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume /etc/ssl:/etc/ssl:ro \
--env-file /etc/drone/dronerc \
--restart=always \
--publish=80:8000 \
--detach=true \
--name=drone \
drone/drone:0.4 \
-debug
/etc/drone/dronerc:
# in gitlab, as an administrator, go to /admin/applications
# add a new application, the redirect uri being https://drone.machine/authorize
REMOTE_DRIVER=gitlab
REMOTE_CONFIG=https://ci-poc.devel.balabit?client_id=b88f2a6faefd8d9a05eddd82c8327bda6a59858fc7772753f4e2c0e6a7cd96e4&client_secret=966f752d39f211ef6b79a8c079d2ff1226f6ccd772a239efab4f4e4fb5de67a9
DATABASE_DRIVER=sqlite3
DATABASE_CONFIG=/var/lib/drone/drone.sqlite
HTTP_PROXY=http://proxy.balabit:3128/
HTTPS_PROXY=http://proxy.balabit:3128/
构建日志:
[info] Pulling image plugins/drone-git:latest
Drone Git Plugin built from 8be7aa9
$ git init
Initialized empty Git repository in /drone/src/gitlab.private/mag/devsec/.git/
$ git remote add origin https://gitlab.private/mag/devsec.git
$ git fetch --no-tags --depth=50 origin +refs/heads/master:
fatal: unable to access 'https://gitlab.private/mag/devsec.git/': SSL certificate problem: self signed certificate
[info] build failed (exit code 1)
解决方法是为克隆设置 skip_verify。drone.yml 在 http://addons.drone.io/git/
找到解决方案我的.drone.yml如下,前两行相关。
clone:
skip_verify: true
build:
image: magwas/edemotest:xslt
commands:
- ./bin/script
您可以设置以下环境变量以使主机的 CA 证书可供 Drone 运行器使用:
-e DRONE_RUNNER_VOLUMES=/etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt