59 lines
1.8 KiB
YAML
59 lines
1.8 KiB
YAML
name: Production Build & Deploy
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- main
|
|
- staging
|
|
|
|
jobs:
|
|
build-and-deploy:
|
|
runs-on: webserver
|
|
container:
|
|
image: catthehacker/ubuntu:act-latest # Behebt den "docker: command not found" Fehler
|
|
steps:
|
|
- name: Code auschecken
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Docker login to Gitea registry
|
|
run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login gitea.hephex.de -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
|
|
|
- name: Build Docker image
|
|
run: |
|
|
docker build -t gitea.hephex.de/daniel/websitedummy:latest -f Dockerfile .
|
|
|
|
- name: Push Docker image
|
|
run: docker push gitea.hephex.de/daniel/websitedummy:latest
|
|
|
|
- name: Clean up runner Docker cache
|
|
run: |
|
|
docker image prune -f
|
|
docker builder prune -f
|
|
|
|
- name: Deploy via SSH to Debian Server
|
|
uses: appleboy/ssh-action@v1.0.3 # Aktualisiert auf eine stabilere Version
|
|
with:
|
|
host: 192.168.178.164
|
|
username: ${{ secrets.PROXMOX_USER }}
|
|
key: ${{ secrets.PROXMOX_SSH_KEY }}
|
|
script: |
|
|
mkdir -p /opt/websitedummy
|
|
cd /opt/websitedummy
|
|
|
|
# Erstellt die docker-compose.yml mit korrektem Port-Mapping
|
|
cat << 'EOF' > docker-compose.yml
|
|
version: '3.8'
|
|
services:
|
|
website:
|
|
image: gitea.hephex.de/daniel/websitedummy:latest
|
|
restart: always
|
|
ports:
|
|
- "8080:8080"
|
|
EOF
|
|
|
|
echo "${{ secrets.REGISTRY_TOKEN }}" | docker login gitea.hephex.de -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
|
docker compose pull
|
|
docker compose up -d
|
|
docker image prune -f
|