Software Engineering

Continuous Integration met GitLab

Door Freek Schoenmakers

Logo_gitlab.png

Bij softwareontwikkeling is samenwerking essentieel. Vaak werken een heleboel ontwikkelaars tegelijk aan hetzelfde softwareproject. Het is daarom van belang dat versiebeheer goed geregeld is. Hier biedt GitLab goede ondersteuning voor. Met GitLab kun je heel gemakkelijk versies beheren en verzoeken plaatsen om een nieuwe feature aan een release toe te voegen. Maar dat is niet het enige. Een andere – zeer nuttige – functie van GitLab zijn de zogenoemde pipeline tools. Hiermee wordt het build-, test-, deployment- en provisioningproces geautomatiseerd. Naast vele softwarebedrijven zoals Ticketmaster, Uber, ING en Alibaba maakt ook Universiteit Utrecht succesvol gebruik van GitLab.


Wat is het?

Pipeline tools ondersteunen softwareontwikkeling door het automatiseren van taken zoals testen. Een pipeline is een groep jobs die worden uitgevoerd in stages. De jobs worden parallel uitgevoerd; als ze allemaal succesvol uitgevoerd zijn gaat de pipeline verder naar de volgende stage. Deze jobs en stages kunnen van alles omvatten, maar heel standaard zijn de build en test stages.

Hieronder zie je een schematische weergave van een pipeline uit een softwareproject van Freek Schoenmakers, een van onze Young Professionals. Deze pipeline bestaat in totaal uit drie stages (build, test en deploy) en vier jobs.

Freek_pipeline_1.png

In de build stage wordt een oplossing gecompileerd en wordt het resultaat eventueel opgeslagen als artifact. Vervolgens worden in de test stage twee jobs uitgevoerd. In deze jobs wordt een serie geautomatiseerde tests losgelaten op de artifacts van de build stage. De testresultaten worden opgeslagen als artifact en als alle tests succesvol doorlopen zijn is de job voltooid. Je ziet in het schema een test codestyle. De projectgroep had afgesproken om volgens een vaste stijl te werken, zodat alle code op elkaar lijkt en daardoor goed leesbaar is. De oplossing uit de build stage werd getest op deze codestyle. Dat scheelt de code reviewers een hoop tijd!

Als laatst wordt in het voorbeeld de deploy stage doorlopen. Hierbij wordt een release-build van de oplossing gecompileerd en bewaard. Op die manier is het heel makkelijk om een oudere versie opnieuw te downloaden en te vergelijken. Dit kan bijvoorbeeld handig zijn bij een vergadering met een opdrachtgever. Merk op dat hier in de deploy stage alleen een release-build gemaakt is. Voor dit project was niet meer nodig. Echter, in professionele omgevingen zou de deploy stage bijvoorbeeld de nieuwe versie naar een server kunnen uploaden en zo automatisch de server bijwerken.

“Pipelines bieden veel flexibiliteit en mogelijkheden rondom projectontwikkeling en automatiseren taken die anders veel tijd zouden kosten.”

Je kunt zelf met een kort script precies definiëren hoe de pipeline verloopt. Welke stappen moeten er worden doorlopen vóór het starten van de pipeline, welke stages bevat deze, uit welke jobs bestaat iedere stage, wat houdt elke job precies in, et cetera. Dit biedt veel flexibiliteit en mogelijkheden rondom projectontwikkeling en automatiseert taken die anders veel tijd zouden kosten.

Freek_pipeline_2a.png

In GitLab kun je overigens verschillende statistieken zien over de pipelines, zoals hiernaast en hieronder weergegeven. De statistieken die je hier ziet hebben betrekking op het softwareproject dat net beschreven is.

Freek_pipeline_2b.png

verschillen met GitHub

Niet alle services hebben deze pipeline tools op dezelfde manier geïntegreerd. Zo heeft GitHub externe services nodig, bijvoorbeeld Travis CI. Hierdoor ontstaat het risico om  een ‘radertje in de machine’ te worden. GitLab daarentegen zet de pipeline tools centraler neer, waardoor deze de bron vormen van alle activiteiten.

verschillen met Azure DevOps

