Tools voor continue integratie
De tools die codewijzigingen in softwareprojecten automatiseren.
Max Rehkopf
Mede-auteur
Continue integratie (CI) is een agile en best practice voor DevOps waarmee meerdere ontwikkelaars in een snel tempo bijdragen kunnen leveren en samenwerken in een gedeelde codebasis. Zonder continue integratie is samenwerking tussen ontwikkelaars een moeizaam handmatig proces voor het coördineren van code-updates en samenvoegingen.
De pijlers van continue integratie
CI is gebaseerd op best practices voor agile en DevOps-softwareontwikkeling, waaronder geautomatiseerd testen, versiebeheer, bouwautomatisering en geautomatiseerde implementaties. Elk van deze pijlers van continue integratie heeft zijn eigen ecosysteem van tools en filosofieën. Leveranciers van tools voor softwareontwikkeling zijn begonnen met het aanbieden van een volledig CI-as-a-Service-aanbod dat deze pijlers bundelt in één holistisch pakket. Laten we de basis eens bekijken om het gebundelde aanbod beter te begrijpen
Versiebeheer met bronbeheer
Waarschijnlijk de belangrijkste fundamentele pijler van continue integratie is versiebeheer met bronbeheer. Het wordt gebruikt om te communiceren en bewerkingsconflicten op te lossen tussen meerdere ontwikkelaars die in dezelfde codebase werken. Versiebeheer met bronbeheer is beschikbaar in verschillende tools, waarvan Git en Subversion het populairst zijn. Bij CI-as-a-Service-producten draait het om het versiebeheersysteem.
Geautomatiseerd testen
De meeste serieuze softwareprojecten bevatten een aanvullende codebase die niet expliciet verantwoordelijk is voor het bedrijfsproduct en de functies. Deze secundaire codebase is een testsuite en fungeert als een reeks beweringen die verzekeren dat de primaire codebase correct werkt zonder fouten. Tijdens de ontwikkeling worden deze tests uitgevoerd door ontwikkelaars om te valideren dat nieuwe code geen regressie heeft veroorzaakt op bestaande functies. Deze testcases kunnen ook worden uitgevoerd met externe tools om dit validatieproces te automatiseren. CI-serviceproducten voeren de testcases voor een project automatisch uit op gebeurtenissen die door de gebruiker gespecificeerd zijn. Als een ontwikkelaar code pusht via het versiebeheersysteem, wordt in het algemeen de volledige testsuite automatisch uitgevoerd.
Oplossing bekijken
Software bouwen en gebruiken met Open DevOps
Product besproken
Werk samen, test en implementeer code
Automatisering van builds
“Builds” zijn de artefacten die zijn gemaakt om een momentopname te maken van de huidige releaseversie van een softwareproject. Builds worden via verschillende netwerken aan eindgebruikers gedistribueerd. Over het algemeen zijn er een aantal vaste stappen die een project zal nemen om een build artefact te maken. CI-tools helpen dit bouwproces te stroomlijnen met behulp van automatische triggers van het versiebeheersysteem. Een voorbeeld van een trigger is: wanneer nieuwe code wordt samengevoegd met de productie-branch van de codebase, upload dan de build naar een externe server zodat gebruikers deze kunnen downloaden.
Geautomatiseerde implementatie
Wanneer builds klaar zijn om te worden gedistribueerd, doorlopen ze een implementatieproces. Afhankelijk van het project kan de implementatie verschillende resultaten hebben. Webprojecten worden bijvoorbeeld geïmplementeerd op openbaar toegankelijke webservers. Tijdens deze implementatie wordt het artefact dat tijdens de bouwfase werd gegenereerd, naar de webservers gekopieerd. Het implementatieproces voor mobiel en desktop varieert en kan bestaan uit het uploaden naar een 'winkel', zodat gebruikers de app kunnen downloaden.
Vergelijking van tools voor continue integratie
1. Bitbucket Pipelines
Samenvatting: Bitbucket Pipelines is een CI-tool die rechtstreeks is geïntegreerd in Bitbucket, een systeem voor versiebeheer in de cloud dat wordt aangeboden door Atlassian. Bitbucket Pipelines is een eenvoudige volgende stap om CI in te schakelen als je project al op Bitbucket staat. Bitbucket Pipelines worden beheerd als code, zodat je eenvoudig commits van pipeline-definities kunt maken en builds kunt starten. Bovendien biedt Bitbucket Pipelines CD aan. Dit betekent dat projecten die zijn gebouwd met Bitbucket Pipelines ook kunnen worden geïmplementeerd in de productie-infrastructuur
Functies:
- Eenvoudige installatie en configuratie
- Uniforme Bitbucket-ervaring
- Cloud van een 3e partij
2. Jenkins
Samenvatting: Jenkins is een ervaren CI-tool met een lange bewezen staat van dienst. Het is open source en wordt aangestuurd door updates uit de community. Jenkins is in de eerste plaats bedoeld voor een installatie op locatie. Jenkins is een geweldige optie als je organisatie support op locatie nodig heeft voor het verwerken van gevoelige data, zoals HIPAA-nalevingsgegevens.
Functies:
- Op locatie
- Open Source
- Robuust ecosysteem voor add-ons en plug-ins
Website: https://jenkins.io/
3. AWS CodePipeline
Samenvatting: Amazon Web Services is een van de meest dominante aanbieders van cloudinfrastructuur op de markt. Ze bieden tools en diensten voor allerlei taken op het gebied van infrastructuur en code-ontwikkeling. CodePipeline is hun aanbod van CI Tools. CodePipeline kan rechtstreeks worden gekoppeld aan andere bestaande AWS-tools om een naadloze AWS-ervaring te bieden.
Functies:
- Volledig cloud
- Geïntegreerd met Amazon Web Services
- Aangepaste ondersteuning voor plug-ins
- Robuuste toegangscontrole
Website: https://aws.amazon.com/codepipeline/
4. CircleCI
Samenvatting: CircleCI is een CI-tool die perfect samengaat met Github, een van de populairste cloudhostingtools voor versiebeheersystemen. CircleCI is een van de meest flexibele CI-tools omdat het een matrix van versiebeheersystemen, containersystemen en leveringsmechanismen ondersteunt. CircleCI kan op locatie worden gehost of via een cloudaanbod worden gebruikt.
Functies:
- Meldingen-triggers op basis van CI-gebeurtenissen
- Geoptimaliseerde prestaties voor snelle builds
- Eenvoudig debuggen via SSH en lokale builds
- Analyses om de prestaties van builds te meten
Website: https://circleci.com/
5. Azure Pipelines
Samenvatting: Azure is het platform voor cloudinfrastructuur van Microsoft, het Microsoft-equivalent van Amazon Web Services. Net als de eerder genoemde AWS CodePipeline, biedt Azure een CI-tool die volledig is geïntegreerd in de Azure-suite van hostingtools.
Functies:
- Integratie met het Azure Platform
- Support voor Windows-platform
- Support voor containers
- Github-integratie
Website: https://azure.microsoft.com
6. GitLab
Samenvatting: Gitlab is een nieuwe CI-tool die een volledige DevOps-ervaring biedt. Gitlab is opgericht met de bedoeling om de algemene ervaring van Github te verbeteren. Gitlab biedt een moderne UX met support voor containers.
Functies:
- Host op locatie of in de cloud
- Doorlopende beveiligingstests
- Eenvoudig te leren UX
Website: https://about.gitlab.com
7. Atlassian Bamboo
Samenvatting: Nog een CI-aanbod van Atlassian. Waar Bitbucket Pipelines puur in de cloud gehost wordt, biedt Bamboo een alternatief dat zelf wordt gehost.
Functies:
- Beste integratie met de productsuite van Atlassian
- Een uitgebreide markt voor add-ons en plug-ins
- Support voor containers met Docker-agents
- Trigger-API voor IFTTT-functionaliteit
Website: https://www.atlassian.com/software/bamboo
Wat is de beste CI-tool voor jouw bedrijf?
Bij het kiezen van een CI-tool voor je team zijn er een aantal belangrijke factoren waar je tijdens het beslissen rekening mee moet houden.
Support voor het versiebeheersysteem
De belangrijkste pijler van een CI/CD-systeem is de support en integratie van het onderliggende versiebeheersysteem (VCS). De populairste VCS's zijn Git, Subversion, Mercurial en Perforce. CI-tools in de cloud bieden mogelijk support voor sommige of al deze VCS's. Het is van cruciaal belang om een CI-tool te kiezen die support biedt voor de VCS's van je projecten.
Op locatie versus in de cloud
Sommige van de eerdergenoemde CI-tools, zoals Jenkins, kunnen op locatie worden geïnstalleerd. Dit betekent dat je team verantwoordelijk is voor het configureren en beheren van het CI-systeem op je eigen infrastructuur. Dit kan nuttig zijn om privacy- en veiligheidsredenen. Als je bijvoorbeeld zorgen hebt over de privacy van klantgegevens om te voldoen aan de nalevingsnormen, kan op locatie een vereiste zijn. Daarnaast kunnen installaties op locatie uitgebreidere aanpassings- en configuratieopties bieden.
Op locatie kan extra werk leveren dat niet voldoet aan de kernbehoeften van je bedrijf. Cloud-opties besteden het beheer van de CI Tool uit aan een externe leverancier. Het bedrijf dat de cloud host zorgt vervolgens voor de uptime, support en schaalbaarheid van de CI-tool, zodat je team zich kan concentreren op de belangrijkste bedrijfsbehoeften. Dit kan een groot voordeel zijn voor teams met een beperkt budget of voor kleinere bedrijven die een sterke focus nodig hebben op doelstellingen die gericht zijn op de productmarkt.
Support voor containers
Containerisatie is een trend in de ontwikkeling van moderne software. Containerisatie maakt de distributie van een onveranderlijke, herhaalbare, geïsoleerde kopie van een applicatie mogelijk. Containerisatie wordt mogelijk gemaakt door tools zoals Docker en Kubernetes. Moderne CI-tools ondersteunen de integratie van containers in het CI/CD-proces. Containers lossen het probleem “Bij mij werkt het wel” op. Ervoor zorgen dat de code van een toepassing is verpakt in een bevroren momentopname van afhankelijkheden op systeemniveau. Dit garandeert dat wanneer de code van je team wordt uitgevoerd op de CI-tool, deze een kopie is van de lokale omgeving. Dit elimineert een hele reeks problemen op het gebied van omgevingsgelijkheid die zich voordoen zonder containers.
Plug-ins en integraties met derden
CI-tools worden nog nuttiger als ze worden geïntegreerd met de rest van je technische stack. Analyses over de efficiëntie en prestaties van het technische team kunnen worden verzameld met behulp van CI-tools. Toepassingen voor het plannen van sprints kunnen worden gekoppeld aan CI-tools om de sprintstatus automatisch bij te werken wanneer de code is afgeleverd. Deze integraties kunnen worden gebruikt als leidraad voor KPI's en roadmaps voor technische teams.
Aan de slag met CI
Een moderne CI-tool is een essentiële vereiste om een technisch team van hoogstaande kwaliteit mogelijk te maken. Technische teams kunnen hun communicatie- en leveringssnelheden optimaliseren door een CI-tool te gebruiken. De markt biedt veel populaire CI-tools. De belangrijkste concepten waarmee rekening moet worden gehouden bij het kiezen van een CI-tool zijn support voor versiebeheersystemen, hosting op locatie versus in de cloud, implementatiepijplijnen en integraties van externe applicaties.
Lees onze handleidingen
Je kunt verschillende gedetailleerdere handleidingen en tutorials vinden om je te helpen aan de slag te gaan met deze praktijken.
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.