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

Een korte uitleg over veelvoorkomende GitHub Actions en hun structuur.

Inhoud

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.

github actions flow

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.