Project

General

Profile

Actions

Feature #7397

closed

[CI] Intégration gitlab / Système de CI

Added by Ferrand Rémi over 10 years ago. Updated over 6 years ago.

Status:
Closed
Priority:
Normal
Assigned To:
Brétel Foudil
Target version:
-
Start date:
06/11/2014
Due date:
% Done:

100%

Estimated time:

Description

Un gros besoin serait de pouvoir utiliser les WebHooks comme sur GitHub et de pouvoir intégrer facilement et automatiquement un système comme Jenkins ou autre.

Jenkins est la plateforme qui va devenir officielle au CC non ?
J'ai rapidement googlé et je suis tombé sur ça :: https://wiki.jenkins-ci.org/display/JENKINS/Gitlab+Hook+Plugin.

Actions #1

Updated by Brétel Foudil over 10 years ago

  • Status changed from New to In progress

Pas encore testé, mais je crois que c'est déjà prévu dans Jenkins:

Dans la conf d'un job Jenkins, on spécifie le Build Triggers > Trigger builds remotely (e.g., from scripts) dans lequel on spécifie un token de son choix. J'imagine que dans gitlab, un webhook devrait suffire. À noter qu'on peut filter les branches dans Jenkins.

Je ne suis pas certain qu'un plugin soit nécessaire.

Actions #2

Updated by Brétel Foudil about 10 years ago

  • Assigned To set to Brétel Foudil
  • % Done changed from 0 to 60

Oui ça marche de base:

  1. côté Jenkins, dans le job, on définit Trigger builds remotely (e.g., from scripts) / Authentication Token
  2. côté Gitlab, on crée un WebHook avec une URL de la forme: https://USERNAME:API_TOKEN@ci.in2p3.fr/PROJECT/job/JOB/build?token=AUTH_TOKEN

Il y a un pb pour l'instant: le webhook ne marche pas parce que la quête HTTP Gitlab -> Jenkins échoue, à cause du certificat non-reconnu. À vérifier.

Actions #3

Updated by Brétel Foudil about 10 years ago

Non c'est pas un pb de cert non-vérifié par Gitlab, puisqu'il n'effectue pas de vérification dans les WebHooks.

Bizarre, ça marche en curl depuis le cluster...

curl -v -k "https://USERNAME:API_TOKEN@ci.in2p3.fr/PROJECT/job/JOB/build?token=AUTH_TOKEN"
...
< HTTP/1.1 201 Created
Actions #4

Updated by Brétel Foudil about 10 years ago

Pour mémoire, j'ai fait un script cgi placé sur n'importe quel serveur web. Appelé depuis gitlab, il déclenche le build sur Jenkins:

#!/bin/bash
# http://stackoverflow.com/questions/23497819/trigger-parameterized-build-with-curl-and-crumb
#
USER_ID=fbretel
API_TOKEN=tructruc
SERVER_URL=https://${USER_ID}:${API_TOKEN}@ci.in2p3.fr/jenkinsfarm
BUILD_TOKEN=tototititata

crumb=$(curl "${SERVER_URL}/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,%22:%22,//crumb)" -k)
curl -H "${crumb}" "${SERVER_URL}/job/jenkinsfarm-py27/build?token=${BUILD_TOKEN}" -k

Mais ça devrait marcher sans la crumb, juste avec l'api_token...

Actions #5

Updated by Ferrand Rémi about 10 years ago

Salut Foudil / J.R,

Avez-vous avancé sur l'intégration gitlab / Jenkins ou gitlab / gitlab-CI ?
Pour en avoir rapidement discuté avec J.R, gitlab-CI semble bien plus intégré et plus simple d'utilisation.

D'un point de vue utilisateur, le besoin que je fait remonter est un travis-ci like mais je ne connais absolument pas Jenkins, je vous laisse donc juger de ce qui conviendra le mieux.

Merci d'avance

Actions #6

Updated by Brétel Foudil about 10 years ago

Salut Rémi,
En attendant qu'on regarde gitlab-ci, je te propose de te créer une instance Jenkins (goto http://ci.in2p3.fr). Tu pourras déjà expérimenter avec Jenkins et voir si ça peut répondre à ton besoin.
Qu'en dis-tu ?

Actions #7

Updated by Bussery Justin over 6 years ago

  • Status changed from In progress to Closed
  • % Done changed from 60 to 100

Plus d'actualité

Actions

Also available in: Atom PDF