Hulpsinterklazen voor je software

Danny Techniek

Als je werkt met een packagemanager ken je het probleem vast wel: eens in de zoveel tijd ben je langer bezig dan je zou willen om je packages naar de laatste versie te brengen. Dat moet toch ook anders kunnen?

Wie kent het niet? Zo nu en dan loop je tegen het feit aan dat je dependencies verouderd zijn. De updates zijn stuk voor stuk niet zo groot, maar tóch gaat het meer tijd kosten dan je zou willen. Of misschien heb je al een tijdje een vulnerability in je code door het gebruik van een library die een exploit heeft. Of anders ergens in een stoffig hoekje dat stukje software waar je liever niet meer naar om wilt kijken?

Automate all the things!

Bij Infi motiveren we elkaar sterk om een deel van je werktijd te gebruiken voor je persoonlijke ontwikkeling. Leergangen, Infinibattle en andere vormen zijn hier het resultaat van. Ik steek ook wat van die tijd in open source software.

Zo ook in een kleine tool die een WSDL transpileert naar PHP-objecten, het nut ervan is redelijk achterhaald. Maar dit maakt dat het een leuke speeltuin is om nieuwe dingen in te proberen.

Elke keer als ik iets wilde proberen zat ik met verouderde dependencies. Nadat dit probleem een aantal keer mijn motivatie de kop indrukte, had ik sterk de drang om mijn frustratie in productie om te zetten. Na wat zoekwerk was daar al snel een oplossing, Dependabot. Sinds mei dit jaar is Dependabot onderdeel van GitHub geworden en heeft hierdoor wat aan bekendheid gewonnen. Wat Dependabot standaard voor je doet, is een PR aanmaken zodra er voor één van jouw dependencies een update beschikbaar is. Nooit meer outdated dependencies, toch?

infi_tech_blog_-_danny_van_der_sluijs_-_dependabot_preview

Wakker worden met 10 Pull Requests

Tja, en dan word je wakker en heb je ineens 10 losse pull requests op hetzelfde bestand. Ineens heb je een nieuw probleem waarvan je nog niet wist dat je hem had. Gelukkig is daar Mergify, het vriendje van Dependabot. Net als Dependabot geef je Mergify toegang tot je repository en kan je deze middels een .mergify.yml bestand configureren. In mijn repository heb ik Mergify zo ingesteld, dat een PR aangemaakt door Dependabot waarvan de Travis build geslaagd is middels een squash-merge de PR naar de develop branch gaat.

Dependabot en Mergify managen nu de dependencies van mijn pet project. Zo hoef ik mij niet langer bezig te houden met de triviale dingen zoals het bijwerken van patch releases van mijn dependencies. Natuurlijk kleven er ook wat nadelen aan deze geautomatiseerde manier: Travis is mijn gatekeeper. Potentieel is er het risico dat er regressie optreedt, maar niet anders dan dat ik handmatig de dependencies zou updaten en kijken of de build slaagt. Het is letterlijk een automatisering van een anders handmatig proces.

infi_tech_blog_-_danny_van_der_sluijs_-_mergify_preview_300x400px

Wil jij ook deze hulpsinterklazen voor jouw software? Neem een kijkje bij mijn GitHub project waar ik Dependabot en Mergify gebruik.

Een afspraak maken bij ons op kantoor of wil je even iemand spreken? Stuur ons een mail of bel met Jolanda.