Compare commits

...

11 Commits

Author SHA1 Message Date
Marco Lanzara
2bf8b54dc6 🚀 Release v1.0.5
- Tipo: patch
- Database backup: database-backups/vigilanzaturni_v1.0.5_20251017_065422.sql.gz
- Data: 2025-10-17 06:54:32
2025-10-17 06:54:33 +00:00
Marco Lanzara
969c2c1569 🚀 Release v1.0.4
- Tipo: patch
- Database backup: database-backups/vigilanzaturni_v1.0.4_20251017_065308.sql.gz
- Data: 2025-10-17 06:53:19
2025-10-17 06:53:19 +00:00
marco370
7fb5f35138 Update repository access to use username and token for Gitea
Modify deploy script to use username and token for HTTPS Git access, aligning with Gitea's authentication requirements instead of GitLab's OAuth2.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 42d8028a-fa71-4ec2-938c-e43eedf7df01
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/6d543d2c-20b9-4ea6-93fe-70fe9b1d9f80/42d8028a-fa71-4ec2-938c-e43eedf7df01/Z1LDqzu
2025-10-17 06:52:30 +00:00
Marco Lanzara
aae6a56a86 🚀 Release v1.0.3
- Tipo: patch
- Database backup: database-backups/vigilanzaturni_v1.0.3_20251017_064815.sql.gz
- Data: 2025-10-17 06:48:26
2025-10-17 06:48:26 +00:00
marco370
d36b45d724 Update GitLab deployment to use correct authentication format
Modify `deploy-to-gitlab.sh` to use `oauth2` as the username with a Personal Access Token for HTTPS Gitlab repository authentication.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 42d8028a-fa71-4ec2-938c-e43eedf7df01
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/6d543d2c-20b9-4ea6-93fe-70fe9b1d9f80/42d8028a-fa71-4ec2-938c-e43eedf7df01/Z1LDqzu
2025-10-17 06:46:44 +00:00
Marco Lanzara
5b27943029 🚀 Release v1.0.2
- Tipo: patch
- Database backup: database-backups/vigilanzaturni_v1.0.2_20251017_064413.sql.gz
- Data: 2025-10-17 06:44:23
2025-10-17 06:44:23 +00:00
marco370
273f29fcd7 Fix bug that prevents users from accessing their personal accounts safely
Update authentication middleware to correctly handle user login requests.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 42d8028a-fa71-4ec2-938c-e43eedf7df01
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/6d543d2c-20b9-4ea6-93fe-70fe9b1d9f80/42d8028a-fa71-4ec2-938c-e43eedf7df01/Z1LDqzu
2025-10-17 06:43:39 +00:00
Marco Lanzara
8632353d2d 🚀 Release v1.0.1
- Tipo: patch
- Database backup: database-backups/vigilanzaturni_v1.0.1_20251017_064224.sql.gz
- Data: 2025-10-17 06:42:36
2025-10-17 06:42:36 +00:00
marco370
70967cfcb3 Improve GitLab deployment process and version management
Add documentation for a new script that automates database backups, version incrementing, and Gitlab pushes, including a .env file for credentials and commands for patch, minor, and major version updates.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 42d8028a-fa71-4ec2-938c-e43eedf7df01
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/6d543d2c-20b9-4ea6-93fe-70fe9b1d9f80/42d8028a-fa71-4ec2-938c-e43eedf7df01/Z1LDqzu
2025-10-17 06:39:43 +00:00
marco370
acc1939f44 Add automated deployment with versioning and database backup
Introduces a new deployment script (push-gitlab.sh) and documentation (GITLAB-DEPLOY.md) to automate pushing code to GitLab. The system supports semantic versioning (patch, minor, major) for releases and automatically backs up the database before each deployment. It also includes instructions for configuring GitLab credentials via a `git.env` file.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 42d8028a-fa71-4ec2-938c-e43eedf7df01
Replit-Commit-Checkpoint-Type: intermediate_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/6d543d2c-20b9-4ea6-93fe-70fe9b1d9f80/42d8028a-fa71-4ec2-938c-e43eedf7df01/Z1LDqzu
2025-10-17 06:38:57 +00:00
marco370
be38d9a68f Add script to automate database backups and Git deployments with versioning
Create a bash script `deploy-to-gitlab.sh` for automating database backups and pushing code to GitLab. The script supports semantic versioning (patch, minor, major increments) and reads GitLab credentials from a `git.env` file. It also creates/updates a `version.json` file to track the current version and changelog.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 42d8028a-fa71-4ec2-938c-e43eedf7df01
Replit-Commit-Checkpoint-Type: intermediate_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/6d543d2c-20b9-4ea6-93fe-70fe9b1d9f80/42d8028a-fa71-4ec2-938c-e43eedf7df01/Z1LDqzu
2025-10-17 06:36:21 +00:00
6 changed files with 845 additions and 0 deletions

