TSM - Du-te (GO) și găsește instrumentul

Marius Ciotlos - Delivery Manager


De când am început să lucrez în industria IT, am avut multe roluri diferite, de la dezvoltare software până la suport rețea și suport tehnic computer.

După o perioadă destul de îndelungată de muncă în această industrie, am constatat că puține instrumente sunt cu adevărat inovatoare. De asemnea, multe dintre instrumentele existente sunt se deosebesc între ele prin puține nuanțe sau sunt atât de specifice în sarcina lor încât depinde de tine cum îți formezi procesul de lucru cu ele. În rândurile următoare, voi atrage atenția asupra unui instrument care se numește GO și este dezvoltat de ThoughtWorks. Este dificil de găsit din cauza numelui simplu, elegant, aceasta pe lângă dezavantajul că limbajul de programare GO are același nume.

Ce este acest instrument?

Dar destul cu introducerea; să trecem la detaliile din spatele acestui instrument. GO a fost conceput drept un instrument cu care să poți face "Livrare continuă". Aș dori să evit atingerea acestui subiect, din cauză că există atât de multe lucrări pe această temă și fiecare autor tehnic imprimă terminologiei propria sa particularitate.Este un instrument foarte personalizabil pentru fluxul de lucru. Și mai presus de toate, este acum sursă deschisă (open source ).

Am aflat de GO de abia acum o lună, într-un seminar din cadrul companiei mele. Unii ar putea crede că ni s-au inoculat informații subiective de către vreun furnizor plătit de către ThoughtWorks. Este departe de adevăr. GO era în acel moment doar numele unui instrument obscur (pentru mine). Am fost sceptic în privința instrumentelor complexe "universale", căci am avut partea mea de dezamăgiri cu unele dintre ele, care întotdeauna se promovează drept făcând multe, dar sfârșesc de multe ori prin a te încurca.

Structura lui GO: Privire de ansamblu de la nivel înalt, privind instrumentul din spațiu

GO este un Server →Arhitectură de tip agent, unde ai serverul principal cu UI și mulți agenți care se conectează cu acest Server și primesc comenzi. Agenții pot rula pe Windows, Linux și Mac OSX, și depinde de tine cât de mulți vrei (poți chiar să rulezi mai mulți agenți pe un aparat).

Pe server ai:

Agenții tăi vor avea etichete (tags ) care specifică ceea ce pot face (de exemplu, să ruleze bash , să ruleze python să ruleze GIT, să ruleze SSH), iar operațiile tale (jobs ) au și ele eticheta pentru a specifica resursele de care ai nevoie pentru ca acea lucrare să se deruleze. Serverul doar potrivește agentul potrivit pentru job -ul potrivit!

Ce poți face cu GO?

Noi îl utilizăm pentru punerea în funcțiune a serverelor (server deployments ), rularea testelor și a automatizării de infrastructură. Totuși modul în care este construit, vă permite să-l utilizați pentru multe alte scopuri. Cum funcționează:

Principalele caracteristici care îți permit să atingi acest nivel ridicat de flexibilitate:

Comenzi personalizate

Comenzile personalizate (custom ) sunt o listă de comenzi pe care le poți folosi pentru a face lucruri într-o sarcină. Ce e frumos la GO este că poți rula literalmente orice utilizând un terminal (Linux, Windows, Mac OSX). Dacă comenzile de bază nu sunt suficiente pentru tine, este posibil să îți creezi singur comenzi mai complexe, utilizând scrip t-uri (gândește-te la PowerShell, Python, etc.). Comenzile personalizate îți permit de asemenea să urmărești statutul unei comenzi care tocmai a rulat. Noi am folosit script -uri Python pentru a avea și mai multă flexibilitate în procesarea rezultatului (output-ul) și trimiterea înapoi a "codului status" astfel încât să știi dacă o sarcină (care rulează comanda) a eșuat sau nu.

Artefacte – Construiește și testează

Artefactele sunt al doilea concept grozav în GO, unde o lucrare (care are sarcini multiple cu comenzi personalizate) poate genera un rezultat și tu ai putea să "îi spui" lui GO că acesta este un artefact. Chiar dacă ai doar două tipuri de artefacte permise de GO, Artefactul Build este destul de generic pentru a fi orice. Cu artefactele poți aduce în instrument mai multe informații de la output (rezultat), dar poți de asemenea să le furnizezi pentru utilizare într-o Etapă diferită sau la un Produs în dezvoltare diferit. Imaginați-vă un scrip t care generează un binar temporar de care ai nevoie mai încolo în cursul dezvoltării produsului. Ai putea utiliza artefacte pentru a nu mai avea nevoie de un repo extern pentru ceva care este atât de volatil. De asemenea, Artefactele Test sunt felul în care GO poate interpreta rezultatele testelor pentru o Etapă.

Pe baza artefactelor poți avea niște tab -uri speciale care să încarce HTML-ul pe care l-ai generat cu o comandă, pentru a-l vedea direct în instrument.

Configurația XML

Întreaga configurație pentru server stă într-o versiune de fișier XML. Dacă interfața pentru utilizator nu este suficientă, poți oricând să editezi manual. Această funcție este disponibilă numai pentru Super Admin deoarece este foarte ușor și posibil să încurci lucrurile de acolo. Configurația XML stă într-o zonă de text care are multă validare, dar un lucru pe care probabil îl vei face în timp ce îți definești fluxul de lucru este să redenumești anumite Produse care sunt în dezvoltare, iar acest lucru poate să îți cauzeze probleme.

Bibliografie

Forum public: https://groups.google.com/forum/#!forum/go-cd

Documentație: https://go.app.betfair/go/help/index.html

Pagină comunitate mai veche: http://support.thoughtworks.com/categories/20002778-Go-Community-Support

Webinar introductiv: http://www.go.cd/2014/03/10/go-webinar-recording.html