# Gitea Actions per Docker - Raspberry Pi Questo progetto utilizza Gitea Actions per automatizzare la build e il deployment delle immagini Docker per architetture ARM (Raspberry Pi). ## Workflows Disponibili ### 1. docker-build.yml Build e push automatico delle immagini Docker multi-architettura per Raspberry Pi. **Trigger:** - Push su branch `main`, `master`, o `develop` - Creazione di tag con pattern `v*` (es. v1.0.0) - Pull request su `main` o `master` **Architetture supportate:** - `linux/arm/v6` - Raspberry Pi Zero, Pi 1 - `linux/arm/v7` - Raspberry Pi 2, 3, 4 (32-bit) - `linux/arm64` - Raspberry Pi 3, 4 (64-bit) ### 2. docker-test.yml Test della build Docker senza pubblicazione. **Trigger:** - Pull request su branch principali ### 3. docker-cleanup.yml Pulizia periodica delle immagini Docker vecchie. **Trigger:** - Schedulato: ogni domenica alle 2:00 AM - Manuale: tramite workflow_dispatch ## Configurazione ### Secrets Richiesti Per utilizzare questi workflows, devi configurare i seguenti secrets in Gitea: 1. **DOCKER_USERNAME**: Il tuo username Docker Hub 2. **DOCKER_PASSWORD**: Il tuo password/token Docker Hub #### Come aggiungere i secrets in Gitea: 1. Vai nelle impostazioni del repository 2. Seleziona `Secrets` → `Actions` 3. Aggiungi i seguenti secrets: - Nome: `DOCKER_USERNAME`, Valore: `tuo-username-dockerhub` - Nome: `DOCKER_PASSWORD`, Valore: `tuo-password-o-token-dockerhub` ### Configurazione Runner Gitea Assicurati di avere un Gitea Actions runner configurato. Se stai usando un Raspberry Pi come runner: ```bash # Installa il runner Gitea (act_runner) wget https://dl.gitea.com/act_runner/latest/act_runner-latest-linux-arm64 -O act_runner chmod +x act_runner # Registra il runner ./act_runner register --instance https://tuo-gitea-server.com --token IL_TUO_TOKEN # Avvia il runner ./act_runner daemon ``` ## Tag e Versioning Le immagini Docker vengono taggate automaticamente: - `latest` - ultima versione del branch principale - `main` / `master` / `develop` - nome del branch - `v1.2.3` - versioni semver dai tag Git - `1.2` - major.minor dai tag semver - `pr-123` - numero della pull request ## Build Locale Per testare la build localmente: ```bash # Build per Raspberry Pi 4 (64-bit) docker buildx build --platform linux/arm64 -f Dockerfile.multiarch -t ha-voltronic-mqtt:test . # Build per Raspberry Pi 3 (32-bit) docker buildx build --platform linux/arm/v7 -f Dockerfile.multiarch -t ha-voltronic-mqtt:test . # Build multi-arch (richiede buildx con QEMU) docker buildx build --platform linux/arm/v6,linux/arm/v7,linux/arm64 \ -f Dockerfile.multiarch -t ha-voltronic-mqtt:test . ``` ## Cache I workflow utilizzano GitHub Actions cache (compatibile con Gitea) per velocizzare le build successive: - `cache-from: type=gha` - utilizza cache esistente - `cache-to: type=gha,mode=max` - salva cache completa ## Troubleshooting ### Build fallisce con "platform not supported" Verifica che il runner abbia QEMU installato e configurato per l'emulazione multi-arch. ### Secrets non trovati Assicurati di aver configurato correttamente i secrets nelle impostazioni del repository Gitea. ### Runner non esegue i workflow Verifica che il runner sia attivo e registrato correttamente con il comando: ```bash ./act_runner daemon --log-level debug ``` ## Note - Le build multi-arch possono richiedere diversi minuti, specialmente su hardware limitato - Per Raspberry Pi si consiglia di usare un server separato per le build, non il Pi stesso - Il workflow utilizza Docker Buildx per supporto multi-architettura