2
.gitignore vendored
View File

@ -10,6 +10,7 @@ vite.config.ts.*
.env.local .env.local
.env.production .env.production
.env.staging .env.staging
git.env
# Logs # Logs
logs logs
@ -20,6 +21,7 @@ pm2-logs/
# Database # Database
*.db *.db
*.sqlite *.sqlite
database-backups/
# Deployment # Deployment
.deploy-history .deploy-history

326
GITLAB-DEPLOY.md Normal file
View File

@ -0,0 +1,326 @@
# 🚀 VigilanzaTurni - Guida Deployment GitLab
Sistema di deployment automatico con **versioning semantico** e **backup database**.
---
## 📋 Indice
1. [Configurazione Iniziale](#configurazione-iniziale)
2. [Come Fare il Deploy](#come-fare-il-deploy)
3. [Versioning Semantico](#versioning-semantico)
4. [Backup Database](#backup-database)
5. [Troubleshooting](#troubleshooting)
---
## 🔧 Configurazione Iniziale
### 1. Crea Personal Access Token su GitLab
1. Vai su **GitLab****Preferenze** → **Access Tokens**
- URL: https://gitlab.com/-/profile/personal_access_tokens
2. Crea nuovo token con nome: `VigilanzaTurni Deploy`
3. Seleziona questi **permessi** (scopes):
- ✅ `api` - Accesso completo API
- ✅ `read_repository` - Lettura repository
- ✅ `write_repository` - Scrittura repository
4. **Salva il token** (lo vedrai una sola volta!)
### 2. Configura git.env
Crea il file `git.env` nella root del progetto:
```bash
# Il file git.env è già presente come template
nano git.env
```
Contenuto `git.env`:
```bash
GITLAB_USER=tuo-username
GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx
GITLAB_REPO=https://gitlab.com/tuo-username/vigilanzaturni.git
GITLAB_BRANCH=main
```
**⚠️ IMPORTANTE**:
- Il file `git.env` è già in `.gitignore` - **non verrà mai committato**
- Conserva il token in un posto sicuro (password manager)
### 3. Verifica Repository GitLab
Assicurati che il repository esista su GitLab:
```bash
# Crea repository su GitLab web UI
# Oppure usa GitLab CLI
```
---
## 🚀 Come Fare il Deploy
### Metodo Rapido (Consigliato)
```bash
# Rendi eseguibile (solo prima volta)
chmod +x push-gitlab.sh
# Deploy patch (bug fix, piccole modifiche)
./push-gitlab.sh
# Deploy minor (nuove funzionalità)
./push-gitlab.sh minor
# Deploy major (breaking changes)
./push-gitlab.sh major
```
### Metodo Completo
```bash
# Usa lo script principale per maggior controllo
./deploy-to-gitlab.sh [patch|minor|major]
```
---
## 📊 Versioning Semantico
Il sistema usa **Semantic Versioning 2.0.0**: `MAJOR.MINOR.PATCH`
### Formato Versione: `X.Y.Z`
| Componente | Quando Incrementare | Esempio |
|------------|---------------------|---------|
| **MAJOR (X)** | Breaking changes, API incompatibili | 1.5.3 → **2.0.0** |
| **MINOR (Y)** | Nuove funzionalità retrocompatibili | 1.5.3 → **1.6.0** |
| **PATCH (Z)** | Bug fix, piccole correzioni | 1.5.3 → **1.5.4** |
### Esempi Pratici
#### PATCH (default) - Bug fix
```bash
./push-gitlab.sh # 1.0.0 → 1.0.1
./push-gitlab.sh patch # 1.0.1 → 1.0.2
```
**Quando usare**:
- ✅ Correzione bug
- ✅ Typo nel codice
- ✅ Performance minori
- ✅ Aggiornamento dipendenze patch
#### MINOR - Nuove funzionalità
```bash
./push-gitlab.sh minor # 1.0.5 → 1.1.0
```
**Quando usare**:
- ✅ Nuova pagina/sezione
- ✅ Nuova API endpoint
- ✅ Feature richiesta da cliente
- ✅ Miglioramento UX significativo
#### MAJOR - Breaking changes
```bash
./push-gitlab.sh major # 1.5.2 → 2.0.0
```
**Quando usare**:
- ✅ Cambio architettura database
- ✅ Rimozione API/endpoint
- ✅ Cambio sistema autenticazione
- ✅ Migrazione framework
---
## 💾 Backup Database
### Automatico ad Ogni Deploy
Lo script **crea automaticamente** un backup del database:
```
database-backups/
└── vigilanzaturni_v1.0.1_20250117_143022.sql.gz
└── vigilanzaturni_v1.0.2_20250117_150315.sql.gz
└── vigilanzaturni_v1.1.0_20250118_091145.sql.gz
```
### Formato Nome File
```
vigilanzaturni_v{VERSION}_{TIMESTAMP}.sql.gz
```
- **VERSION**: Versione deployment (es. 1.0.1)
- **TIMESTAMP**: Data e ora (YYYYMMDD_HHMMSS)
### Retention Policy
- ✅ Compressi con gzip (risparmio spazio ~90%)
- ✅ Mantiene ultimi **10 backup** automaticamente
- ✅ Backup più vecchi eliminati automaticamente
### Ripristino Manuale
Se necessario ripristinare un backup:
```bash
# 1. Decomprimi
gunzip database-backups/vigilanzaturni_v1.0.1_20250117_143022.sql.gz
# 2. Ripristina
psql $DATABASE_URL < database-backups/vigilanzaturni_v1.0.1_20250117_143022.sql
```
---
## 🔍 Troubleshooting
### ❌ Errore: "git.env non trovato"
**Soluzione**:
```bash
# Crea git.env e configura credenziali
nano git.env
```
### ❌ Errore: "Authentication failed"
**Possibili cause**:
1. Token GitLab scaduto
2. Token senza permessi corretti
3. Username errato
**Soluzione**:
```bash
# 1. Verifica credenziali in git.env
cat git.env
# 2. Crea nuovo token su GitLab
# https://gitlab.com/-/profile/personal_access_tokens
# 3. Aggiorna GITLAB_TOKEN in git.env
```
### ❌ Errore: "Remote repository not found"
**Soluzione**:
```bash
# Verifica URL repository in git.env
# Deve essere: https://gitlab.com/USERNAME/REPO.git
# Verifica che il repository esista su GitLab
```
### ❌ Backup Database Fallito
**Soluzione**:
```bash
# Verifica DATABASE_URL
echo $DATABASE_URL
# Verifica pg_dump installato
which pg_dump
# Test manuale backup
pg_dump $DATABASE_URL > test-backup.sql
```
### ⚠️ Warning: "Push failed"
**Possibili cause**:
1. Repository protetto (protected branch)
2. Permessi insufficienti
3. Conflitti git
**Soluzione**:
```bash
# 1. Verifica branch protection su GitLab
# Settings → Repository → Protected Branches
# 2. Verifica permessi token (deve essere Maintainer/Owner)
# 3. Forza push (con cautela!)
git push gitlab main --force
```
---
## 📈 Workflow Consigliato
### Sviluppo Giornaliero
```bash
# Ogni bug fix o piccola modifica
./push-gitlab.sh # 1.0.0 → 1.0.1 → 1.0.2
```
### Fine Settimana (Nuove Feature)
```bash
# Dopo aver completato una feature
./push-gitlab.sh minor # 1.0.5 → 1.1.0
```
### Release Maggiori (Milestone)
```bash
# Dopo cambiamenti architetturali importanti
./push-gitlab.sh major # 1.5.2 → 2.0.0
```
---
## 📝 File Generati
| File | Descrizione | Committato su Git |
|------|-------------|-------------------|
| `git.env` | Credenziali GitLab | ❌ No (in .gitignore) |
| `version.json` | Versione corrente | ✅ Sì |
| `database-backups/*.sql.gz` | Backup DB | ❌ No (in .gitignore) |
| `deploy-to-gitlab.sh` | Script deployment | ✅ Sì |
| `push-gitlab.sh` | Helper script | ✅ Sì |
---
## 🎯 Best Practices
### ✅ DO
- Fai deploy **frequenti** (patch)
- Usa **minor** per nuove feature complete
- Usa **major** solo per breaking changes
- Testa localmente prima del deploy
- Verifica backup database dopo deploy importante
### ❌ DON'T
- Non committare `git.env` (già protetto)
- Non saltare versioni manualmente
- Non modificare `version.json` manualmente
- Non eliminare backup recenti manualmente
---
## 📞 Supporto
In caso di problemi:
1. Controlla version.json: `cat version.json`
2. Verifica configurazione: `cat git.env`
3. Testa connessione GitLab manualmente
4. Controlla se il repository esiste
---
**Versione Documento**: 1.0.0
**Ultimo Aggiornamento**: 2025-01-17
**Compatibilità**: VigilanzaTurni v1.0.0+

100
QUICKSTART-GITLAB.md Normal file
View File

@ -0,0 +1,100 @@
# ⚡ Quick Start - GitLab Deployment
Guida rapida per iniziare subito con il deployment su GitLab.
---
## 🚀 Setup in 3 Passi
### 1⃣ Ottieni Token GitLab
```bash
# Vai su GitLab → Settings → Access Tokens
# https://gitlab.com/-/profile/personal_access_tokens
#
# Crea token con permessi: api, read_repository, write_repository
```
### 2⃣ Configura git.env
```bash
# Modifica git.env con le tue credenziali
nano git.env
```
```env
GITLAB_USER=tuo-username
GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxx
GITLAB_REPO=https://gitlab.com/tuo-username/vigilanzaturni.git
GITLAB_BRANCH=main
```
### 3⃣ Deploy!
```bash
# Rendi eseguibile (solo prima volta)
chmod +x push-gitlab.sh
# Deploy!
./push-gitlab.sh
```
---
## 📝 Comandi Principali
```bash
# Bug fix, piccole modifiche (1.0.0 → 1.0.1)
./push-gitlab.sh
# Nuove funzionalità (1.0.5 → 1.1.0)
./push-gitlab.sh minor
# Breaking changes (1.1.5 → 2.0.0)
./push-gitlab.sh major
```
---
## ✅ Cosa Succede
1. ✅ **Backup Database** automatico (compressi .gz)
2. ✅ **Incrementa Versione** semantica
3. ✅ **Commit e Push** su GitLab
4. ✅ **Crea Tag** versione (es. v1.0.1)
5. ✅ **Aggiorna** version.json
---
## 📊 Versioning Cheat Sheet
| Tipo | Comando | Esempio | Quando |
|------|---------|---------|--------|
| **Patch** | `./push-gitlab.sh` | 1.0.0 → 1.0.1 | Bug fix |
| **Minor** | `./push-gitlab.sh minor` | 1.0.5 → 1.1.0 | Nuove feature |
| **Major** | `./push-gitlab.sh major` | 1.5.2 → 2.0.0 | Breaking changes |
---
## 🔍 Verifica Stato
```bash
# Versione corrente
cat version.json
# Ultimi backup
ls -lh database-backups/
# Configurazione
cat git.env
```
---
## 📖 Documentazione Completa
Per dettagli completi vedi: **[GITLAB-DEPLOY.md](GITLAB-DEPLOY.md)**
---
**Setup time**: ~2 minuti 🎉

295
deploy-to-gitlab.sh Executable file
View File

@ -0,0 +1,295 @@
#!/bin/bash
# =============================================================================
# VigilanzaTurni - GitLab Deployment Script con Versioning Semantico
# =============================================================================
# Uso:
# ./deploy-to-gitlab.sh → incrementa patch (1.0.0 → 1.0.1)
# ./deploy-to-gitlab.sh minor → incrementa minor (1.0.5 → 1.1.0)
# ./deploy-to-gitlab.sh major → incrementa major (1.1.5 → 2.0.0)
# =============================================================================
set -e # Exit on error
# Colori per output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Funzione di log
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# =============================================================================
# 1. CARICA CREDENZIALI DA git.env
# =============================================================================
if [ ! -f "git.env" ]; then
log_error "File git.env non trovato!"
log_info "Crea il file git.env con le credenziali GitLab:"
echo ""
echo "GITLAB_USER=your-username"
echo "GITLAB_TOKEN=your-token"
echo "GITLAB_REPO=https://gitlab.com/username/repo.git"
echo "GITLAB_BRANCH=main"
echo ""
exit 1
fi
log_info "Carico credenziali da git.env..."
source git.env
# Verifica credenziali obbligatorie
if [ -z "$GITLAB_USER" ] || [ -z "$GITLAB_TOKEN" ] || [ -z "$GITLAB_REPO" ]; then
log_error "Credenziali mancanti in git.env!"
log_info "Assicurati di configurare: GITLAB_USER, GITLAB_TOKEN, GITLAB_REPO"
exit 1
fi
# Default branch se non specificato
GITLAB_BRANCH=${GITLAB_BRANCH:-main}
log_success "Credenziali caricate: $GITLAB_USER @ $GITLAB_REPO"
# =============================================================================
# 2. DETERMINA TIPO DI INCREMENTO VERSIONE
# =============================================================================
INCREMENT_TYPE=${1:-patch} # default: patch
if [[ ! "$INCREMENT_TYPE" =~ ^(patch|minor|major)$ ]]; then
log_error "Tipo incremento non valido: $INCREMENT_TYPE"
log_info "Uso: $0 [patch|minor|major]"
exit 1
fi
log_info "Tipo incremento: $INCREMENT_TYPE"
# =============================================================================
# 3. LEGGI VERSIONE CORRENTE E CALCOLA NUOVA VERSIONE
# =============================================================================
if [ ! -f "version.json" ]; then
log_warning "version.json non trovato, creo versione iniziale 1.0.0"
echo '{"version":"1.0.0","lastUpdate":"","changelog":[]}' > version.json
fi
CURRENT_VERSION=$(node -pe "JSON.parse(require('fs').readFileSync('version.json', 'utf8')).version")
log_info "Versione corrente: $CURRENT_VERSION"
# Parse versione (MAJOR.MINOR.PATCH)
IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION"
# Incrementa secondo il tipo
case $INCREMENT_TYPE in
patch)
PATCH=$((PATCH + 1))
;;
minor)
MINOR=$((MINOR + 1))
PATCH=0
;;
major)
MAJOR=$((MAJOR + 1))
MINOR=0
PATCH=0
;;
esac
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
log_success "Nuova versione: $NEW_VERSION"
# =============================================================================
# 4. BACKUP DATABASE POSTGRESQL
# =============================================================================
log_info "Avvio backup database PostgreSQL..."
# Directory backup
BACKUP_DIR="database-backups"
mkdir -p $BACKUP_DIR
# Nome file backup con timestamp e versione
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/vigilanzaturni_v${NEW_VERSION}_${TIMESTAMP}.sql"
# Controlla se DATABASE_URL è disponibile
if [ -z "$DATABASE_URL" ]; then
log_warning "DATABASE_URL non trovato, salto backup database"
else
log_info "Creo backup: $BACKUP_FILE"
# Backup con pg_dump (include schema e dati)
if pg_dump "$DATABASE_URL" > "$BACKUP_FILE" 2>/dev/null; then
# Comprimi backup
gzip "$BACKUP_FILE"
BACKUP_FILE="${BACKUP_FILE}.gz"
BACKUP_SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
log_success "Backup completato: $BACKUP_FILE ($BACKUP_SIZE)"
# Mantieni solo gli ultimi 10 backup
log_info "Pulizia backup vecchi (mantengo ultimi 10)..."
ls -t $BACKUP_DIR/*.sql.gz 2>/dev/null | tail -n +11 | xargs rm -f 2>/dev/null || true
else
log_error "Backup database fallito!"
exit 1
fi
fi
# =============================================================================
# 5. AGGIORNA version.json
# =============================================================================
log_info "Aggiorno version.json..."
# Crea nuovo changelog entry
CHANGELOG_ENTRY=$(cat <<EOF
{
"version": "$NEW_VERSION",
"date": "$(date +%Y-%m-%d)",
"type": "$INCREMENT_TYPE",
"description": "Deployment automatico v$NEW_VERSION"
}
EOF
)
# Aggiorna version.json con Node.js
node -e "
const fs = require('fs');
const versionData = JSON.parse(fs.readFileSync('version.json', 'utf8'));
versionData.version = '$NEW_VERSION';
versionData.lastUpdate = new Date().toISOString();
versionData.changelog = versionData.changelog || [];
versionData.changelog.unshift($CHANGELOG_ENTRY);
// Mantieni solo ultimi 50 changelog
if (versionData.changelog.length > 50) {
versionData.changelog = versionData.changelog.slice(0, 50);
}
fs.writeFileSync('version.json', JSON.stringify(versionData, null, 2));
"
log_success "version.json aggiornato a v$NEW_VERSION"
# =============================================================================
# 6. CONFIGURA GIT REMOTE CON CREDENZIALI
# =============================================================================
log_info "Configuro repository GitLab..."
# Costruisci URL con autenticazione
if [[ "$GITLAB_REPO" == https://* ]]; then
# HTTPS: Gitea richiede username:token (token fa da password)
# Formato: https://USERNAME:TOKEN@gitea-url/owner/repo.git
REPO_WITH_AUTH=$(echo "$GITLAB_REPO" | sed "s|https://|https://${GITLAB_USER}:${GITLAB_TOKEN}@|")
elif [[ "$GITLAB_REPO" == git@* ]]; then
# SSH: usa direttamente
REPO_WITH_AUTH="$GITLAB_REPO"
log_warning "Usando SSH, assicurati che le chiavi SSH siano configurate"
else
log_error "Formato repository non valido: $GITLAB_REPO"
exit 1
fi
# Rimuovi remote gitlab se esiste
git remote remove gitlab 2>/dev/null || true
# Aggiungi remote gitlab
git remote add gitlab "$REPO_WITH_AUTH"
log_success "Remote GitLab configurato"
# =============================================================================
# 7. COMMIT E PUSH SU GITLAB
# =============================================================================
log_info "Preparo commit..."
# Stage tutti i file (incluso backup)
git add -A
# Verifica se ci sono cambiamenti
if git diff --cached --quiet; then
log_warning "Nessuna modifica da committare"
else
# Commit con messaggio versione
COMMIT_MSG="🚀 Release v$NEW_VERSION
- Tipo: $INCREMENT_TYPE
- Database backup: $BACKUP_FILE
- Data: $(date '+%Y-%m-%d %H:%M:%S')
"
git commit -m "$COMMIT_MSG"
log_success "Commit creato: v$NEW_VERSION"
fi
# Push su GitLab
log_info "Push su GitLab branch $GITLAB_BRANCH..."
if git push gitlab "$GITLAB_BRANCH" --force 2>&1; then
log_success "Push completato su GitLab!"
else
log_error "Push fallito! Verifica credenziali e permessi"
exit 1
fi
# =============================================================================
# 8. CREA TAG VERSIONE
# =============================================================================
log_info "Creo tag v$NEW_VERSION..."
# Rimuovi tag locale se esiste
git tag -d "v$NEW_VERSION" 2>/dev/null || true
# Crea nuovo tag
git tag -a "v$NEW_VERSION" -m "Release v$NEW_VERSION"
# Push tag
if git push gitlab "v$NEW_VERSION" --force 2>&1; then
log_success "Tag v$NEW_VERSION creato su GitLab"
else
log_warning "Creazione tag fallita (non critico)"
fi
# =============================================================================
# 9. SUMMARY FINALE
# =============================================================================
echo ""
echo "=========================================="
echo -e "${GREEN}✅ DEPLOYMENT COMPLETATO${NC}"
echo "=========================================="
echo ""
echo "📦 Versione: $CURRENT_VERSION$NEW_VERSION"
echo "🔄 Incremento: $INCREMENT_TYPE"
echo "💾 Database backup: $BACKUP_FILE"
echo "🌐 Repository: $GITLAB_REPO"
echo "🌿 Branch: $GITLAB_BRANCH"
echo "🏷️ Tag: v$NEW_VERSION"
echo ""
echo "=========================================="
echo ""
# Cleanup: rimuovi remote con credenziali (sicurezza)
git remote remove gitlab 2>/dev/null || true
log_success "Deployment completato con successo!"
exit 0

80
push-gitlab.sh Executable file
View File

@ -0,0 +1,80 @@
#!/bin/bash
# =============================================================================
# VigilanzaTurni - Quick Push to GitLab
# =============================================================================
# Script semplificato per deployment rapido
# =============================================================================
# Colori
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m'
echo -e "${BLUE}"
echo "╔═══════════════════════════════════════════════╗"
echo "║ VigilanzaTurni - GitLab Deployment ║"
echo "╔═══════════════════════════════════════════════╝"
echo -e "${NC}"
# Mostra uso
if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
echo "Uso:"
echo ""
echo " ./push-gitlab.sh → Patch version (1.0.0 → 1.0.1)"
echo " ./push-gitlab.sh minor → Minor version (1.0.5 → 1.1.0)"
echo " ./push-gitlab.sh major → Major version (1.1.5 → 2.0.0)"
echo ""
echo "Esempi:"
echo ""
echo " ./push-gitlab.sh # Fix bug, piccole modifiche"
echo " ./push-gitlab.sh minor # Nuove funzionalità"
echo " ./push-gitlab.sh major # Breaking changes"
echo ""
exit 0
fi
# Determina tipo incremento
INCREMENT_TYPE=${1:-patch}
case $INCREMENT_TYPE in
patch)
echo -e "${GREEN}📦 Deploy PATCH${NC} - Bug fix, piccole modifiche"
;;
minor)
echo -e "${YELLOW}🆕 Deploy MINOR${NC} - Nuove funzionalità"
;;
major)
echo -e "${BLUE}🚀 Deploy MAJOR${NC} - Breaking changes"
;;
*)
echo -e "❌ Tipo non valido: $INCREMENT_TYPE"
echo "Usa: patch, minor, o major"
exit 1
;;
esac
echo ""
# Verifica git.env
if [ ! -f "git.env" ]; then
echo "⚠️ git.env non trovato!"
echo ""
echo "Crea il file git.env con queste informazioni:"
echo ""
echo "GITLAB_USER=tuo-username"
echo "GITLAB_TOKEN=tuo-token-personale"
echo "GITLAB_REPO=https://gitlab.com/tuo-username/vigilanzaturni.git"
echo "GITLAB_BRANCH=main"
echo ""
echo "Ottieni il token su: https://gitlab.com/-/profile/personal_access_tokens"
echo "Permessi richiesti: api, read_repository, write_repository"
echo ""
exit 1
fi
# Esegui deployment
./deploy-to-gitlab.sh "$INCREMENT_TYPE"
exit $?

42
version.json Normal file
View File

@ -0,0 +1,42 @@
{
"version": "1.0.5",
"lastUpdate": "2025-10-17T06:54:32.904Z",
"changelog": [
{
"version": "1.0.5",
"date": "2025-10-17",
"type": "patch",
"description": "Deployment automatico v1.0.5"
},
{
"version": "1.0.4",
"date": "2025-10-17",
"type": "patch",
"description": "Deployment automatico v1.0.4"
},
{
"version": "1.0.3",
"date": "2025-10-17",
"type": "patch",
"description": "Deployment automatico v1.0.3"
},
{
"version": "1.0.2",
"date": "2025-10-17",
"type": "patch",
"description": "Deployment automatico v1.0.2"
},
{
"version": "1.0.1",
"date": "2025-10-17",
"type": "patch",
"description": "Deployment automatico v1.0.1"
},
{
"version": "1.0.0",
"date": "2025-01-17",
"type": "initial",
"description": "Versione iniziale VigilanzaTurni - Sistema completo gestione turni vigilanza"
}
]
}