Git

GitLab Runner i GitLab CI

GitLab Runner i GitLab CI

Što je kontinuirana integracija (CI)?

Kontinuirana integracija sljedeći je logični korak nakon što za suradničke napore imate sustav za upravljanje verzijama poput Gita i sustav za daljinsko upravljanje verzijama poput GitLab ili GitHub. Problem s kojim se suočavaju veliki projekti je sljedeći - kako dolaze novi zahtjevi za povlačenjem, njih treba testirati, a zatim integrirati u glavnu granu, a taj napor može potrajati od nekoliko sati do nekoliko tjedana, ovisno o veličini projekta, mjesto članova tima itd.

Kao i svaki takav problem, logični je korak automatizirati cijelu rigmarolu ispitivanja. To činimo postavljanjem okidača tako da kad god se noviji predaji spoje u granu, agent (GitLab Runner, na primjer) automatski gradi okruženje i kôd, pokreće sve jedinične testove i integracijske testove protiv njega. Ako se naiđe na pogrešku, daje upozorenje i izvještaj o padu sustava, u suprotnom dobivate zeleni signal koji kaže da sve funkcionira.

Naravno, dovedeni do svoje logične krajnosti, također možete automatizirati implementaciju, postaviti automatsko A / B testiranje i u potpunosti ukloniti ljudsku intervenciju iz procesa. To se naziva kontinuirana isporuka i / ili kontinuirana primena, ovisno o razini automatizacije. Ali mi bismo se u ovom vodiču usredotočili na kontinuiranu integraciju.

Preduvjeti

Usredotočit ćemo se na postavljanje jednostavnog protoka CI-a u vodiču pomoću GitLab instance preko HTTPS-a, što smo obradili u prethodnom postu.

Uz to, također pretpostavljamo da ste postavili korisnički račun u ovoj GitLab instanci i jeste spremište (klonirano na vašem lokalnom računalu) kojim se upravlja pod vašim korisničkim imenom. To ćemo spremište koristiti za demonstraciju tijeka rada CI-a. U vodiču će biti njegovo ime moj projekt.

Da sve nabrojimo:

  1. GitLab instanca
  2. Prazno spremište, nazvano my-project
  3. Lokalni klon ovog spremišta
  4. Vaša lokalna Git instanca konfigurirana za ubacivanje promjena u daljinski.

Izrada jednostavne aplikacije

U ovom spremištu stvorimo jednostavan Node.js aplikacija. Ova je aplikacija jednostavna Express.js poslužitelj koji je namijenjen postavljanju u Docker spremnik. Poslužitelj daje HTTP korisni teret u kojem u vašem pregledniku stoji "Hello World".

U korijenu vašeg lokalnog spremišta izradite datoteku app.js i dodajte sljedeće retke:

'koristi strogo';
const express = require ('express');
// Konstante
const PORT = 8080;
const HOST = '0.0.0.0 ';
// App
const app = express ();
app.get ('/', (req, res) =>
rez.send ('Pozdrav svijetu \ n');
);
app.slušati (LUKA, DOMAĆIN);
konzola.log ('Trčanje na http: // $ HOST: $ PORT');

Zatim stvorite drugu datoteku paket.json i dodajte mu sljedeće:


"name": "docker_web_app",
"version": "1.0.0 ",
"description": "Čvor.js na Dockeru ",
"autor": "John Doe",
"main": "poslužitelj.js ",
"skripte":
"start": "poslužitelj čvora.js "
,
"ovisnosti":
"express": "^ 4.16.1 "

Na kraju, stvorite Dockerfile i dodajte mu sljedeći sadržaj:

OD čvora: 8
# Izradite direktorij aplikacija
WORKDIR / usr / src / app
# Instalirajte ovisnosti o aplikaciji
# Zamjenski znak koristi se za osiguranje oba paketa.json I zaključavanje paketa.json se kopiraju
COPY paket *.json ./
RUN npm instalacija
# Ako gradite svoj kod za proizvodnju
# RUN npm install --only = proizvodnja
# Izvor aplikacije bundle
KOPIRATI…
IZLOŽITE 8080
CMD ["čvor", "aplikacija"]

