73 lines
2.3 KiB
YAML
73 lines
2.3 KiB
YAML
name: Docker Image CI
|
|
|
|
on:
|
|
push:
|
|
branches: [ "main" ]
|
|
pull_request:
|
|
branches: [ "main" ]
|
|
|
|
jobs:
|
|
build-and-push:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
# Stap 1: Code ophalen
|
|
- uses: actions/checkout@v4
|
|
|
|
# Stap 2: Versienummer ophalen uit package.json
|
|
- name: Extract Angular version
|
|
id: get_version
|
|
run: echo "::set-output name=version::$(cat package.json | jq -r '.version')"
|
|
|
|
# Stap 3: Inloggen bij Docker Hub
|
|
- name: Log in to Docker Hub
|
|
uses: docker/login-action@v2
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
# Stap 4: Docker-image bouwen en taggen met Angular-versie
|
|
- name: Build the Docker image
|
|
run: docker build . --file Dockerfile --tag veenm/weetikveel:${{ steps.get_version.outputs.version }} --tag veenm/weetikveel:latest
|
|
|
|
# Stap 5: Docker-image pushen naar Docker Hub (huidige versie tag)
|
|
- name: Push the Docker image (version)
|
|
run: docker push veenm/weetikveel:${{ steps.get_version.outputs.version }}
|
|
|
|
# Stap 6: Docker-image pushen naar Docker Hub (latest tag)
|
|
- name: Push the Docker image (latest)
|
|
run: docker push veenm/weetikveel:latest
|
|
|
|
deploy:
|
|
needs: build-and-push
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
# Stap 1: Code ophalen
|
|
- uses: actions/checkout@v4
|
|
|
|
# Stap 3: Maak verbinding via SSH naar de TrueNAS SCALE server
|
|
- name: SSH into TrueNAS SCALE
|
|
uses: appleboy/ssh-action@v0.1.10
|
|
with:
|
|
host: ${{ secrets.TRUENAS_HOST }}
|
|
username: ${{ secrets.TRUENAS_USER }}
|
|
password: ${{ secrets.TRUENAS_PASSWORD }}
|
|
port: ${{ secrets.TRUENAS_PORT }}
|
|
script: |
|
|
# Kubernetes-configuratie instellen
|
|
export KUBEVERSION=/etc/rancher/k3s/k3s.yaml
|
|
export KUBECONFIG=$KUBEVERSION
|
|
|
|
# Update deployment
|
|
k3s kubectl apply -f deployment.yaml
|
|
k3s kubectl apply -f service.yaml
|
|
|
|
# Update image in deployment
|
|
k3s kubectl set image deployment/weetikveel weetikveel=veenm/weetikveel:${{ needs.build-and-push.outputs.version }} --record
|
|
|
|
# Controle en status
|
|
k3s kubectl rollout status deployment/weetikveel
|
|
k3s kubectl get pods
|
|
k3s kubectl get service
|