Referentie: hoe het proces van Continuous Integration is opgezet

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.

Referentie: hoe het proces van Continuous Integration is opgezet
/ Flickr / Altug Karakoc / CC BY / Фото изменено

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, Grady Booch . De ingenieur presenteerde het CI-concept als onderdeel van zijn eigen ontwikkelingspraktijk - de Booch-methode. 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 “Object-Oriented Analysis and Design with Applications” 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 Extreme Programming (XP) - Kent Beck en Ron Jeffries . 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, Martin Fowler , 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 wordt verspreid 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 rapport] 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:

Referentie: hoe het proces van Continuous Integration is opgezet

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 blijkt 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 Als het gaat om Rusland, zijn Moskouse bedrijven alleen voor de gebruikte middelen, wat helpt om kosten te besparen op de infrastructuur.

Volgens enquêtes [p.14 artikel], 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.

Referentie: hoe het proces van Continuous Integration is opgezet
/ Flickr / theilr / CC BY-SA

Wie gebruikt

Een van de eerste die de voordelen van de methode waardeerden waren de IT-reuzen. Google gebruikt 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:

  • Jenkins — 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 maakt deel uit van ons DevOps-systeem. Het controleert regelmatig de Git-tak die voor testen is bedoeld.
  • Buildbot — 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.
  • Concourse CI — 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.
  • Gitlab CI — een tool ingebouwd in het versiebeheersysteem GitLab. De service werkt in de cloud en gebruikt YAML-bestanden voor configuratie. Net als Concourse, Gitlab CI maakt gebruik van Docker-containers, die helpen verschillende processen van elkaar te isoleren.
  • Codeship — 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

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster