Wat is CI/CD? Continue integratie en continue levering
โก Slimme samenvatting
Continue integratie is een softwareontwikkelingsmethode waarbij teamleden hun werk minstens dagelijks samenvoegen in een gedeelde repository. Elke commit activeert een geautomatiseerde build en test om integratiefouten vroegtijdig op te sporen.

Wat is continue integratie (CI)?
Continue integratie Integratie is een softwareontwikkelingsmethode waarbij teamleden hun werk minstens รฉรฉn keer per dag integreren. Elke integratie wordt geverifieerd door een geautomatiseerde build die fouten detecteert. Het concept werd meer dan twintig jaar geleden geรฏntroduceerd om "integratiehel" te voorkomen, die ontstaat wanneer integratie wordt uitgesteld tot het einde van een project.
Na een codecommit wordt de software direct gebouwd en getest. In een groot project met veel ontwikkelaars vinden commits meerdere keren per dag plaats. Bij elke commit wordt de code gebouwd en getest; als de test slaagt, wordt de build gecontroleerd op implementatie; en als de implementatie succesvol is, wordt de code naar productie gepusht. Deze cyclus van committen, bouwen, testen en implementeren is continu, wat de werkwijze zijn naam geeft.
Wat is continue levering (CD)?
Continue levering Het is een softwareontwikkelingsmethode waarbij een team software ontwikkelt in korte cycli en ervoor zorgt dat deze op elk moment betrouwbaar kan worden uitgebracht. Het doel is om software snel en frequent te bouwen, te testen en uit te brengen, waardoor de kosten, de tijd en het risico van het doorvoeren van wijzigingen door middel van frequente productie-updates worden verminderd.
Verschil tussen CI en CD
Continue integratie Testen is een aanpak waarbij elke wijziging in de codebase automatisch wordt getest, terwijl Continuous Delivery een aanpak is om wijzigingen zoals nieuwe functionaliteiten, configuraties en bugfixes veilig en snel in productie te brengen.
Ontwikkeling zonder CI versus ontwikkeling met CI
| Ontwikkeling zonder CI | Ontwikkeling met CI |
|---|---|
| Veel bugs | Minder fouten |
| Onregelmatige commits | Regelmatige verplichtingen |
| Onregelmatige en langzame releases | Regelmatige werkreleases |
| Moeilijke integratie | Eenvoudige en effectieve integratie |
| Het testen gebeurt laat | Testen gebeurt vroeg en vaak. |
| Problemen zijn moeilijker op te lossen. | Problemen worden sneller gevonden en opgelost. |
| Slechte projectzichtbaarheid | Betere zichtbaarheid van projecten |
Verschil tussen compilatie en continue integratie
Terwijl compilatie alleen code omzet in machinetaal, voert CI verschillende bredere activiteiten uit:
- DB-integratie: Zorgt ervoor dat de database en de code gesynchroniseerd blijven en automatiseert het aanmaken van de database en testgegevens.
- Code inspectie: Zorgt voor een gezonde codebase, identificeert problemen vroegtijdig en past best practices toe.
- Geautomatiseerde implementatie: Hiermee kunt u het product op elk gewenst moment uitbrengen en blijft het continu in een demo-bare staat.
- Documentgeneratie: Zorgt ervoor dat de documentatie actueel blijft en genereert rapporten en statistieken over de build.
- Compilatie: Converteert code op hoog niveau naar machinetaal en zorgt ervoor dat deze op elk doelplatform compileert.
Idealiter wordt de build uitgevoerd vanaf de commandoregel in plaats van afhankelijk te zijn van een IDE, vindt deze continu plaats op een dedicated CI-server (niet via een cronjob), wordt deze geactiveerd bij elke commit en levert deze direct feedback op zonder tussenkomst van de ontwikkelaar.
Wat heb je nodig om het CI-proces uit te voeren?
- Versiebeheersysteem (VCS): Een betrouwbare methode om wijzigingen die in de loop der tijd in uw project zijn aangebracht, te centraliseren en te bewaren.
- Virtuele machine: Een reserveserver of minstens รฉรฉn virtuele machine om uw systeem te bouwen.
- Gehoste CI-tooloplossingen: Om het beheer van servers te vermijden, verzorgen gehoste oplossingen het volledige proces en bieden ze een eenvoudigere schaalbaarheid.
- Tools: Als u kiest voor een zelfgehoste variant, installeer dan een CI-tool zoals Jenkins, TeamCity, Bambooof GitLab.
Hoe werkt continue integratie?
Een oud voorbeeld is Nokia, dat ooit een procedure gebruikte die 'nightly build' heette. Na meerdere commits van veel ontwikkelaars gedurende de dag, werd de software elke nacht opnieuw gebouwd. Omdat dit slechts รฉรฉn keer per dag gebeurde, was het isoleren, identificeren en corrigeren van fouten in een grote codebase een moeizaam proces.
Later Het team implementeerde Continuous Integration. De software werd gebouwd en getest zodra een ontwikkelaar code commitde, waardoor eventuele fouten direct werden gedetecteerd en de verantwoordelijke ontwikkelaar het defect snel kon verhelpen.
Kenmerken van CI
- Hiermee kunt u รฉรฉn centrale broncodeopslagplaats beheren.
- Hiermee kunt u een kloon van de productieomgeving testen, die dicht bij de productieomgeving is geplaatst.
- Zorgt voor constante beschikbaarheid van de meest recente versie.
- Maakt het volledige bouw-, test- en implementatieproces inzichtelijk voor alle betrokkenen.
Waarom CI gebruiken?
- Helpt je bij het ontwikkelen van software van betere kwaliteit en het uitvoeren van herhaalbare tests.
- Het schaalt de output van engineeringteams op en stelt ontwikkelaars in staat om parallel aan functionaliteiten te werken.
- Verbetert de zichtbaarheid en communicatie binnen het team.
- Biedt directe feedback wanneer zich een probleem voordoet en verlaagt het risico door de implementatie sneller en voorspelbaarder te maken.
- Voorkomt verwarring op het laatste moment bij de release.
Beste werkwijzen voor het gebruik van CI-systemen
- Commit code vroeg en vaak, en commit nooit code die niet werkt.
- Los buildfouten direct op en onderneem actie op basis van de statistieken.
- Bouw in elke doelomgeving en creรซer artefacten van elke build.
- Automatiseer het bouwproces zodat het niet afhankelijk is van een IDE.
- Bouw en test alles opnieuw wanneer het verandert, inclusief het databaseschema.
- Houd het bouwproces snel en maak gebruik van geautomatiseerde implementatie.
Nadelen van CI
- Het kost tijd en training om aan een CI-server te wennen.
- Er moeten geschikte testprocedures worden ontwikkeld, en een goed opgebouwde testsuite vereist aanzienlijke middelen.
- Bekende processen moeten worden omgezet en er zijn extra servers en omgevingen nodig.
- Er kunnen wachttijden ontstaan โโwanneer meerdere ontwikkelaars tegelijkertijd hun code willen integreren.
Hulpmiddelen voor het CI-proces
Jenkins
Jenkins is een open-source tool voor continue integratie, geschreven in JavaHet maakt realtime testen en rapporteren van geรฏsoleerde wijzigingen in een grotere codebase mogelijk en helpt ontwikkelaars om snel defecten te vinden en op te lossen, terwijl het tegelijkertijd het testen van de build automatiseert.
Bamboo
Bamboo is een continue integratie buildserver die geautomatiseerde builds, tests en releases op รฉรฉn plek uitvoert. Het werkt naadloos samen met Jira en Bitbucket en ondersteunt vele technologieรซn zoals Docker, Git, SVN, Mercurial en AWS.
TeamCity
TeamCity Het is een continue integratieserver met vele krachtige functies. Het houdt de CI-server gezond en stabiel, zelfs wanneer er geen builds draaien, en zorgt voor een betere codekwaliteit voor elk project.
