Close

Tools voor continue integratie

De tools die codewijzigingen in softwareprojecten automatiseren.

Profielfoto van Max Rehkopf
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

Bitbucket-logo
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

Website: https://bitbucket.org/product/features/pipelines

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.

Max Rehkopf
Max Rehkopf

Als een zelfbenoemde “chaosmuppet”, gebruik ik agile werkwijzen en lean principes om orde te scheppen in mijn dagelijks leven. Ik vind het heerlijk om deze lessen met anderen te delen door middel van de vele artikelen, presentaties en video's die ik maak voor Atlassian 


Deel dit artikel

Aanbevolen artikelen

Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.

Toelichting DevOps

DevOps-community

Afbeelding van kaart

Gratis aan de slag

Meld je aan voor onze DevOps-nieuwsbrief

Thank you for signing up