【问题标题】:add ca certificate to drone.io build container such that git fetch can use it?将 ca 证书添加到drone.io 构建容器以便 git fetch 可以使用它?
【发布时间】:2020-12-08 18:48:27
【问题描述】:

我有一个本地 gitlab 节点和一个本地drone.io 节点。 drone.io 节点在 ubuntu 上运行。 gitlab 节点使用自签名证书。 我已经以规范的 ubuntu 方式(cp cert.pem /usr/share/ca-certificates/; update-ca-certificates)将证书添加到了drone.io 节点。 无人机以 -v /etc/ssl:/etc/ssl:ro 启动。 我知道无人机容器知道这个证书,因为它解决了由于 oauth 中的证书问题而无法登录的问题。 但是构建在 git fetch 中出现错误,并显示“SSL 证书问题:自签名证书”

我怀疑无人机启动了其他一些容器进行构建,而其他容器没有证书。但我不知道发生了什么,也不知道如何在那里注入我的证书。

启动无人机的脚本:

#!/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)

【问题讨论】:

    标签: docker ssl-certificate drone.io


    【解决方案1】:

    您可以设置以下环境变量,以使 Drone runner 可以使用主机的 CA 证书:

    -e DRONE_RUNNER_VOLUMES=/etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt
    

    【讨论】:

      【解决方案2】:

      解决方法是在 .drone.yml 中为克隆设置 skip_verify 在http://addons.drone.io/git/找到解决方案

      我的 .drone.yml 如下,前两行是相关的。

      clone:
        skip_verify: true
      build:
        image: magwas/edemotest:xslt
        commands:
          - ./bin/script
      

      【讨论】:

      • 这似乎不适用于 gitlab。我已经尝试过了,但我仍然遇到可怕的“SSL 证书问题:无法获取本地颁发者证书”错误。 gitlab 插件似乎忽略了“skip_verify”
      • 请参阅docs.drone.io/cloning 以获取更多更新的示例和文档。 skip_verify 有效,但需要使用最新语法进行配置。
      猜你喜欢
      • 2020-12-27
      • 2022-10-03
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      • 2019-12-19
      • 2022-11-07
      • 2018-04-06
      相关资源
      最近更新 更多