Aggiorna il workflow di deploy e aggiungi script di manutenzione per la gestione dello spazio Docker
Some checks failed
Deploy / deploy (push) Failing after 1m22s

This commit is contained in:
2026-01-23 10:16:11 +01:00
parent 2eddd152d7
commit 416e7a27a7
3 changed files with 112 additions and 98 deletions

View File

@@ -1,107 +1,21 @@
name: Build and Deploy
on:
push:
branches:
- main
- master
pull_request:
branches:
- main
- master
name: Deploy
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build application
run: npm run build
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
deploy:
needs: build
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
container:
image: ghcr.io/catthehacker/ubuntu:act-20.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Checkout del codice
uses: actions/checkout@v3
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: dist
path: dist/
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Docker image
- name: Deploy
run: |
docker build -t vue-demo:latest .
docker tag vue-demo:latest vue-demo:${{ github.sha }}
docker compose down --remove-orphans
docker compose up -d --build
- name: Save Docker image
run: docker save vue-demo:latest | gzip > vue-demo-image.tar.gz
# Deploy su server con Traefik via SSH
- name: Deploy to server
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "docker-compose.yml,vue-demo-image.tar.gz"
target: "${{ secrets.DEPLOY_PATH }}"
- name: Create .env file on server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd ${{ secrets.DEPLOY_PATH }}
echo "DOMAIN=${{ secrets.DOMAIN }}" > .env
- name: Deploy with Docker and Traefik
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd ${{ secrets.DEPLOY_PATH }}
# Carica l'immagine Docker
docker load < vue-demo-image.tar.gz
# Crea rete Traefik se non esiste
docker network inspect traefik-network >/dev/null 2>&1 || docker network create traefik-network
# Ferma e rimuovi container precedente
docker-compose down
# Avvia nuovo container
docker-compose up -d
# Cleanup vecchie immagini
docker image prune -f
- name: Pulizia
run: docker system prune -f