Wat is CI/CD? Continue integratie en continue levering

Wat is continue integratie (CI)?

Continue integratie is een softwareontwikkelmethode waarbij teamleden hun werk minimaal één keer per dag integreren. Bij deze methode wordt elke integratie gecontroleerd door een geautomatiseerde build om fouten op te sporen. Dit concept werd meer dan twintig jaar geleden voor het eerst geïntroduceerd om de ‘integratiehel’ te voorkomen, wat gebeurt wanneer de integratie wordt uitgesteld tot het einde van een project.

Bij Continuous Integration wordt de software na een code-commit onmiddellijk gebouwd en getest. In een groot project met veel ontwikkelaars worden commits vele malen per dag gemaakt. Bij elke commit wordt code gebouwd en getest. Als de test slaagt, wordt de build getest voor implementatie. Als de implementatie succesvol is, wordt de code naar Productie gepusht. Dit vastleggen, bouwen, testen en implementeren is een continu proces, vandaar de naam continue integratie/implementatie.

Wat is continue levering (CD)?

Continue levering is een software-engineeringmethode waarbij een team in een korte cyclus softwareproducten ontwikkelt. Het zorgt ervoor dat software op elk moment eenvoudig kan worden vrijgegeven. Het belangrijkste doel van continue levering is het bouwen, testen en vrijgeven van software met een goede snelheid en frequentie. Het helpt u de kosten, tijd en risico's van het doorvoeren van wijzigingen door allo te verminderenwing voor frequente updates in de productie.

Wat is het verschil tussen CI en CD?

CI versus CD: Continuous Integration (CI) is een benadering waarbij elke wijziging in de codebase automatisch wordt getest, terwijl Continuous Delivery (CD) een benadering is om wijzigingen in nieuwe functies, configuratie en bugfixes te verkrijgen.

Ontwikkeling zonder CI versus ontwikkeling met CI

Hier volgen de belangrijkste verschillen tussen ontwikkeling met of zonder 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 Continue integratietests vinden vroeg en vaak plaats.
Het genoemde probleem is moeilijker op te lossen Vind en los problemen sneller en efficiënter op.
Slechte projectzichtbaarheid Betere zichtbaarheid van projecten

Verschil tussen compilatie en continue integratie

Activiteiten in continue integratie
Activiteiten in continue integratie

Terwijl compilatie alleen code compileert, doet CI het volgendewing activiteiten

DB-integratie

  • Zorg ervoor dat DB en code zijn ingevoerd sync
  • Geautomatiseerde creatie van DB- en testgegevens.

Code-inspectie

  • Zorgt voor een gezonde codebase
  • Signaleert problemen vroegtijdig en past best practices toe

Geautomatiseerde implementatie

  • Hiermee kunt u het product op elk gewenst moment vrijgeven
  • Continu demo-bare staat en het werkt op elke machine

Document generatie

  • Zorg ervoor dat de documentatie actueel is
  • Verwijdert gebrand van de ontwikkelaar
  • Produceert buildrapporten en statistieken

Compilatie

Compilatie is het proces dat de computer doorloopt om een ​​programmeertaalcode op hoog niveau om te zetten in een machinetaal die de computer kan begrijpen. Het zorgt voor een codecompiler op elk doelplatform.

Wanneer bouw ik?

  • Bij elke check-in
  • Iedere keer verandert er een afhankelijkheid

Welke stappen zijn er bij continue integratie?

CI-proces
CI-proces
  • Idealiter zou de build vanaf de opdrachtregel moeten komen en niet afhankelijk zijn van een geïntegreerde ontwikkelomgeving (IDE).
  • De build moet continu plaatsvinden met behulp van een speciale Cl-server, en niet met een cron-taak.
  • CI build moet bij elke check-in worden geactiveerd en niet alleen om middernacht
  • De build moet onmiddellijke feedback opleveren en geen inspanning van de ontwikkelaar vereisen
  • Identificeer de belangrijkste statistieken en volg ze visueel. Wat nog belangrijker is: handel er onmiddellijk naar

Wat heb je nodig om het CI-proces uit te voeren?

Voer het CI-proces uit

Dit zijn de belangrijkste elementen die u nodig hebt om het gehele CI-proces uit te voeren:

  • Versiebeheersysteem (VCS): Het biedt een betrouwbare methode om wijzigingen die in de loop van de tijd in uw project zijn aangebracht, te centraliseren en te behouden.
  • Virtuele machine: U moet over een reserveserver beschikken, of tenminste één virtuele machine om uw systeem te bouwen.
  • Gehoste CI-tooloplossingen: Om servers of virtuele machines te vermijden, moet u kiezen voor gehoste CI-tooloplossingen. Deze tool helpt bij het onderhoud van het hele proces en biedt eenvoudiger schaalbaarheid.
  • Tools: Als u een door uzelf gehoste variant selecteert, moet u een van de vele installeren CI-tools zoals Jenkins, TeamCity, Bamboo, GitLab, enz.

Hoe werkt continue integratie?

Je kent vast wel de oude telefoon van Nokia. Nokia implementeerde vroeger een procedure genaamd nightly build. Na meerdere commits van diverse ontwikkelaars gedurende de dag werd de software elke nacht gebouwd. Omdat de software maar één keer per dag werd gebouwd, is het enorm lastig om de fouten in een grote codebase te isoleren, identificeren en repareren.

Later, adopteerden ze de Continuous Integration-aanpak. De software werd gebouwd en getest zodra een ontwikkelaar code had vastgelegd. Als er een fout wordt gedetecteerd, kan de betreffende ontwikkelaar het defect snel herstellen.

