Wijzigingen valideren met GitHub Actions

Voltooid

Bij trunk-based development gaat elke voorgestelde wijziging via een pullrequest. Deze pull-aanvraag is ook het natuurlijke moment om geautomatiseerde controles uit te voeren. Een wijziging die het trainingsscript breekt, zou main niet mogen halen, en een reviewer zou niet elke codefout handmatig hoeven op te sporen.

Werkstromen, triggers en de kwaliteitspoort

Een GitHub Actions werkstroom is een YAML-bestand dat is opgeslagen in uw opslagplaats onder .github/workflows/. Hiermee wordt gedefinieerd wat moet worden uitgevoerd, wanneer deze moet worden uitgevoerd en in welke volgorde. Een trigger (de on: sleutel) vertelt GitHub wanneer deze moet worden gestart.

Voor de Proseware-validatiewerkstroom past de pull_request trigger bij de taak. Standaard wordt deze uitgevoerd wanneer een pull request wordt geopend, opnieuw wordt geopend of er nieuwe commits aan worden toegevoegd. Het resultaat wordt weergegeven als statuscontrole voor de pull-aanvraag.

Jobs, runners en stappen

Een werkstroom organiseert werk in taken. Elke taak wordt uitgevoerd op een hardloper: een virtuele machine die wordt geleverd door GitHub of een die door uw organisatie wordt beheerd. Een taak bevat geordende stappen voor het uitchecken van de opslagplaats, het installeren van hulpprogramma's en het uitvoeren van opdrachten.

Voor de Proseware-trainingscode kan een validatietaak het volgende doen:

  1. Bekijk de opslagplaats.
  2. Installeer een linter (zoals Flake8 voor Python) en voer deze uit op de trainingsscripts.
  3. Voer eenheidstests (zoals Pytest) uit om te controleren of scriptfuncties correct werken.

Deze stappen worden automatisch uitgevoerd voor elke pull-aanvraag. Niemand hoeft ze lokaal uit te voeren.

Controles verplicht maken

Het automatisch uitvoeren van controles is slechts de helft van de beveiliging. De andere helft is het blokkeren van die controles. In de instellingen voor branchbeveiliging kunt u met de optie Statuscontroles vereisen voordat er kan worden samengevoegd specifieke taken opgeven. Een pull request kan pas worden samengevoegd als de jobs met die naam succesvol zijn voltooid.

Samen vormen trunk-based development en verplichte statuscontroles een kwaliteitsdrempel: de data scientist opent een pullrequest, de workflow draait en de knop voor samenvoegen blijft uitgeschakeld totdat de code alle controles doorstaat.

Aanbeveling

De statuscontrole wordt geïdentificeerd door de taaknaam in het werkstroombestand. Gebruik een duidelijke, stabiele naam, zodat het gemakkelijk te vinden is in instellingen voor vertakkingsbeveiliging.

Aanbeveling

Denk na over een preprocessingwijziging met geldige Python-syntaxis die een onjuiste uitvoer oplevert. Welke controle kan stijlproblemen ondervangen en welke controle moet het gedrag controleren?