Een GitHub Actions-werkstroom configureren
Hier leert u enkele algemene configuraties in een werkstroombestand. U verkent ook de categorieën gebeurtenistypen, het uitschakelen en verwijderen van werkstromen en het gebruik van specifieke versies van een actie voor aanbevolen beveiligingsprocedures.
Werkstromen configureren die moeten worden uitgevoerd voor geplande gebeurtenissen
Zoals eerder vermeld, kunt u uw werkstromen zo configureren dat deze worden uitgevoerd wanneer specifieke activiteiten plaatsvinden op GitHub, wanneer een gebeurtenis buiten GitHub plaatsvindt of op een gepland tijdstip.
schedule
Met de gebeurtenis kunt u een werkstroom activeren om op specifieke UTC-tijden uit te voeren met behulp van de CRON-syntaxis van POSIX. Deze cron-syntaxis heeft vijf *
velden en elk veld vertegenwoordigt een tijdseenheid.
Als u bijvoorbeeld elke 15 minuten een werkstroom wilt uitvoeren, ziet de schedule
gebeurtenis er als volgt uit:
on:
schedule:
- cron: '*/15 * * * *'
En als u elke zondag om 3:00 uur een werkstroom wilt uitvoeren, ziet de schedule
gebeurtenis er als volgt uit:
on:
schedule:
- cron: '0 3 * * SUN'
U kunt operators ook gebruiken om een bereik van waarden op te geven of om in te bellen in uw geplande werkstroom. Het kortste interval dat u geplande werkstromen kunt uitvoeren, is eenmaal om de vijf minuten en ze worden uitgevoerd op de meest recente doorvoering op de standaard- of basisbranch.
Werkstromen configureren die moeten worden uitgevoerd voor handmatige gebeurtenissen
Naast geplande gebeurtenissen kunt u handmatig een werkstroom activeren met behulp van de workflow_dispatch
gebeurtenis. Met deze gebeurtenis kunt u de werkstroom uitvoeren met behulp van de GitHub REST API of door de knop Werkstroom uitvoeren te selecteren op het tabblad Acties in uw opslagplaats op GitHub. Met behulp van workflow_dispatch
, kunt u kiezen op welke vertakking u de werkstroom wilt uitvoeren, en kunt u optioneel inputs
instellen dat GitHub als formulierelementen in de gebruikersinterface zal presenteren.
on:
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
tags:
description: 'Test scenario tags'
Daarnaast workflow_dispatch
kunt u de GitHub-API gebruiken om een webhook-gebeurtenis met de naam repository_dispatch
te activeren. Met deze gebeurtenis kunt u een werkstroom activeren voor activiteit die zich buiten GitHub voordoet en in wezen fungeert als een HTTP-aanvraag naar uw opslagplaats waarin GitHub wordt gevraagd om een werkstroom uit een actie of webhook te activeren. Als u deze handmatige gebeurtenis gebruikt, moet u twee dingen doen: een POST
aanvraag verzenden naar het GitHub-eindpunt /repos/{owner}/{repo}/dispatches
met de namen van de webhook-gebeurtenissen in de aanvraagbody en uw werkstroom configureren om de repository_dispatch
gebeurtenis te gebruiken.
curl \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/dispatches \
-d '{"event_type":"event_type"}'
on:
repository_dispatch:
types: [opened, deleted]
Werkstromen configureren die moeten worden uitgevoerd voor webhook-gebeurtenissen
Ten slotte kunt u een werkstroom zo configureren dat deze wordt uitgevoerd wanneer specifieke webhook-gebeurtenissen plaatsvinden op GitHub. U kunt de meeste webhook-gebeurtenissen activeren vanuit meer dan één activiteit voor een webhook. Als er dus meerdere activiteiten voor een webhook bestaan, kunt u een activiteitstype opgeven om de werkstroom te activeren. U kunt bijvoorbeeld een werkstroom uitvoeren voor de check_run
gebeurtenis, maar alleen voor de rerequested
of requested_action
activiteitstypen.
on:
check_run:
types: [rerequested, requested_action]
Voorwaardelijke trefwoorden gebruiken
In uw werkstroombestand hebt u toegang tot contextinformatie en kunt u expressies evalueren. Hoewel expressies vaak worden gebruikt met het voorwaardelijke if
trefwoord in een werkstroombestand om te bepalen of een stap moet worden uitgevoerd of niet, kunt u elke ondersteunde context en expressie gebruiken om een voorwaardelijk te maken. Het is belangrijk te weten dat u bij het gebruik van voorwaardelijke voorwaarden in uw werkstroom de specifieke syntaxis ${{ <expression> }}
moet gebruiken, zodat GitHub een expressie moet evalueren in plaats van deze als een tekenreeks te behandelen.
Een werkstroom die gebruikmaakt van de if
voorwaarde om te controleren of de github.ref
(vertakking of tagverw die de werkstroomuitvoering heeft geactiveerd) overeenkomt refs/heads/main
om door te gaan met de volgende stappen in de werkstroom, ziet er ongeveer als volgt uit:
name: CI
on: push
jobs:
prod-check:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
...
U ziet dat in dit voorbeeld de ${{ }}
ontbrekende code ontbreekt in de syntaxis. Met sommige expressies, zoals in het geval van de if
voorwaarde, kunt u de syntaxis van de expressie weglaten. GitHub evalueert automatisch enkele van deze algemene expressies, maar u kunt ze altijd opnemen als u vergeet welke expressies GitHub automatisch evalueert.
Raadpleeg de syntaxis van de werkstroom voor GitHub Actions voor meer informatie over werkstroomsyntaxis en expressies.
Werkstromen uitschakelen en verwijderen
Nadat u een werkstroom aan uw opslagplaats hebt toegevoegd, kan het zijn dat u de werkstroom tijdelijk wilt uitschakelen. U kunt voorkomen dat een werkstroom wordt geactiveerd zonder dat u het bestand uit de opslagplaats hoeft te verwijderen, hetzij op GitHub of via de GitHub REST API. Wanneer u de werkstroom opnieuw wilt inschakelen, kunt u dit eenvoudig doen met dezelfde methoden.
Het uitschakelen van een werkstroom kan handig zijn in sommige situaties, bijvoorbeeld:
- Een fout in een werkstroom veroorzaakt te veel of verkeerde aanvragen die negatieve gevolgen hebben voor externe services.
- U wilt een werkstroom die niet kritiek is tijdelijk onderbreken en te veel minuten in uw account verbruikt.
- U wilt een werkstroom onderbreken die aanvragen verzendt naar een service die niet beschikbaar is.
- U werkt aan een fork en u hebt niet alle functionaliteit nodig van bepaalde werkstromen die het bevat (zoals geplande werkstromen).
U kunt ook een werkstroomuitvoering annuleren die wordt uitgevoerd in de GitHub-gebruikersinterface vanaf het tabblad Acties of met behulp van het GitHub-API-eindpunt DELETE /repos/{owner}/{repo}/actions/runs/{run_id}
. Houd er rekening mee dat wanneer u een werkstroomuitvoering annuleert, gitHub alle taken en stappen binnen die uitvoering annuleert.
De sjabloonwerkstroom van een organisatie gebruiken
Als u een werkstroom hebt die meerdere teams binnen een organisatie gebruiken, kunt u in plaats van dezelfde werkstroom voor elke opslagplaats opnieuw te maken, consistentie in uw organisatie bevorderen met behulp van een werkstroomsjabloon die is gedefinieerd in de opslagplaats van .github
de organisatie. Elk lid binnen de organisatie kan een werkstroom voor organisatiesjablonen gebruiken en elke opslagplaats binnen die organisatie heeft toegang tot deze sjabloonwerkstromen.
U kunt deze werkstromen vinden door naar het tabblad Acties van een opslagplaats binnen de organisatie te gaan, Nieuwe werkstroom te selecteren en vervolgens de sectie Werkstroomsjabloon van de organisatie te vinden met de titel 'Werkstromen gemaakt op organisatienaam'. De organisatie met de naam Mona heeft bijvoorbeeld een sjabloonwerkstroom, zoals hieronder wordt weergegeven.
Specifieke versies van een actie gebruiken
Wanneer u verwijst naar acties in uw werkstroom, raden we u aan een specifieke versie van die actie te raadplegen in plaats van alleen de actie zelf. Door te verwijzen naar een specifieke versie, plaatst u een beveiliging tegen onverwachte wijzigingen die naar de actie worden gepusht die uw werkstroom mogelijk kunnen verbreken. Hier volgen verschillende manieren waarop u kunt verwijzen naar een specifieke versie van een actie:
steps:
# Reference a specific commit
- uses: actions/setup-node@c46424eee26de4078d34105d3de3cc4992202b1e
# Reference the major version of a release
- uses: actions/setup-node@v1
# Reference a minor version of a release
- uses: actions/setup-node@v1.2
# Reference a branch
- uses: actions/setup-node@main
Sommige verwijzingen zijn veiliger dan andere. Als u bijvoorbeeld naar een specifieke vertakking verwijst, wordt die actie uitgevoerd op basis van de meest recente wijzigingen van die vertakking, die u mogelijk of niet wilt. Door te verwijzen naar een specifiek versienummer of SHA-hash doorvoeren, bent u specifieker over de versie van de actie die u uitvoert. Voor meer stabiliteit en beveiliging raden we u aan om de doorvoer-SHA van een uitgebrachte actie in uw werkstromen te gebruiken.