Echter, ook bij GitLab is er nog altijd ruimte voor verbetering. Zo kan het gebruiksvriendelijker. Op dit moment maak je een configuratiebestand aan en vervolgens pikt GitLab dit bestand automatisch op. Ter vergelijking: Azure DevOps heeft hier een mooie grafische interface voor. Hier kun je gemakkelijk jobs en stages toevoegen en nieuwe pipelines configureren zonder direct in script bestanden te rommelen.

Een ander voordeel van Azure DevOps is dat het doorlopen van het deployment-proces beter is ingebouwd. Door deze integratie kunnen de resultaten van een pipeline gemakkelijk gedeployed worden zonder tussenkomst van een externe service. Dit is ook mogelijk in GitLab, maar daar zijn extra services voor nodig waardoor het minder eenvoudig is dan bij Azure. Zo is er bijvoorbeeld integratie mogelijk met Prometheus voor performance monitoring en Kubernetes voor clustermanagement.

Al met al zijn er veel voordelen van Continuous Integration en ik hoop je te hebben geïnspireerd om te profiteren van de services die GitLab hiervoor biedt.

Succesvolle start nieuwe Young Professionals

Search4Solutions organiseert regelmatig Young Professional borrels op het Utrecht Science park. De laatste Development Borrel in september was weer erg leuk en succesvol.

De informele kennismakingsborrel is voor jong talent dé kans om te ontdekken wat wij doen en waar we voor staan. En wie kan hierin beter inzicht geven dan degenen die het programma zelf al hebben gevolgd? De aanwezigheid van bestaande Young Professionals was een enorm waardevolle aanvulling aan de bijeenkomst. Veel dank aan deze groep. Ze zetten zich met enthousiasme in en dragen dit enthousiasme ook over.

IMG-20180529-WA0003.jpg

In september zijn weer acht nieuwe young professionals (YP’s) met het programma gestart. Op dit moment doorlopen ze een internship om ze klaar te stomen voor softwarebedrijven.

Vanaf dag één wordt gekeken naar hun specialiteiten en interesses door middel van persoonlijke gesprekken. Op basis daarvan komen de professionals in een passend opleidingstraject, zoals Continuous Delivery 3.0 of (Advanced) Software Engineering.

Onze bestaande groep verzorgen de training en begeleiden de nieuwe YP's. Zo begeleiden Ewan Klomp en Stijn Dautzenberg het Continuous Delivery traject en begeleidt Lars Tijsmans het Software Engineering traject.

De nieuwe professionals krijgen diverse uitdagende en interessante opdrachten, totdat ze expert zijn en zelfstandig aan de slag kunnen bij softwarebedrijven.

Wij wensen onze nieuwe teamleden heel veel succes!

Wil je ook aan de slag als Young Professional, neem dan hieronder contact op of bel direct 030-268 53 98.

Developers Day bij Unit4

Vandaag waren we op bezoek bij de Dev-Day van Unit4, voor het demonstreren van cloud based ontwikkelstraten. We hebben twee implementaties van deze ontwikkelstraten gedemonstreerd. Beide implementaties zijn bij klanten uitgevoerd op basis van het Continuous Delivery 3.0 gedachtegoed van het NISI. De implementaties zijn uitgevoerd binnen ons Young Professional Programma.

Jacco Mook presenteerde een implementatie voor een Legacy systeem waarbij de backoffice en frontoffice in iteraties is gemigreerd naar Continuous Delivery. Bij de implementatie is onder meer Jenkins en Linux gebruikt.

CD3.0 1.jpg

De scripting voor Jenkins bleek hier een uitdaging. Die uitdaging heeft te maken met de beperkingen in de pad-namen van Jenkins.

Uiteindelijk zijn aanvullende scripts geschreven om het probleem op te lossen..

In het tweede deel presenteerde Stijn Dautzenberg een implementatie voor een andere klant. Deze klant wilde GIT-versiebeheer voor 100 maatwerk versies van een softwareproduct combineren met een functionele programmaopzet.

IMG-20181003-WA0002.jpg

