Vandaag zullen we de geschiedenis van de term bespreken, de uitdagingen van CI-implementatie bespreken en enkele populaire tools voorstellen die kunnen helpen bij het werken ermee.
/ Flickr / / / Фото изменено
Term
Continuous Integration (continue integratie) is een benadering voor het ontwikkelen van applicaties die frequent bouwen van projecten en testen van code impliceert.
Het doel is om het integratieproces voorspelbaar te maken en potentiële bugs en fouten in een vroeg stadium te detecteren, zodat er meer tijd is om deze te corrigeren.
De term Continuous Integration werd voor het eerst geïntroduceerd in 1991. Het werd gebruikt door de bedenker van de UML-taal, . De ingenieur presenteerde het CI-concept als onderdeel van zijn eigen ontwikkelingspraktijk - . Hij impliceerde incrementele verfijning van architectuur bij het ontwerpen van object-georiënteerde systemen. Grady beschreef geen specifieke vereisten voor continue integratie. Maar later in zijn boek “” zei hij dat het doel van de methode is om de uitgave van "interne releases" te versnellen.
Geschiedenis
In 1996 werd CI overgenomen door de bedenkers van de methode (XP) - en . Continue integratie werd een van de twaalf belangrijkste principes van hun aanpak. De oprichters van XP verduidelijkten de eisen voor de CI-methode en benadrukten de noodzaak om het project meerdere keren per dag te bouwen.
In het begin van de jaren 2000 begon een van de oprichters van de Agile Alliance, , deze methodologie van continue integratie te promooten. Zijn experimenten met CI leidden tot de ontwikkeling van de eerste softwaretool op dit gebied - CruiseControl. De tool werd gemaakt door Martin's collega, Matthew Foemmel.
De bouwcyclus in de tool is geïmplementeerd als een daemon die periodiek het versiebeheersysteem controleert op wijzigingen in de codebase. De oplossing kan nog steeds worden gedownload - het is onder een BSD-achtige licentie.
Met de opkomst van CI-software begonnen steeds meer bedrijven deze praktijk over te nemen. Volgens een onderzoek van Forrester [p.5 ] gebruikte in 2009 86% van de vijftig ondervraagde technologiebedrijven CI-methoden of implementeerde ze.
Tegenwoordig wordt Continuous Integration (CI) door organisaties in verschillende sectoren toegepast. In 2018 voerde een grote cloudprovider een enquête uit onder IT-professionals van bedrijven in de dienstensector, onderwijs en financiën. Van de zesduizend respondenten antwoordde 58% dat zij CI-tools en -principes in hun werk gebruiken.
Hoe het werkt
De basis van continue integratie bestaat uit twee tools: een versiebeheersysteem en een CI-server. Laatstgenoemde kan zowel een fysiek apparaat als een virtuele machine in de cloud zijn. Ontwikkelaars uploaden één of meerdere keren per dag nieuwe code. De CI-server kopieert deze automatisch samen met alle afhankelijkheden en voert de build uit. Vervolgens start het integratie- en unit-tests. Als de tests succesvol zijn, implementeert het CI-systeem de code.
Een algemeen overzicht van het proces kan als volgt worden weergegeven:

De CI-methodologie stelt een aantal eisen aan ontwikkelaars:
- Problemen onmiddellijk oplossen. Dit principe komt vanuit extreme programmering. Het oplossen van bugs is de hoogste prioriteit voor ontwikkelaars.
- Processen automatiseren. Ontwikkelaars en managers moeten voortdurend op zoek naar bottlenecks in het integratieproces en deze verhelpen. Bijvoorbeeld, vaak is een "bottleneck" in de integratie testen.
- Bouw zo vaak mogelijk. Minstens eens per dag om de teamwerk te synchroniseren.
Moeilijkheden bij implementatie
Het eerste probleem zijn de hoge operationele kosten. Zelfs als een bedrijf open-source CI-tools gebruikt (waarover we verderop zullen praten), moet het nog steeds geld uitgeven aan het onderhouden van de infrastructuur. Cloudtechnologieën kunnen echter een oplossing bieden.
Ze vereenvoudigen de opbouw van verschillende computerc configuraties. Bovendien betaalt een bedrijf alleen voor de gebruikte middelen, wat helpt om kosten te besparen op de infrastructuur.
Volgens enquêtes [p.14 ], verhoogt continue integratie de druk op de medewerkers van het bedrijf (tenminste in het begin). Ze moeten wennen aan nieuwe tools, en collega's helpen niet altijd bij de training. Daarom moeten ze zich "on-the-fly" aanpassen aan nieuwe frameworks en services.
De derde moeilijkheid - problemen met automatisering. Dit komt vaak voor bij organisaties met een grote hoeveelheid legacy-code die niet gedekt is door geautomatiseerde tests. Dit leidt ertoe dat de code gewoon herschreven wordt voordat CI volledig wordt geïmplementeerd.

/ Flickr / /
Wie gebruikt
Een van de eerste die de voordelen van de methode waardeerden waren de IT-reuzen. Google heeft continue integratie sinds het midden van de jaren 2000 geïmplementeerd. CI werd geïntroduceerd om vertragingen in de werking van de zoekmachine op te lossen. Continue integratie hielp om snel problemen te detecteren en op te lossen. Tegenwoordig maken alle afdelingen van de IT-reus gebruik van CI.
Continue integratie helpt ook kleine bedrijven, en daarnaast gebruiken financiële en medische organisaties CI-tools. Bijvoorbeeld, bij Morningstar hielpen CI-services om kwetsbaarheden 70% sneller te patchen. Het medische platform Philips Healthcare wist de tests van updates te verdubbelen in snelheid.
Hulpmiddelen
Hier zijn enkele populaire tools voor CI:
- — een van de meest populaire CI-systemen. Het ondersteunt meer dan duizend plugins voor integratie met verschillende VCS, cloudplatforms en andere diensten. Jenkins wordt ook door ons gebruikt in 1cloud: de tool . Het controleert regelmatig de Git-tak die voor testen is bedoeld.
- — een Python-framework voor het schrijven van eigen continue integratieprocessen. De initiële configuratie van de tool is vrij ingewikkeld, maar dit wordt gecompenseerd door de uitgebreide customization mogelijkheden. Gebruikers waarderen onder andere de lage resourcevereisten van het framework.
- — een server van Pivotal die Docker-containers gebruikt. Concourse CI integreert met alle tools en versiesystemen. Ontwikkelaars merken op dat het systeem geschikt is voor bedrijven van elke grootte.
- — een tool ingebouwd in het versiebeheersysteem GitLab. De service werkt in de cloud en gebruikt YAML-bestanden voor configuratie. Net als Concourse, Gitlab CI Docker-containers, die helpen verschillende processen van elkaar te isoleren.
- — een cloud CI-server die werkt met GitHub, GitLab en BitBucket. Het platform vereist geen langdurige initiële configuratie - in Codeship zijn standaard vooraf ingebouwde CI-processen beschikbaar. Voor kleine (tot 100 builds per maand) en open source projecten is Codeship gratis beschikbaar.
Materialen van onze zakelijke blog:
Bron: habr.com
