Hoe wij BitBucket Pipelines inzetten voor Continuous Integration

Bij de ontwikkeling van Magento 2 is direct rekening gehouden met het geautomatiseerd testen van software.
25 oktober 2016
  • Development
  • Magento 2
Door Danny

Bij de ontwikkeling van Magento 2 is direct rekening gehouden met het geautomatiseerd testen van software. Deze ontwikkeling heet ook wel Test-Driven Development (TDD), waarbij code en software automatisch getest wordt. Hierdoor is direct duidelijk of bepaalde nieuw toegevoegde code of wijzigingen effect hebben op andere onderdelen. Over het algemeen wordt de kwaliteit van de code hierdoor beter en voorkomt het bugs of fouten in de software die anders pas aan het licht zouden komen wanneer een nieuwe versie van Magento wordt vrijgegeven.

We kijken al langer naar de mogelijkheden om geautomatiseerd te testen, maar tot nu toe heeft dat nooit tot het inzicht of de oplossing gezorgd die we voor ogen hadden. Er is getest met diverse pakketten, waaronder Bamboo en Jenkens. Twee veel gebruikte tools om geautomatiseerd te testen. Toen we mee konden doen aan de Beta van BitBucket Pipelines hebben we deze kans dan ook direct gepakt om te kijken of dat platform wel voor ons goed inzetbaar zou zijn.

Onze eerste ervaring met BitBucket Pipelines hebben we dan ook gedeeld op de Mage Unconference, waarbij we andere ontwikkelaars konden laten zien hoe en op welke wijze we deze tool inzetten. Omdat vanuit de aanwezigen naar voren kwam dat het fijn zou zijn dit verder te delen is dit artikel geschreven.

BitBucket Pipelines is een toevoeging aan de populaire tool BitBucket die veel gebruikt wordt voor het beheren van GIT repositories. Door middel van deze uitbreiding kan er automatisch getest worden. Pipelines kenmerkt zich door de eenvoud. Door aan je GIT repository een bestand “bitbucket-pipelines.yml” toe te voegen wordt het build proces gestart.

De technologie werkt op basis van Docker images, die voor elke build gestart worden. Wij hebben gekozen om een docker image van MageInferno te pakken, welke speciaal geschikt is voor het draaien van Magento 2, waardoor er verder geen aparte software geïnstalleerd hoeft te worden. Vervolgens worden de vervolg stappen gedefinieerd. Waarbij eerst het juiste geheugen wordt toegewezen. Vervolgens wordt middels een composer install Magento 2 geïnstalleerd. Daarna draaien we automatisch codesniffer op onze eigen maatwerk code om coding violations te detecteren en vervolgens draaien alle unit tests van Magento 2, zodat gecontroleerd wordt of er geen standaard functionaliteit van Magento stuk is gegaan.

Voorbeeld bitbucket-pipelines.yml

image: mageinferno/magento2-php:7.0.8-fpm-3

pipelines:
 default:
 - step:
 script:
 - sed -i "s/PHP_MEMORY_LIMIT/2G/" /usr/local/etc/php/php.ini
 - composer install --prefer-dist
 - ./dev/scripts/run-codesniffer.sh
 - ./dev/scripts/run-unit-tests.sh

In BitBucket zelf bevind zich een prachtig overzicht van alle builds die uitgevoerd worden. Zie de schermafbeelding hieronder. Wij hebben Pipelines zo ingericht dat bij elke commit een build gedaan wordt en een ontwikkelaar dus direct feedback krijgt of de code die gerealiseerd is aan onze standaard voldoet of fouten bevat.

Vervolgens kan eenvoudig op de build ingezoomed worden door deze aan te klikken. De log resultaten zijn per stap uit het bitbucket-pipelines.yml bestand gegroepeerd. Zo kun je snel de resultaten van een bepaalde stap terug vinden. Problemen kunnen dus snel geïdentificeerd worden, zodat een ontwikkelaar ze aan kan passen en een nieuwe commit kan doen. Dan wordt direct het proces weer opgestart zodat gecontroleerd wordt of de wijzigingen het gewenste resultaat hebben.

De eerste resultaten die we hiermee boeken zijn zeer positief, we hebben er dan ook voor gekozen BitBucket Pipelines voor alle projecten te implementeren. Daarnaast gaan zullen we nog bekijken wat de mogelijkheden zijn om te builden tegen verschillende PHP versies en bekijken we de mogelijkheden om ook daadwerkelijk de deployment met BitBucket Pipelines uit te voeren richting test en productie omgevingen.

Geschreven door Danny

Wil je meer informatie of gewoon eens met mij sparren? Je bent altijd welkom voor een goed gesprek.

Neem contact met mij op

PostNL module voor Magento 2 beschikbaar

Lees snel verder