Door de functionele opzet kunnen OO-concepten niet worden toegepast, om wijzigingen in de core via inheritance door te voeren over de 100 maatwerk versies. Hierbij hebben we gebruik gemaakt van een concept dat bij Continuous Delivery 3.0 kenniscentrum van het NISI is ontwikkeld.

Een hele leuke dag. Met dank aan Unit4.

IMG_20181003_161204.jpg

Maandelijkse kennisdeling voor Young Professionals

Maandelijks komen de Young Professionals bij elkaar om kennis en kunde te delen.. Deze groep is als high potential geidentificeerd en helpen softwarebedrijven hun vraagstukken (in deeltijd) op te lossen.

IMG_20180531_181705.jpg

De Young Professionals implementeren software-oplossingen op de volgende gebieden:
- Continuous Testing
- Continuous Deployment
- Continuous Intelligence (Data Analytics)
- Cybersecurity & PEN-testing
- Geautomatiseerde bedrijfsprocessen

IMG_20180531_182445.jpg

Het is erg nuttig gebleken om deze praktijkervaringen met elkaar te delen. Het leren versnelt en het werkt inspirerend en motiverend. Elke Young professional bereidt een korte presentatie voor. We kiezen altijd voor interactie en samenwerking. De presentaties zijn vooral bedoeld als initiator tot discussie.

IMG_20180531_184533.jpg

Het Young professional programma identificeert de beste software studenten. Na een internship van 3 maanden zijn het Young professionals die het verschil maken bij softwarebedrijven.

Wil je meer weten over het Young Professional programma neem dan contact op via: 030-268 53 98.

Cybersecurityavond Hogeschool Utrecht

Op 23 mei hebben Ewan Klomp, Lars Tijsmans en Jan Vlietland van het Young Professional programma een Cybersecurity avond met Hogeschool Utrecht gehouden.

IMG-20180529-WA0010.jpg

Het onderwerp van de avond was:

"Cybersecurity en de softwareontwikkelaar".

 

De stelling was: 

"elke ontwikkelaar moet verstand hebben van Cybersecurity". 

Het was een avondvullend programma waarin presentatie, discussie en experimenten speels werden afgewisseld. Een leerzame avond vol ontmoetingen tussen professionals en young professionals, met als doel om met elkaar antwoorden te vinden.

IMG-20180529-WA0003.jpg

De eindconclusie was dat:

"bijna elke ontwikkelaar moet verstand hebben van Cybersecurity".

We danken Hogeschool Utrecht voor de interesse en gastvrijheid. Tot een volgende keer!

Kartevent met softwareprofessionals

Afgelopen zaterdag zijn alle medewerkers uitgenodigd om te gaan karten bij de Kartfabrique. 

Zo is het werk niet alleen leerzaam, maar ook supergezellig! 

We begonnen met bijpraten met een drankje in de bar, en daarna stapte iedereen in zijn kart. Zodra we begonnen met karten wilde iedereen superfanatiek de snelste tijd behalen. Jan heeft de snelste tijd gehaald door in 58.140s over het parcours heen te karten! Een eervolle tweede vermelding is voor Joeri met een snelste rondetijd van 58.389!

Na het karten hebben we gezellig nagepraat met een drankje en gepoold, om zo samen de dag af te sluiten.

WhatsApp Image 2018-04-24 at 13.08.56.jpeg

 

 

Een Hackathon zoals het is bedoeld

Vorige weekend hebben we met een groep medewerkers een supertoffe Hackathon georganiseerd, bestaande uit een serie challenges.

Tijdens de voorpret waren er al bijzondere challenges bedacht. Ze varieerden van het maken van een website binnen een half uur, tot het PEN-testen van een wireless accessible REST-API. Maar ook het hacken van een wireless netwerk met een *CRACK* attack in Kali was een challenge.

 
hackathon_2.jpg
 

We organiseren de hackathons op verschillende locaties en evalueren samen wat de prettigste werkomgeving is. We kiezen werkomgevingen die creativiteit en werkplezier het best ondersteunt. Een ruimtelijke huiselijke omgeving blijkt hier tot nu toe het best te passen.

De volgende dag, aan het einde van de hackathon bleken er alleen winnaars te zijn.