Postupak izrade ove aplikacije uključivao bi stvaranje kontejnera čvora i instaliranje ovisnosti (poput Express.js modul). Ovaj bi se postupak trebao dogoditi bez ikakvih pogrešaka. Radi jednostavnosti, u ovom vodiču nećemo raspravljati o testiranju.

GitLab Runner cjevovod

Sada bismo dodali još jednu datoteku u naše spremište koja bi se zvala .gitlab-ci.yml . Ova bi datoteka sadržavala upute za izgradnju našeg projekta. Sada, svaki put kad gurnemo predaju na našu instancu GitLab, GitLab bi pozvao Runner za izgradnju i testiranje projekta.

Ovaj cjevovod dodjeljujemo raznim poslovi koji se mogu izvoditi svi pokrenuti neovisno jedni o drugima, čineći postupak izrade fleksibilnijim. Za gornji repo postupak ovo je valjano .gitlab-ci.yml izradite ovu datoteku u korijenu vašeg spremišta:

slika: čvor: najnovije
faze:
- izgraditi
predmemorija:
staze:
- node_modules /
instalacijske_zavisnosti:
faza: graditi
skripta:
- npm instalirati

Imamo samo jednu fazu izgraditi i upravo je npm instalirati kao skripta. Ovo je naredba koju biste morali ručno pokrenuti svaki put kad promjena dođe na vaš projekt. GitLab trkač učinio bi ovo za vas. Pokretač se može instalirati u Kubernetesov klaster, VPS u oblaku ili na vašoj lokalnoj radnoj stanici, a ako je aktivan, čekat će upute s GitLab poslužitelja za izvršavanje gradnje.

Lokalno bismo instalirali i konfigurirali Runner kako bismo ga automatizirali.

Dobivanje žetona trkača

Otvorite svoje spremište na GitLabu i posjetite njegove postavke CD / CI. To je to Postavke → CD / CI unutar vašeg testnog spremišta.

Ostavite postavku Auto DevOps na zadane postavke i kliknite na PROŠIRITI da biste proširili opće postavke cjevovoda i prikazat će vam se žeton trkača. Kopirajte njegovu vrijednost i, naravno, neka bude privatna ako cijenite svoj projekt.

Korištenjem ovog tokena, vaš će se lokalni izvršni program GitLab Runner moći sigurno registrirati na vašoj GitLab instanci.

Instaliranje GitLab Runnera

GitLab-Runner je mali lagani program napisan u programu Go koji pokreće CI poslovi na vašem lokalnom računalu i šalje rezultate GitLabu da razmotri promjene. To je jedna izvršna binarna datoteka koja se može instalirati na bilo koji glavni OS. Slijedite upute ovdje, za vaš određeni operativni sustav. Te se instalacije jako razlikuju pa je popisivanje svih njih neizvedivo.

Alternativno možete koristiti Runner kao Docker uslugu, ali ostanimo samo pri tradicionalnoj instalaciji, jer su naredbe jednostavnije za čitanje i razumijevanje za čitač. Nakon što ga instalirate na lokalnu radnu stanicu, morate izvršiti naredbu:

$ gitlab-runner registar

Ovo će vam postaviti nekoliko pitanja koja počinju s vašim GitLab-CI koordinatorom, koji bi bio vaša GitLab instanca:

