GitHub Actions is mijn favoriete CI/CD-tool geworden. Gratis voor open-source en de integratie met GitHub is natuurlijk perfect.
Basis workflow
#Een eenvoudige workflow die tests draait bij elke push:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| name: Test & Build
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: pip install -r requirements.txt
- run: pytest --verbose
|
Docker image bouwen en pushen
# 1
2
3
4
5
6
7
8
9
10
11
12
13
14
| build:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v5
with:
push: true
tags: ghcr.io/${{ github.repository }}:latest
|
Deployment via SSH
#Na een succesvolle build deploy ik vaak via SSH naar de server:
1
2
3
4
5
6
7
8
9
10
11
12
13
| deploy:
needs: build
runs-on: ubuntu-latest
steps:
- uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SERVER_HOST }}
username: deploy
key: ${{ secrets.SSH_KEY }}
script: |
cd /opt/app
docker compose pull
docker compose up -d
|
Simpel, betrouwbaar en volledig geautomatiseerd.