Μeer informatie over GitHub Actions
Wat zijn GitHub Actions?
GitHub Actions is een CI/CD-tool (Uitleg over CI/CD) die het mogelijk maakt om automatisch workflows uit te voeren in reactie op gebeurtenissen in een GitHub-repository, zoals push- of pull-request-activiteiten. Met GitHub Actions kun je eenvoudig geautomatiseerde workflows opzetten voor builds, tests, en deployments.
Hoe zit GitHub Actions in elkaar?
Een workflow wordt gedefinieerd in een .yml
-bestand dat zich in de map .github/workflows/
bevindt. De basisstructuur van een workflowbestand is als volgt:
name: Example name for a workflow
on:
event_type:
branches:
- main
jobs:
naam-van-een-job:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Run a script
run: |
echo "Hello, World!"
Uitleg van de commando’s
name: Example name for a workflow
name
: De naam van de workflow die zichtbaar is in GitHub. Het is handig om hier een korte duidelijke beschrijving staat wat de workflow doet.
on:
push:
branches:
- main
on
: Dit specificeert wat er moet gebeuren om de workflow te laten runnenpush
: Dit specificeert op basis van welke actie de workflow getriggerd wordt. Dit kunnen ook andere event types zijn:pull
commit
pull_request
release
schedule
workflow_dispatch
branches
: Dit specificeert op welke branch de actie moet zijn uitgevoerd om de workflow te triggeren.
jobs:
naam-van-een-job:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Run a script
run: |
echo "Hello, World!"
jobs
: Dit kan een lijst zijn van alle verschillende taken die uitgevoerd moeten worden. In dit voorbeeld is er één job.naam-van-een-job
: De naam van een job die zichtbaar is in GitHub. Deze naam kan geen spaties bevatten, alleen letters,-
en_
.runs-on
: Specificeert op welk besturingssysteem de job moet werken.steps
: Dit is een lijst van de stappen die de action op volgorde zal doorlopen. Elke stap heeft weer een eigen vorm.name
: De naam van de stap die zichtbaar is op GitHub.uses
: De actie die de stap moet uitvoeren op basis van al bestaande actions. Dit kunnen eigen actions zijn op actions van andere mensen.run: |
: Dit kan allerlei verschillende commando’s uitvoeren van bijvoorbeeld een terminal, python of npm.
Wat kan je met GitHub Actions?
GitHub Actions kan gebruikt worden om automatische ontwikkelstraten op te stellen. Een paar use cases voor GitHub Actions:
- Automatische build en test
- Code kwaliteitscontrole
- Automatisch deployen naar productie
- Versiebeheer van releases
Verschil met githooks
GitHub actions en githooks lijken veel op elkaar maar doen wel andere acties.
- Locatie:
- GitHub actions worden extern op de GitHub servers gerund.
- Githooks worden alleen uitgevoerd op je lokale machine.
- Toepassing:
- GitHub actions worden vooral toegepast op CI/CD pipelines.
- Githooks worden gebruikt voor lokale automatisering bij git acties zoals een commit of een push.
Casus
Anne en Bert hebben een werkende versie van een project kunnen maken en dit deployen zij ook op een website. Nu willen zij dat als zij een commit maken op de
main
-branch, dat er automatisch opnieuw gedeployed wordt. Hiervoor gaan zij aan de slag om een workflow op te stellen waarin zij door een push opmain
de commando uit laten voeren om een nieuwe deployement op te starten op hun hosting omgeving.
Overige commando’s
# Paths-ignore
on:
push:
branches:
- main
paths-ignore:
- `.github/**`
# Paths
on:
push:
branches:
- main
paths:
- `.github/**`
paths-ignore
: Dit zegt tegen de action dat de content in de folder van.github
moet negeren.-
- In bovenstaand voorbeeld wordt de action uitgevoerd als er op een push is op de main branch behalve als de veranderingen alleen in de
.github
folder zijn.
- In bovenstaand voorbeeld wordt de action uitgevoerd als er op een push is op de main branch behalve als de veranderingen alleen in de
-
- De tegenhanger hiervan,
paths
, zorgt ervoor dat de action dus alleen op die folders let.- In bovenstaand voorbeeld wordt de action uitgevoerd als er op een push is op de main branch met veranderingen in de
.github
folder.
- In bovenstaand voorbeeld wordt de action uitgevoerd als er op een push is op de main branch met veranderingen in de
permissions:
contents: read
issues: write
pull-requests: read
permissions:
Permissions geven de optie aan de action welke rechten er zijn voor bepaalde acties, zoalscontents
,issues
enpull-requests
.permissions
kan voor dejobs
geplaatst worden, maar kan ook in een job worden benoemd om de job aparte rechten te geven.
jobs:
naam-van-een-job:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Run a script
run: |
echo "Hello, World!"
env:
API_KEY: ${{ secrets.API_KEY }}
env
: env secrets kunnen aangemaakt worden in de settings van een repository.- Secrets worden beschermd van log bestanden.
- Secrets worden geencrypt door GitHub en zijn alleen blootgesteld tijdens runtime.
- Secrets bevatten belangrijke data (bijv. wachtwoorden, API sleutels) wat niet publiek beschikbaar moet zijn.
Bronnen
Uitleg over CI/CD: https://www.redhat.com/en/topics/devops/what-is-ci-cd
Meer over Workflows: https://docs.github.com/en/actions/writing-workflows
Volgende stap: 10. GitHub website