Voorbeeld van continue integratie
Voorbeeld van continue integratie

Kenmerken van CI

Hier volgen belangrijke kenmerken en voordelen van continue integratie:

  • Hiermee kunt u slechts één bronrepository onderhouden
  • U kunt de kloon van de productie-CI-omgeving testen
  • De gebouwde omgeving moet dicht bij de productieomgeving liggen.
  • Een van de voordelen van continue integratie is de constante beschikbaarheid van een huidige build
  • Het volledige proces van bouwen, testen en implementeren moet zichtbaar zijn voor alle stackhouders.

Waarom CI gebruiken?

Hier zijn belangrijke redenen om Continuous Integration te gebruiken:

  • Helpt u software van betere kwaliteit te bouwen
  • Het CI-proces helpt bij het opschalen van het personeelsbestand en de leveringsoutput van technische teams.
  • Met CI kunnen softwareontwikkelaars onafhankelijk en parallel aan functies werken.
  • Helpt u herhaalbare tests uit te voeren
  • Vergroot de zichtbaarheid en maak betere communicatie mogelijk
  • Helpt bij het ontwikkelen van een potentieel verzendbaar product voor volledig geautomatiseerde bouw
  • Helpt u risico's te verminderen door de implementatie sneller en voorspelbaarder te maken
  • onmiddellijke feedback wanneer het probleem zich voordoet
  • Voorkom verwarring op het laatste moment over de releasedatum en -timing

Best practices voor het gebruik van CI-systemen

Hier volgen enkele belangrijke best practices tijdens de implementatie

  • Vroegtijdig plegen en vaak nooit plegen. Gebrekkige code plegen
  • Los buildfouten onmiddellijk op
  • Handel op basis van statistieken
  • Ingebouwde elke doelomgeving Creëer artefacten van elke build
  • De bouw van de software moet zodanig worden uitgevoerd dat deze kan worden geautomatiseerd
  • Wees niet afhankelijk van een IDE
  • Bouw en test alles wanneer het verandert
  • Het databaseschema telt als alles
  • Helpt u belangrijke statistieken te achterhalen en deze visueel bij te houden
  • Vaak en vroeg inchecken
  • Sterker broncodebeheer
  • Bij continue integratie worden unit-tests uitgevoerd telkens wanneer u code vastlegt
  • Automatiseer de build en test iedereen
  • Houd de build snel met geautomatiseerde implementatie

Nadelen van CI

Hier zijn de nadelen/nadelen van het continue integratieproces:

  • De initiële installatietijd en training zijn vereist om vertrouwd te raken met de Cl-server
  • Het ontwikkelen van geschikte testprocedures is essentieel
  • Een goed ontwikkelde testsuite vereiste veel bronnen voor de Cl-server
  • Conversie van bekende processen
  • Vereist extra servers en omgevingen
  • Er kunnen wachttijden optreden wanneer meerdere ontwikkelaars hun code rond dezelfde tijd willen integreren

Tools voor CI-proces

Hier volgen enkele van de meest essentiële CI/CD-tools:

Jenkins

Jenkins

Jenkins is een open-source software voor continue integratie. Het is geschreven met behulp van de Java programmeertaal. Het vergemakkelijkt real-time testen en rapporteren over geïsoleerde wijzigingen in een grotere codebase. Deze software helpt ontwikkelaars om snel defecten in hun codebase te vinden en op te lossen en het testen van hun builds te automatiseren.

Bamboo

Bamboo

Bamboo is een build-server voor continue integratie die automatisch op één plek bouwt, test en releaset. Het werkt naadloos samen met JIRA-software en Bitbucket. Bamboo ondersteunt vele talen en technologieën, zoals CodeDeply, Ducker, Git, SVN, Mercurial, AWS en Amazon S3 emmers.

TeamCity

TeamCity

TeamCity is een Continuous Integration-server die vele krachtige functies ondersteunt. Het houdt een CI-server gezond en stabiel, zelfs als er geen builds actief zijn. Het biedt een betere codekwaliteit voor elk project

Samengevat

  • Definitie van continue integratie: Continue integratie is een softwareontwikkelingsmethode waarbij leden van het team hun werk minstens één keer per dag kunnen integreren
  • CI/CD betekent combinatie van continue integratie en continue levering of continue implementatie.
  • Ontwikkeling zonder CI veroorzaakt veel bugs, terwijl ontwikkeling met CI minder bugs oplevert
  • Belangrijke activiteiten van Continuous Integration zijn 1) DB-integratie, 2) Code-inspectie, 3) Geautomatiseerde implementatie, documentgeneratie en compilatie.
  • De build moet continu plaatsvinden met behulp van een speciale Cl-server, en niet met een cron-taak.
  • Belangrijke elementen van CI zijn 1) Versiebeheersysteem 2) Virtuele machine 3) Host CI Tool-oplossingen 4) Tools
  • Dankzij het Continuous Integration-systeem kunt u slechts één bronrepository onderhouden
  • Het CI/CD-proces helpt u software van betere kwaliteit te bouwen
  • De belangrijkste best practices van het Azure Continuous Integration-proces zijn het vroegtijdig vastleggen en het vaak nooit vastleggen van gebroken code
  • Het grote nadeel van de CI/CD-pijplijn proces is dat een goed ontwikkelde testsuite veel bronnen nodig had voor de Cl-server
  • Jenkins, Bambook en Team City zijn enkele nuttige AWS Continuous Integratiehulpmiddelen.