Continuous integration

De la Wikipedia, enciclopedia liberă

Continuous integration (CI) este practica din ingineria software de unificare a spațiilor de lucru ale dezvoltatorilor într-un depozit comun de mai multe ori pe zi. A fost pentru prima oară denumită astfel și propusă în cadrul practicii de Extreme programming⁠(d) (XP). Scopul său principal este cel de a evita problemele de integrare, denumite „integration hell” în primele descrieri de XP. CI poate fi văzut ca o intensificare a practicilor de integrare periodică promovate de metodele deja publicate ale dezvoltării de software prin proces incremental-iterativ, cum ar fi metoda Booch. CI nu este universal acceptat ca o îmbunătățire față de integrarea frecventă, cele două rămânând două forme distincte.

CI a fost creat la început cu intenția de a fi utilizat în combinație cu testele automate scrise prin practicile de Test-driven development⁠(d), ceea ce a presupus rularea tuturor testelor unitare și verificarea că acestea trec înainte de comiterea modificărilor în depozitul central. Alte elaborări ale conceptului au introdus și servere de build, care rulează automat testele unitare periodic, sau chiar după fiecare commit, raportând dezvoltatorului rezultatele. Utilizarea serverelor de build (care nu neapărat rulează și testele unitare) intrase deja în practica unor echipe din exteriorul comunității XP. Astăzi, multe organizații au adoptat CI fără a adera complet la XP.

Pe lângă testele unitare automate, organizațiile care utilizează CI folosesc de regulă un server de build pentru a implementa procesele continue de aplicare a controlului calității în general — efort redus, dar aplicat frecvent. Pe lângă rularea testelor unitare și de integrare, asemenea procese rulează și alte teste statice și dinamice, măsoară și analizează performanța, extrag și formatează documentația din codul sursă și facilitează procesele manuale de QA. Această aplicare continuă a controlului calității urmărește îmbunătățirea calității software-ului și reducerea timpului de livrare, înlocuind practica tradițională de aplicare a controlului calități numai după terminarea tuturor activităților de dezvoltare, ceva foarte similar cu ideea inițială a integrării mai frecvente pentru simplificarea integrării în ansamblul ei, aplicată doar proceselor de QA.

În aceeași idee, practica de Continuous delivery⁠(d) extinde CI și mai mult, asigurând că software-ul comis pe depozitul central este întotdeauna într-o stare ce poate fi livrată utilizatorilor și face procesul de dezvoltare mai rapid.