$ gitlab-runner registar
Unesite URL koordinatora gitlab-ci (npr.g. https: // gitlab.com /):
https: // gitlab.primjer.com

Zatim će zatražiti vaš Runner Token, koji smo dobili u prethodnom odjeljku:

Unesite gitlab-ci žeton za ovog trkača:

Vaš_Secret_Token

Zatim za neki identifikacijski opis, a možete jednostavno preskočiti dodavanje bilo kojih oznaka pritiskajući :

Unesite opis gitlab-ci za ovog trkača:

[Ime hosta]: Demonstracija za postavljanje CI-a pomoću programa Runner

Unesite gitlab-ci oznake za ovaj trkač (odvojeni zarezom):

Registriranje trkača ... uspjelo

Što je najvažnije, tražit će od vas izvršitelja (više o tome za trenutak), mi ćemo za naš primjer odabrati Docker.

Molimo unesite izvršitelja: docker-ssh + stroj, kubernetes, paralele, ljuska, ssh, virtualbox, docker + stroj, docker, docker-ssh:

lučki radnik

Zatim treba navesti osnovnu sliku dockera unutar koje bi se odvijala izgradnja, naša aplikacija za primjere koristi čvor pa ćemo odrediti sliku čvora:

Unesite zadanu Dockerovu sliku (npr.g. rubin: 2.1):

čvor: najnoviji

Trkač se uspješno registrirao. Slobodno ga pokrenite, ali ako je već pokrenut, konfiguraciju treba automatski ponovo učitati!

Sad je nešto što treba malo objasniti ovdje što su zapravo izvršitelji? Način rada CI-a je taj da su izgradnja modula, njihovo ispitivanje itd. Poznati poslovi a izvršitelji izvršavaju te poslove. Ako ste izabrali VirtualBox kao izvršitelja, tada bi se pokretač GitLab integrirao s lokalno instaliranim VirtualBoxom i pokrenuo CI poslove u VM-u, ako odaberete kubernetes, to bi se dogodilo u vašem klasteru Kubernetes, u oblaku, ako odaberete ssh, možete delegirati CI zadatke na udaljeni poslužitelj.

Naš se ogledni projekt temelji na Dockeru, pa ima smisla koristiti Docker kao našeg izvršitelja. Treba imati Docker instaliran lokalno za ovo.

Imajući više mogućnosti za izvršitelje, Runner postaje fleksibilniji. Možda ćete htjeti graditi lokalno jer su datoteke projekta prevelike ili ćete ih možda htjeti izvršiti na udaljenom poslužitelju s 20 jezgri i pola terabajta RAM-a jer je postupak gradnje računski intenzivan, specificiranje mogućnosti izvršitelja daje vam tu fleksibilnost.

Na kraju, u svojoj ljusci biste željeli pokrenuti uslugu Runner:

$ gitlab-runner start

Vidjevši .gitlab-ci.yml u akciji

Sad smo izvršili sve ove promjene u našem lokalnom repo-u kreirali smo svu aplikaciju.js, paket.json, Dockerfile i .gitlab-ci.yml datoteke. Vjerojatno ste izvršili promjene na svom lokalnom spremištu pokretanjem:

$ git faza ime_datoteke
$ git commit -m “Objavi poruku”

Potisnimo promjene na naš udaljeni GitLab.

$ git push -u porijeklo

Tada svoj projekt možete otvoriti u GitLabu, idite na moj projekt → Cjevovod i vidjet ćete ovu oznaku koja kaže "prošlo" pored obveze koju ste preuzeli. Naknadne obveze također će imati oznake.

Dakle, to su osnove CI-a koji koriste GitLab i Runner. Nadam se da ste uživali u postu i naučili nešto novo iz njega.

HD Remastered igre za Linux koje ranije nisu imale Linux izdanje
Mnogi programeri i izdavači igara dolaze s HD remasterom starih igara kako bi produžili životni vijek franšize, molimo obožavatelje da zatraže kompati...
Kako koristiti AutoKey za automatizaciju Linux igara
AutoKey je uslužni program za automatizaciju radne površine za Linux i X11, programiran na Python 3, GTK i Qt. Koristeći njegovu skriptiranje i MACRO ...
Kako prikazati brojač FPS-a u Linux igrama
Linux gaming dobio je velik poticaj kada je Valve najavio Linux podršku za Steam klijent i njihove igre 2012. godine. Od tada su mnoge AAA i indie igr...