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 engineering methode waarbij een team softwareproducten ontwikkelt in een korte cyclus. Het zorgt ervoor dat software op elk moment eenvoudig kan worden vrijgegeven. Het hoofddoel van continue levering is om software te bouwen, testen en vrijgeven met een goede snelheid en frequentie. Het helpt u om de kosten, tijd en risico's van het leveren van wijzigingen te verminderen door frequente updates in productie toe te staan.
Wat is het verschil tussen CI en CD?
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
Terwijl compilatie alleen een code compileert, voert CI de volgende activiteiten uit
DB-integratie
- Zorg ervoor dat de database en code synchroon zijn
- 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?
- 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?
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.
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
- Sterkere controle over broncode
- 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 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 is een continue integratie build server die automatisch bouwt, test en releases uitvoert op één plek. Het werkt naadloos met JIRA software en Bitbucket. Bamboo ondersteunt veel talen en technologieën zoals CodeDeply, Docker, Git, SVN, Mercurial, AWS en Amazon S3 emmers.
TeamCity
TeamCity is een Continuous Integration-server die veel 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
Samenvatting
- 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 Azure Een continu integratieproces bestaat uit het vroeg vastleggen en het vaak nooit plegen 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.