Academy

GitHub herbruikbare workflows vs. samengestelde acties

October 13, 2022

Kevin Vissers

Facebook logo in yellowLinkedIn logo in yellow

Iedereen kent GitHub als een platform voor het opslaan van private en publieke Git repositories en het samenwerken met andere ontwikkelaars. Maar naast het opslaan van repositories, biedt GitHub ook functies als Issues, Project boards, Wiki’s en GitHub Actions. Deze laatste kun je gebruiken om je workflows te automatiseren. In dit artikel zullen we ons richten op een speciaal soort workflow en acties: Herbruikbare workflows en samengestelde acties.

Je kunt workflows gebruiken om je code te bouwen, te testen, vrij te geven en nog veel meer. Een workflow kan getriggerd worden door een uitgebreide lijst van gebeurtenissen en zal draaien op GitHub gehoste runners, bijvoorbeeld Windows, Linux of Mac machines. Het is ook mogelijk om je eigen on-prem runners op te zetten. Een GitHub workflow bestaat uit Acties. Deze acties zijn bouwstenen van je workflow. Enkele voorbeelden van zulke acties zijn Checkout, Setup Java JDK, Upload a Build Artifact, etc. Je kunt bestaande Actions uit de Marketplace gebruiken of je eigen JavaScript, TypeScript of Docker Action maken.

Herbruikbare workflows

Zoals de naam al zegt, kun je een herbruikbare workflow hergebruiken in een of meer workflows. Ze zijn vooral handig als je meerdere repositories hebt waarin je dezelfde workflows moet uitvoeren. Wanneer je een herbruikbare workflow aanroept, is het mogelijk om een aantal invoerparameters en geheimen op te geven. Deze kunnen gebruikt worden om wat extra configuratie aan de herbruikbare workflow te geven, terwijl de geheimen gebruikt kunnen worden om de bouwartefacten te publiceren. Het is belangrijk om te weten dat de geheimen altijd worden opgeslagen in het “calling” archief. Dit is het archief dat de herbruikbare workflow gebruikt.

Voorbeeld

We hebben bijvoorbeeld twee repositories (A en B) die Java-code bevatten. In beide archieven hebben we een workflow nodig om onze Java code te bouwen en te testen. In plaats van het maken en onderhouden van de workflow in beide repositories, introduceren we een derde repository (C). Dit bevat een herbruikbare workflow voor het bouwen en testen van Java-code. In repository A en B maken we een zeer eenvoudige workflow die de centrale workflow aanroept. Hierdoor hoeven we de build-workflow maar op één plek te onderhouden.

github reusable workflows

Samengestelde acties

Naast herbruikbare workflows, biedt GitHub ook Composite Actions. Dit zijn een speciaal soort GitHub acties die gebruikt kunnen worden om “normale” acties te groeperen. Net als een normale Actie, kan een samengestelde actie een aantal in- en uitgangen hebben. In tegenstelling tot normale Actions is het niet mogelijk om code te schrijven in een Composite Action, je kunt alleen andere Actions aanroepen en shell scripts schrijven. Een samengestelde actie is vooral handig om je workflows schoon te houden en het aantal acties dat wordt aangeroepen in een workflow te beperken. Dit verbetert de leesbaarheid en onderhoudbaarheid van je workflows.

Voorbeeld

De afbeelding hieronder bevat een voorbeeld van een Composite Action. Deze actie zal een tekstbestand genereren op basis van invoergegevens en dit bestand opslaan als een artefact in GitHub.

De actie kan nu worden gebruikt in een workflow waar je de bestandsnaam en de gewenste bestandsinhoud moet opgeven.

Bij het uitvoeren van deze workflow zie je dat de stappen die zijn gedefinieerd in de Samengestelde actie worden weergegeven als één stap, genaamd Bestand maken.

Herbruikbare workflows vs. samengestelde acties

Hoewel beide concepten erg op elkaar lijken, zijn er enkele belangrijke verschillen. In het kort kun je zeggen dat herbruikbare workflows definiëren wat er moet gebeuren, terwijl samengestelde acties definiëren hoe het moet gebeuren.

Herbruikbare workflow

Net als een normale workflow kan een herbruikbare workflow meerdere jobs bevatten. Voor elke taak kun je definiëren op welke runner de taken moeten worden uitgevoerd. Als je een herbruikbare workflow aanroept, kun je een aantal invoergegevens en geheimen opgeven.

Samengestelde actie

Een Composite Action wordt altijd gebruikt binnen een workflow, dus het is niet mogelijk om jobs of runners te definiëren binnen de action. In een Samengestelde actie kunt u ingangen definiëren, maar het is niet mogelijk om geheimen expliciet te definiëren. Het is mogelijk om meerdere Composite Actions aan te roepen binnen je workflow, maar je kunt maar één Reusable Workflow aanroepen binnen een workflow. Als u een herbruikbare workflow aanroept, kunt u geen extra stappen toevoegen. Het kan maar één stap bevatten en dat is de aanroep van de herbruikbare workflow.

Conclusie

Zowel herbruikbare workflows als samengestelde acties zijn erg nuttig en krachtig. Ze houden je workflows schoon en gemakkelijker te onderhouden. Afhankelijk van je behoeften en situatie verkies je misschien de ene boven de andere. Maar je kunt ze zeker combineren om er het beste uit te halen.

Laten we samenwerken

Benieuwd hoe testautomatisering jouw organisatie kan helpen?

Meer informatie