добавить сертификат ca в контейнер сборки Drone.io, чтобы git fetch мог его использовать?

У меня есть локальный узел gitlab и локальный узел drone.io. Узел Drone.io работает на Ubuntu. Узел gitlab использует самоподписанный сертификат. Я добавил сертификат в узел drone.io каноническим способом Ubuntu (cp cert.pem /usr/share/ca-certificates/; update-ca-certificates). Дрон запускается с -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/дрон/дронерк:

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

person Árpád Magosányi    schedule 24.03.2016    source источник


Ответы (2)


arrow_upward
0
arrow_downward

Обходной путь состоял в том, чтобы установить skip_verify для клона в .drone.yml. Решение найдено на http://addons.drone.io/git/

Мой .drone.yml выглядит следующим образом, первые две строки имеют значение.

clone:
  skip_verify: true
build:
  image: magwas/edemotest:xslt
  commands:
    - ./bin/script
person Árpád Magosányi    schedule 28.03.2016
comment
Похоже, это не работает с gitlab. Я пробовал именно это, и я все еще получаю ужасную ошибку «Проблема с сертификатом SSL: невозможно получить сертификат локального эмитента». Казалось бы, плагин gitlab игнорирует «skip_verify» - person MattK; 20.02.2017
comment
см. docs.drone.io/cloning для получения более свежих примеров и документации. Skip_verify работает, но его необходимо настроить с использованием последнего синтаксиса. - person Brad Rydzewski; 15.09.2017

arrow_upward
0
arrow_downward

Вы можете установить следующую переменную среды, чтобы сделать сертификаты ЦС хоста доступными для Drone runner:

-e DRONE_RUNNER_VOLUMES=/etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt
person Tim Nieradzik    schedule 08.12.2020