Integrace GitLab s Jenkins CI

Integrace GitLab s Jenkins CI

Last modified by Jakub Jirůtka on 2013-09-30, 19:40

Současný stav

FIT provozuje systém GitLab pro správu kódu a systém Jenkins pro continuous integration (CI). 

Oba systémy fungují nezávisle na sobě. GitLab nemá příliš dobrou podporu pro CI mimo vlastní CI server. Pro Jenkins existuje rozšíření pro podporu GitLabu, toto rozšíření však funguje pouze jednosměrně (z GitLabu na Jenkins).

Oba systémy však mají RESTful JSON API (viz GitLab a Jenkins), která lze využít pro vytvoření užší integrace.

Problém

Když chce uživatel napojit svůj GitLab repozitář na Jenkins, musí nejprve na Jenkins ručně vytvořit projekt, zadat adresu repozitáře, nastavit práva uživatelům atd. Jelikož repozitáře nejsou veřejně přístupné, tak navíc musí do GitLab přidat deploy key (SSH klíč) z Jenkins, který je ale pro všechny projekty na Jenkins společný! Výsledek testů se poté dozví opět jen na Jenkins.

Stávající plugin pro Jenkins nepodporuje Merge Requests, k tomu je pro změnu zapotřebí separátní plugin.

Požadavek

Prozkoumejte možnosti integrace podpory CI do systému GitLab. Jakým způsobem je integrovaná podpora pro GitLab CI? Mohl by jí Jenkins využít?

Na základě rešerše navrhněte a implementujte řešení, které usnadní nebo zcela automatizuje konfiguraci projektů z GitLabu na Jenkins:

  • Automaticky vytvoří projekt na Jenkins a nastaví základní parametry.
  • Nastaví uživatelská práva k Jenkins projektu pro všechny členy GitLab projektu, podle jejich rolí.
  • Vygeneruje SSH klíč, který Jenkins použije pro přístup do repozitáře, ve kterém se přidá jako //deploy key//.

A zpřehlední zpětnou vazbu (např. vloží komentář o stavu buildu zpět do GitLabu).

V ideálním případě bude služba přebírat konfiguraci pro Jenkins přímo z repozitáře projektu, což umožní jednoduchou integraci po vzoru Travis CI.

Poznámky

Může se jednat o zcela samostatnou službu nebo o modifikaci systému GitLab (event. plugin implementovaný jako Rails Engine); oba přístupy se nevylučují.

Uvedené požadavky jsou spíše orientační, tento úkol je nutné předem konzultovat se zadavatelem a domluvit se na konkrétním způsobu řešení!

Created by Jan Vlnas on 2013-09-30, 18:04

My Recent Modifications


This wiki is licensed under a Creative Commons BY-SA 3.0 license
XWiki Enterprise 5.4.1 - Documentation