2016-03-24 1 views
0

J'ai un noeud local gitlab et un noeud local drone.io. Le noeud drone.io s'exécute sur ubuntu. Le noeud gitlab utilise un certificat auto-signé. J'ai ajouté le certificat au noeud drone.io de la manière canonique ubuntu (cp cert.pem/usr/share/ca-certificates /; update-ca-certificates). Le drone est lancé avec -v/etc/ssl:/etc/ssl: ro. Je sais que le conteneur de drones connaît ce certificat, car il a résolu le problème de ne pas pouvoir se connecter parce que le problème de certificat dans oauth. Mais la construction donne une erreur dans git fetch avec "certificat SSL: certificat auto-signé"ajouter un certificat ca à drone.io construire un conteneur tel que git fetch peut l'utiliser?

Je suppose que drone démarre d'autres conteneurs pour la construction, et l'autre conteneur n'a pas le cert. Mais j'ai perdu la trace de ce qui se passe, et aucune idée sur la façon d'injecter mon CERT là.

Le script drone démarrage:

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

un journal de construction:

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

Répondre

0

Une solution était de skip_verify fixé pour clone .drone.yml trouvé la solution à http://addons.drone.io/git/

Mon .drone.yml est le suivant, les deux premières lignes sont pertinentes.

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

Cela ne semble pas fonctionner avec gitlab. J'ai essayé exactement ceci, et j'obtiens toujours l'erreur redoutée de «certificat de SSL: impossible d'obtenir le certificat local d'émetteur». Il semblerait que le plugin gitlab ignore 'skip_verify' – MattK

+0

voir http://docs.drone.io/cloning/ pour plus d'exemples et de documentation mis à jour. Le skip_verify fonctionne mais doit être configuré en utilisant la dernière syntaxe. –