-Aggiunte github actions per la compilazione dei container e l'esposizione
6.3 KiB
Configurazione GitHub Actions per Docker Container Registry
🔧 Setup Iniziale
Questa guida spiega come configurare il repository GitHub per abilitare la build automatica e il push delle immagini Docker.
📋 Prerequisiti
- Repository GitHub con il codice sorgente
- Abilitazione GitHub Packages per il repository
- Permessi di scrittura sui packages
⚙️ Configurazione Repository
1. Abilitazione GitHub Packages
Le GitHub Actions sono già configurate per usare il GITHUB_TOKEN automatico. Non è necessario creare token aggiuntivi.
2. Configurazione Secrets (Opzionale)
Se vuoi usare un registry diverso da GitHub Container Registry, aggiungi questi secrets:
- Vai su:
Settings→Secrets and variables→Actions - Click su
New repository secret - Aggiungi:
REGISTRY_USERNAME: Username del registryREGISTRY_PASSWORD: Password o token del registry
3. Abilitazione Workflow
Il workflow è già configurato in .github/workflows/docker-build.yml e si attiverà automaticamente su:
- Push su branch
main,dev,staging - Manualmente tramite
workflow_dispatch
🚀 Utilizzo
Build Automatica
Ogni volta che fai push su uno dei branch configurati, il workflow:
- ✅ Compila il progetto .NET
- 🐳 Crea immagini Docker per Linux e Windows
- 📤 Fa push su GitHub Container Registry
- 🏷️ Applica i tag appropriati basati sul branch
Tag Generati
Branch Main
latest(multi-platform)latest-windows(solo Windows)main-{sha}(commit specifico)main-{date}(timestamp)
Branch Dev
dev-latest(multi-platform)dev-latest-windows(solo Windows)dev-{sha}(commit specifico)dev-{date}(timestamp)
Branch Staging
staging-latest(multi-platform)staging-latest-windows(solo Windows)staging-{sha}(commit specifico)staging-{date}(timestamp)
Build Manuale
Per avviare una build manuale:
- Vai su
Actionsnel repository GitHub - Seleziona il workflow
Build and Push Docker Images - Click su
Run workflow - Seleziona il branch
- (Opzionale) Spunta
Force buildper forzare la build - Click su
Run workflow
🔐 Gestione Visibilità Container
Rendere il Container Pubblico (No Authentication Required)
Per consentire il pull senza autenticazione:
- Vai su:
https://github.com/[YOUR_USERNAME]/Data-Coupler/packages - Seleziona il package
data-coupler - Click su
Package settings(icona ingranaggio) - Scroll down fino a Danger Zone
- Click su
Change visibility - Seleziona
Public - Digita il nome del repository per confermare
- Click su
I understand, change package visibility
⚠️ Attenzione: Un container pubblico può essere scaricato da chiunque su internet.
Container Privato con Accesso Team
Per mantenere il container privato ma accessibile al team:
- Vai su
Package settings - Nella sezione Manage Actions access:
- Seleziona
Inherit access from source repository
- Seleziona
- Per dare accesso a utenti specifici:
- Scroll alla sezione Manage teams and people access
- Click su
Add teamsoAdd people - Seleziona l'utente/team e il livello di accesso (Read, Write, Admin)
Token per Pull Privati
Se il container rimane privato, gli utenti dovranno autenticarsi:
# 1. Crea un Personal Access Token
# GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
# Scope richiesto: read:packages
# 2. Login
echo "ghp_YOUR_TOKEN" | docker login ghcr.io -u YOUR_USERNAME --password-stdin
# 3. Pull
docker pull ghcr.io/alessiodalsi/data-coupler:latest
🔍 Verifica Build
Check Status Workflow
- Vai su
Actionsnel repository - Verifica che il workflow sia completato con successo (✅)
- Click sul workflow per vedere i dettagli
Verifica Immagini Pubblicate
- Vai su:
https://github.com/[YOUR_USERNAME]/Data-Coupler/packages - Verifica che il package
data-couplersia presente - Click sul package per vedere tutti i tag disponibili
Test Pull Immagine
# Test pull (se pubblico)
docker pull ghcr.io/alessiodalsi/data-coupler:latest
# Verifica immagine
docker images | grep data-coupler
# Test run
docker run -d -p 7550:7550 ghcr.io/alessiodalsi/data-coupler:latest
# Verifica funzionamento
curl http://localhost:7550/health
📊 Monitoraggio
Visualizzare Log di Build
- Vai su
Actions - Click sul workflow run
- Espandi i job
build-linuxebuild-windows - Visualizza i log dettagliati di ogni step
Statistiche Package
Nella pagina del package puoi vedere:
- 📈 Download totali
- 📦 Dimensione immagini
- 🏷️ Tag disponibili
- 📅 Data ultima modifica
🛠️ Troubleshooting
Workflow Fallisce
Errore: Permessi insufficienti
Error: failed to solve: failed to push: insufficient_scope
Soluzione: Verifica che le Actions abbiano permessi di scrittura:
Settings→Actions→General- Sezione Workflow permissions
- Seleziona
Read and write permissions - Salva
Errore: Build timeout
Error: The operation was canceled
Soluzione:
- Verifica che non ci siano file grandi non necessari
- Controlla il
.dockerignore - Aumenta il timeout nel workflow (default: 360 minuti)
Push Fallisce
Errore: Authentication required
Error: failed to authorize: failed to fetch anonymous token
Soluzione: Il GITHUB_TOKEN dovrebbe funzionare automaticamente. Se persiste:
- Vai su
Settings→Actions→General - Verifica che
GITHUB_TOKENabbia permessi packages
Immagine Non Si Avvia
Errore: Database not initialized
Error: Timeout durante l'inizializzazione del database
Soluzione: Monta un volume per persistere i dati:
docker run -d \
-v /var/lib/data-coupler:/var/lib/Data_Coupler \
ghcr.io/alessiodalsi/data-coupler:latest
📚 Risorse Aggiuntive
🆘 Supporto
Se riscontri problemi:
- Controlla i log del workflow su GitHub Actions
- Verifica la documentazione in
DOCKER_DEPLOYMENT.md - Apri una issue sul repository GitHub
Ultimo Aggiornamento: Gennaio 2026
Versione Workflow: 1.0