Naar de hoofdinhoud gaan
  1. Blog/

CI/CD pipelines met GitHub Actions

·1 min
Auteur
Lars van der Berg
Ik bouw snelle, veilige websites en API’s. Gevestigd in Amsterdam.

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.