From 9ca282ca3fd8b0ac2ba01522ca0116c38a242cc5 Mon Sep 17 00:00:00 2001 From: veenm Date: Thu, 13 Mar 2025 21:56:51 +0100 Subject: [PATCH] deploy to test toegevoegd --- .github/workflows/deploy-docker-to-tst.yml | 85 ++++++++++++++++++++++ Dockerfile-tst | 22 ++++++ 2 files changed, 107 insertions(+) create mode 100644 .github/workflows/deploy-docker-to-tst.yml create mode 100644 Dockerfile-tst diff --git a/.github/workflows/deploy-docker-to-tst.yml b/.github/workflows/deploy-docker-to-tst.yml new file mode 100644 index 0000000..70cc0aa --- /dev/null +++ b/.github/workflows/deploy-docker-to-tst.yml @@ -0,0 +1,85 @@ +name: Docker Image CI + +on: + push: + branches: + - develop + tags: + - "docker-build-*" + +jobs: + build-and-push: + runs-on: ubuntu-latest + + steps: + # Stap 1: Code ophalen + - uses: actions/checkout@v4 + + # Stap 2: Versienummer ophalen uit package.json en opslaan als artifact + - name: Extract Angular version + run: | + echo "$(cat package.json | jq -r '.version')" > version.txt + - name: Save version as artifact + uses: actions/upload-artifact@v3 + with: + name: version + path: version.txt + + # 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: | + VERSION=$(cat version.txt) + docker buildx build . --file Dockerfile-tst --tag veenm/paypoint:$VERSION-SNAPSHOT --platform linux/amd64 + + # Stap 5: Docker-image pushen naar Docker Hub (huidige versie tag) + - name: Push the Docker image (version-snapshot) + run: | + VERSION=$(cat version.txt) + docker push veenm/paypoint:$VERSION-SNAPSHOT + + deploy: + needs: build-and-push + runs-on: ubuntu-latest + + steps: + # Stap 1: Artifact ophalen + - name: Download version artifact + uses: actions/download-artifact@v3 + with: + name: version + + # Stap 2: Lees versie uit het artifact + - name: Read version + id: read_version + run: echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV + + # Stap 3: Maak verbinding via SSH naar de Alpine server en update de container + - name: SSH into Alpine and update Docker container + uses: appleboy/ssh-action@v0.1.10 + with: + host: ${{ secrets.ALPINE_HOST }} + username: ${{ secrets.ALPINE_USER }} + password: ${{ secrets.ALPINE_PASSWORD }} + script: | + VERSION=${{ env.VERSION }} + echo "Gekozen versie: $VERSION-SNAPSHOT" + + # Stop en verwijder de huidige container + docker stop paypoint || true + docker rm paypoint || true + + # Haal de nieuwste image binnen + docker pull veenm/paypoint:$VERSION-SNAPSHOT + + # Start een nieuwe container + docker run -d --name paypoint --restart unless-stopped -p 15001:80 veenm/paypoint:$VERSION-SNAPSHOT + + # Opruimen oude images + docker image prune -f diff --git a/Dockerfile-tst b/Dockerfile-tst new file mode 100644 index 0000000..6626956 --- /dev/null +++ b/Dockerfile-tst @@ -0,0 +1,22 @@ +# Gebruik een multi-architecture versie van Node +FROM node:23.0.0 as build + +WORKDIR /app + +COPY package*.json ./ + +RUN npm install + +RUN npm install -g @angular/cli + +COPY . . + +RUN ng build --configuration=production + +# Gebruik een multi-architecture versie van Nginx +FROM nginx:latest + +# Kopieer de gecompileerde bestanden van Angular naar de Nginx-webserver +COPY --from=build app/dist/pay-point/browser /usr/share/nginx/html + +EXPOSE 80