GitHub Actions-Quickverwijzing – Standaardstructuur en een lijst met de meest nuttige acties

Een korte uitleg over gangbare GitHub Actions en hun structuur.

Inhoud

GitHub Actions is een automatiserings- en CI/CD-platform binnen GitHub, dat wordt gebruikt om code te bouwen, te testen en te implementeren op basis van gebeurtenissen zoals pushes, pull requests of volgens een schema.

Naast standaard GitHub kun je GitHub Actions ook gebruiken in een zelf-gehoste Gitea-server.

github actions flow

Actions omvatten officiële, community- en externe tools, die automatisering ondersteunen van builds en tests tot implementatie, beheer van releases, QA en meldingen.


Dit overzicht behandelt de structuur van GitHub Actions, een korte beschrijving en de meest gebruikte actions in open source- en commerciële workflows. Het maakt deel uit van Developer Tools: De Complete Gids voor Moderne Ontwikkelingsworkflows.

Basisconfiguratiestructuur

GitHub Actions Workflows worden gedefinieerd in YAML-bestanden die zich bevinden in de .github/workflows-map binnen de repository.

name: Workflow Name
on:
  push:
    branches: [ main ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      - name: Run tests
        run: npm test
  • Het on-blok specificeert triggergebeurtenissen.
  • Elke job wordt op zijn eigen runner uitgevoerd.
  • steps kunnen shell-opdrachten uitvoeren of herbruikbare actions aanroepen.

Kerncomponenten van Workflows

Component Beschrijving
Workflow Geautomatiseerd proces (YAML) dat door een gebeurtenis wordt getriggerd.
Event Activiteit die de workflow activeert (push, pull_request, etc.)
Job Reeks steps die op een runner worden uitgevoerd; kan sequentieel of parallel draaien
Step Elke opdracht of action binnen een job
Runner VM of container waar jobs worden uitgevoerd
Action Herbruikbare extensie/add-on die een taak incapsuleert

Triggergebeurtenissen

  • push
  • pull_request
  • schedule (gebruikmakend van cron-syntax)
  • workflow_dispatch (handmatige trigger, stelt inparameters in)
  • release, issue, etc.

Voorbeeld:

on:
  push:
    branches: [ main ]
  workflow_dispatch:
    inputs:
      environment:
        description: 'Deployment Environment'
        required: true
        default: 'production'
        type: string

Nuttige Ingebouwde Actions

Action Doel Veelvoorkomende Parameters
actions/checkout Repositorycode uitchecken ref, token, submodules, persist-credentials
actions/setup-node Node.js-omgeving instellen node-version, cache, architecture, check-latest
actions/setup-python Python instellen python-version, architecture
actions/cache Afhankelijkheden in cache zetten path, key, restore-keys
docker/build-push-action Docker-images bouwen & pushen context, file, platforms, tags, push, build-args
actions/upload-artifact Build-artefacten uploaden name, path, if-no-files-found
actions/download-artifact Artefacten downloaden name, path
github/email-actions E-mailmeldingen verzenden to, subject, content, attachments
peter-evans/create-pull-request PR’s maken via workflow branch, title, body, labels, base
actions/github-script Arbitrair JavaScript in je workflow uitvoeren script, github-token

Action Parameters

Algemene Parameters voor Elke Action-oproep:

- name: Some Action or Step
  uses: owner/repo@ref
  with:
    param1: value
    param2: value
  env:
    ENV_VAR: value
  if: ${{ condition }}
  run: command_to_run
  shell: bash|pwsh|python|sh
  continue-on-error: true|false
  • with: argumenten die aan de action worden doorgegeven (zie de action-documentatie voor alle opties)
  • env: omgevingsvariabelen voor de step
  • if: conditionele uitvoering
  • run: shell-opdrachten (als je geen action gebruikt)
  • shell: shell die wordt gebruikt om de step uit te voeren
  • continue-on-error: doorgaan ook als de step faalt

Aangepaste Action-inputs definiëren

In je action-metadata (action.yml):

inputs:
  example-input:
    description: 'An example input'
    required: false
    default: 'default-value'

Wanneer gebruikt in een workflow:

- uses: my/action@v1
  with:
    example-input: 'custom-value'

Wordt opgehaald als omgevingsvariabele INPUT_EXAMPLE_INPUT wanneer de action wordt uitgevoerd.

Voorbeeld: Workflow met Handmatige Parameters

name: Deploy
on:
  workflow_dispatch:
    inputs:
      environment:
        description: 'Deployment Environment'
        required: true
        default: 'production'
        type: string
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Deploy to environment
        run: echo "Deploying to ${{ github.event.inputs.environment }}"

Action Marketplace

  • Duizenden herbruikbare actions zijn beschikbaar in de GitHub Marketplace.
  • Categorieën omvatten: cloud-implementaties, meldingstools, testframeworks, code-analyse en meer.
  • Verken: actions/checkout, actions/setup-node, docker/build-push-action, actions/cache, actions/upload-artifact en vele anderen.

Snelle Tips

  • Plaats workflow-bestanden in .github/workflows.
  • Gebruik workflow_dispatch met inputs voor handmatige en geparametriseerde runs.
  • Gebruik de cache-action om het installeren van afhankelijkheden te versnellen.
  • Gebruik job matrix om meerdere besturingssysteem- en runtimeversies te testen.
  • Gebruik secrets voor gevoelige gegevens, verwezen als ${{ secrets.SECRET_NAME }}.

Deze cheat-sheet behandelt de basics van het gebruik, configureren en uitbreiden van GitHub Actions voor automatisering, CI/CD en meer. Voor meer details en updates, raadpleeg altijd de officiële GitHub-documentatie en action-repositories.

Veelgebruikte GitHub Actions

Hier is een praktische lijst met veelgebruikte GitHub Actions die helpen bij het automatiseren van CI/CD, testen, bouwen, implementeren en workflow-taken:

Kern Officiële Actions

Action Doel Belangrijke Voorbeeldparameters
actions/checkout Repositorycode uitchecken ref, submodules
actions/setup-node Node.js-omgeving instellen node-version, cache
actions/setup-python Python-omgeving instellen python-version
actions/setup-java Java JDK instellen distribution, java-version
actions/cache Cache voor afhankelijkheden en build-outputs path, key, restore-keys
actions/upload-artifact Build-artefacten uploaden name, path
actions/download-artifact Artefacten uit de workflow downloaden name, path
actions/github-script JavaScript uitvoeren met GitHub-context en API script
actions/create-release Een GitHub-release maken tag_name, release_name
actions/upload-release-asset Assets uploaden naar een release upload_url, asset_path
actions/labeler Labels automatisch toewijzen aan issues/PRs repo-token, configuration-path

Populaire Community- en Derden-Actions

Action Doel
docker/build-push-action Docker-images bouwen en pushen
actions/setup-go Go-omgeving instellen
super-linter/super-linter Universeel geautomatiseerd code-linting
trufflesecurity/trufflehog Scannen naar secrets en credentials
peaceiris/actions-gh-pages Statische sites implementeren op GitHub Pages
JamesIves/github-pages-deploy-action Projecten implementeren op GitHub Pages
peter-evans/create-pull-request Pull requests automatisch maken
softprops/action-gh-release GitHub Releases maken en uploaden
ad-m/github-push-action Wijzigingen terugpushen naar de GitHub-repository
actions/setup-dotnet .NET SDK instellen
azure/login Authenticeren bij Azure
google-github-actions/auth Authenticeren bij Google Cloud

Test-, QA- en Rapportage-Actions

Action Doel
actions/setup-ruby Ruby-omgeving instellen
codecov/codecov-action Code-dekkingsrapporten uploaden naar Codecov
coverallsapp/github-action Dekkingsresultaten uploaden naar Coveralls
dorny/test-reporter Testresultaten attachen aan GitHub Checks
stefanzweifel/git-auto-commit-action Wijzigingen in bestanden automatisch commiten en pushen

Implementatie- en Melding-Actions

Action Doel
appleboy/scp-action Bestanden uploaden via SCP
SamKirkland/FTP-Deploy-Action Bestanden implementeren via FTP/FTPS
cypress-io/github-action Cypress end-to-end tests uitvoeren
slackapi/slack-github-action Berichten naar Slack sturen
dawidd6/action-send-mail E-mails verzenden tijdens workflow-runs

Hulpmiddelen & Workflow-beheer

Action Doel
peter-evans/repository-dispatch Triggert workflows in externe repositories
fregante/setup-git-user Git-gebruikersgegevens instellen voor commits
andymckay/labeler Labels toewijzen aan issues en PRs op basis van paden
actions/configure-pages Publicatie naar GitHub Pages configureren
EndBug/add-and-commit Bestanden toevoegen en commiten binnen een workflow
dangoslen/changelog-enforcer Controleert of een changelog is bijgewerkt voor PRs

Hoe vind je meer?

Er zijn veel GitHub Actions die workflow-automatisering mogelijk maken, zoals geautomatiseerd testen, implementatie naar productie, meldingen en integraties met andere diensten. De GitHub Marketplace lijst duizenden actions op over categorieën zoals testen, beveiliging, implementatie, meldingen, codekwaliteit en integraties. Gecureerde lijsten zoals “Awesome Actions” zijn ook geweldig voor inspiratie en ontdekking.