GitHub Actions CheatSheet - Standaardstructuur en een lijst met de meest nuttige acties
Een korte uitleg over veelvoorkomende GitHub Actions en hun structuur.
GitHub Actions
is een automatiserings- en CI/CD-platform binnen GitHub, gebruikt om uw code te bouwen, te testen en te implementeren op basis van gebeurtenissen zoals pushes, pull requests of op een schema.
Naast standaard GitHub kunt u GitHub Actions ook gebruiken op een zelfgehoste Gitea-server.
Deze samenvatting behandelt de structuur van GitHub Actions, een korte beschrijving en de meest gebruikte acties in open source en commerciële workflows.
Acties omvatten officiële, community- en derde-partij-tools, die automatisatie ondersteunen van builds en tests tot implementatie, releasebeheer, QA en meldingen.
Basisconfiguratiestructuur
GitHub Actions Workflows worden gedefinieerd in YAML-bestanden die zich bevinden in de .github/workflows
-map binnen de repository.
name: Workflow Naam
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Stel Node.js in
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Voer tests uit
run: npm test
- Het on-blok specificeert triggergebeurtenissen.
- Elke job wordt uitgevoerd op zijn eigen runner.
- steps kunnen shellcommando’s uitvoeren of herbruikbare acties aanroepen.
Kernworkflowcomponenten
Component | Beschrijving |
---|---|
Workflow | Automatiseringsproces (YAML) dat wordt geactiveerd door een gebeurtenis |
Gebeurtenis | Activiteit die een workflow activeert (push, pull_request, etc.) |
Job | Reeks stappen die op een runner worden uitgevoerd, kan sequentieel of parallel worden uitgevoerd |
Stap | Elke opdracht of actie binnen een job |
Runner | VM of container waarop jobs worden uitgevoerd |
Actie | Herbruikbare uitbreiding/extra die een taak omvat |
Triggergebeurtenissen
- push
- pull_request
- schedule (met cron-syntaxis)
- workflow_dispatch (handmatige trigger, toestaat invoerparameters)
- release, issue, enz.
Voorbeeld:
on:
push:
branches: [ main ]
workflow_dispatch:
inputs:
environment:
description: 'Implementatiemilieu'
required: true
default: 'productie'
type: string
Nuttige ingebouwde acties
Actie | Doel | Gewone parameters |
---|---|---|
actions/checkout | Code van de repository uitchecken | ref, token, submodules, persist-credentials |
actions/setup-node | Stel Node.js-omgeving in | node-version, cache, architecture, check-latest |
actions/setup-python | Stel Python in | python-version, architecture |
actions/cache | Cache afhankelijkheden | path, key, restore-keys |
docker/build-push-action | Bouw & push Docker-afbeeldingen | context, file, platforms, tags, push, build-args |
actions/upload-artifact | Upload bouwresultaten | name, path, if-no-files-found |
actions/download-artifact | Download resultaten | name, path |
github/email-actions | Stuur e-mailmeldingen | to, subject, content, attachments |
peter-evans/create-pull-request | Maak PRs via workflow | branch, title, body, labels, base |
actions/github-script | Voer willekeurige JavaScript uit in uw workflow | script, github-token |
Actieparameters
Algemene parameters voor elke actieaanroep:
- name: Een actie of stap
uses: owner/repo@ref
with:
param1: waarde
param2: waarde
env:
ENV_VAR: waarde
if: ${{ voorwaarde }}
run: opdracht_om_te_uitvoeren
shell: bash|pwsh|python|sh
continue-on-error: true|false
- with: argumenten die aan de actie worden doorgegeven (zie actiedocumentatie voor alle opties)
- env: omgevingsvariabelen voor de stap
- if: voorwaardelijke uitvoering
- run: shellcommando’s (als geen actie wordt gebruikt)
- shell: shell die wordt gebruikt om de stap uit te voeren
- continue-on-error: doorgaan zelfs als de stap mislukt
Definiëren van aangepaste actieinputs
In uw actiemetadata (action.yml):
inputs:
example-input:
description: 'Een voorbeeldinput'
required: false
default: 'standaardwaarde'
Wanneer gebruikt in een workflow:
- uses: my/action@v1
with:
example-input: 'aangepaste-waarde'
Toegankelijk als omgevingsvariabele INPUT_EXAMPLE_INPUT
wanneer de actie wordt uitgevoerd.
Voorbeeld: Workflow met handmatige parameters
name: Implementeren
on:
workflow_dispatch:
inputs:
environment:
description: 'Implementatiemilieu'
required: true
default: 'productie'
type: string
jobs:
implementeren:
runs-on: ubuntu-latest
steps:
- name: Code uitchecken
uses: actions/checkout@v4
- name: Implementeren naar milieu
run: echo "Implementeren naar ${{ github.event.inputs.environment }}"
Actiemarktplaats
- Er zijn duizenden herbruikbare acties beschikbaar in de GitHub Marketplace.
- Categorieën omvatten: cloudimplementaties, meldingstools, testframeworks, codeanalyse en meer.
- Bekijk: actions/checkout, actions/setup-node, docker/build-push-action, actions/cache, actions/upload-artifact, en veel meer.
Sneladvies
- Plaats workflowbestanden in
.github/workflows
. - Gebruik workflow_dispatch met inputs voor handmatige en parametergebaseerde uitvoeringen.
- Gebruik de cache-actie om afhankelijkheden sneller te installeren.
- Gebruik de job matrix om meerdere OS/versies van runtime te testen.
- Gebruik geheime gegevens voor gevoelige informatie, verwijzend naar
${{ secrets.SECRET_NAME }}
.
Deze cheatsheet behandelt de essenties van het gebruiken, configureren en uitbreiden van GitHub Actions voor automatisering, CI/CD en meer. Voor meer details en updates, controleer altijd de officiële GitHub-documentatie en actiereposities.
Populaire GitHub Actions
Hieronder volgt een praktische lijst van vaak gebruikte GitHub Actions die helpen bij het automatiseren van CI/CD, testen, bouwen, implementatie en workflowtaken:
Kernofficiële acties
Actie | Doel | Belangrijke voorbeeldparameters |
---|---|---|
actions/checkout | Controleer repositorycode | ref, submodules |
actions/setup-node | Stel Node.js-omgeving in | node-version, cache |
actions/setup-python | Stel Python-omgeving in | python-version |
actions/setup-java | Stel Java JDK in | distribution, java-version |
actions/cache | Cache afhankelijkheden en bouwuitvoer | path, key, restore-keys |
actions/upload-artifact | Upload bouwresultaten | name, path |
actions/download-artifact | Download resultaten van workflow | name, path |
actions/github-script | Voer JavaScript uit met GitHub-context en API | script |
actions/create-release | Maak een GitHub release | tag_name, release_name |
actions/upload-release-asset | Upload bestanden naar een release | upload_url, asset_path |
actions/labeler | Toepassen van labels automatisch op issues/PRs | repo-token, configuration-path |
Populaire community- en derde-partijacties
Actie | Doel |
---|---|
docker/build-push-action | Bouw en push Docker-afbeeldingen |
actions/setup-go | Stel Go-omgeving in |
super-linter/super-linter | Universele automatische code linting |
trufflesecurity/trufflehog | Scan op geheimen en referenties |
peaceiris/actions-gh-pages | Implementeer statische sites naar GitHub Pages |
JamesIves/github-pages-deploy-action | Implementeer projecten naar GitHub Pages |
peter-evans/create-pull-request | Maak pull requests automatisch |
softprops/action-gh-release | Maak en upload GitHub Releases |
ad-m/github-push-action | Push wijzigingen terug naar GitHub repository |
actions/setup-dotnet | Stel .NET SDK in |
azure/login | Aanmelden bij Azure |
google-github-actions/auth | Aanmelden bij Google Cloud |
Testen, QA en rapportageacties
Actie | Doel |
---|---|
actions/setup-ruby | Stel Ruby-omgeving in |
codecov/codecov-action | Upload code coverage rapporten naar Codecov |
coverallsapp/github-action | Upload coverage resultaten naar Coveralls |
dorny/test-reporter | Testresultaten koppelen aan GitHub Checks |
stefanzweifel/git-auto-commit-action | Automatisch bestanden toevoegen en pushen |
Implementatie- en meldingacties
Actie | Doel |
---|---|
appleboy/scp-action | Bestanden uploaden via SCP |
SamKirkland/FTP-Deploy-Action | Implementeer bestanden via FTP/FTPS |
cypress-io/github-action | Voer Cypress eind-gebruikstests uit |
slackapi/slack-github-action | Berichten sturen naar Slack |
dawidd6/action-send-mail | E-mails sturen tijdens workflowuitvoering |
Hulpmiddelen en workflowbeheer
Actie | Doel |
---|---|
peter-evans/repository-dispatch | Activeer workflows in externe repositories |
fregante/setup-git-user | Stel Git-gebruikersgegevens in voor commits |
andymckay/labeler | Labels toekennen aan issues en PRs op basis van paden |
actions/configure-pages | Stel publicatie in naar GitHub Pages |
EndBug/add-and-commit | Bestanden toevoegen en committen binnen een workflow |
dangoslen/changelog-enforcer | Controleer of een changelog is bijgewerkt voor PRs |
Hoe meer acties vinden
Er zijn veel GitHub Actions die workflowautomatisering mogelijk maken zoals automatische testen, implementatie naar productie, meldingen en integraties met andere diensten. De GitHub Marketplace lijst duizenden acties over categorieën zoals testen, beveiliging, implementatie, meldingen, codekwaliteit en integraties. Gecurateerde lijsten zoals “Awesome Actions” zijn ook goed voor inspiratie en ontdekking.
Nuttige links
- https://docs.github.com/actions
- https://github.com/marketplace
- https://docs.github.com/en/actions/get-started/quickstart
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
- GIT Cheatsheet
- Gitea - installeren en testen
- Back-up en herstel Gitea-server
- Gebruik Gitea Actions om Hugo-website te implementeren naar AWS S3
- Gitflow: stappen, alternatieven, voordelen en nadelen
- DevOps met GitOps - Argo CD, Flux, Jenkins X, Weave GitOps en andere