Gitlab

Gitlab CE1 se koristi kao centralna lokacija za menadžment izvornog koda (source code) i za isporuku komponenti LOBE servisa u različita okruženja (CI/CD).

Organizacija projekata

Gitlab LOBE grupa sadrži sve komponente LOBE servisa, osnovne i suportivne u obliku zasebnih Gitlab projekata.

Projekat LOBE/lobe (http://gitlab.nil.rs/LOBE/lobe) služi kao organizacioni git projekat i omogućava lakšu inicijalizaciju - svi drugi LOBE projekti su referirani unutar ovog projekta korišćenjem git submodula3.

Da bi se napravila lokalna kopija svih projekata koji su deo LOBE-a sa poslednjim izmenama, izvršavaju se sledeće komande:

1
2
3
git clone --recursive <GITLAB_URL>/LOBE/lobe
cd lobe
./scripts/Update-GitSubmodules.ps1

Upozorenje

Komande zahtevaju instaliran git CLI klijent: choco install git

Lista svih submodula može se videti komandom git submodule unutar lobe repozitorijuma:

PS c:\lobe> git submodule
 be15d60 core/lobe-rest (heads/master)
 d831a97 core/lobe-web (d831a97)
 ded36f6 docs (ded36f6)
 c8a2b0c infrastructure/elastic-logstash-kibana (c8a2b0c)
 41dab1b infrastructure/influxdb-grafana (41dab1b)

Automatski build i deploy

Kako se isti izvorni kod izvršava u svim LOBE okruženjima, specifičnosti svakog okruženja podešavanju se varijablama okruženja (environment variables) koje se definišu u .gitlab-ci.yml2 fajlovima u sekciji variables.

Gitlab nativno podržava asocijaciju job-ova sa okruženjima 4 preko definicije environment-a. Lista svih definisanih okruženja je vidljiva iz Gitlab web interfejsa i generalno se jednim klikom željena verzija koda može isporučiti na bilo koje okruženje uz odgovarajuća domenska ovlašćenja.

Upravljanje deploymentima kroz commit poruke

Na Gitlab pipeline-u su omogućeni servisi tzv. sekretarice.

Sekretarica radi tako što su svi Gitlab job-ovi postavljeni na manuleni trigger da bi njima moglo da se upravlja specijalnom sintaksom kroz git commit poruke.

Funkcionalnosti sekretarice:

  1. Pokretanje jednog ili više job-ova, ignorisanje job-ova, vođenje računa o kontekstu izvršavanja (manual, scheduled itd.)
  2. Prihvatanje ulaza kroz commit poruke koje precizno određuje kako se job-ovi izvršavaju
  3. Ekstenzibilnost kroz plugin sistem u Powershell-u
  4. Mogućnost setovanje build varijabli kroz commit poruke
  5. Prikazivanje upustva za upotrebu prilikom pozivanja sa listanjem svih mogućih operacija

Više detalja je dostupno na lokaciji infrastructure\gitlab\secretary\README.md

Vidi takođe

--> Suprotivni servisi
--> Git