From 4b27c6a11d672352ffda01b9d705da9b9ef53b97 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 12:18:41 +0100 Subject: [PATCH 01/23] [Docs] Aggiunta Gitea Actions per CI/CD automatico - Creato workflow Gitea Actions (.gitea/workflows/docker-build.yml) - Documentazione completa setup e configurazione - Aggiornati README.md e copilot-instructions.md - Supporto registry Gitea Container Registry (gitea.com) - Stessa strategia di tagging di GitHub Actions - Build multi-platform (Linux + Windows) --- .gitea/workflows/README.md | 219 ++++++++++++++++++++++++++++++ .gitea/workflows/docker-build.yml | 188 +++++++++++++++++++++++++ .github/copilot-instructions.md | 12 ++ README.md | 27 ++++ 4 files changed, 446 insertions(+) create mode 100644 .gitea/workflows/README.md create mode 100644 .gitea/workflows/docker-build.yml diff --git a/.gitea/workflows/README.md b/.gitea/workflows/README.md new file mode 100644 index 0000000..3a785a5 --- /dev/null +++ b/.gitea/workflows/README.md @@ -0,0 +1,219 @@ +# Gitea Actions per Data-Coupler + +## 📋 Panoramica + +Questo repository utilizza **Gitea Actions** per automatizzare la build e la pubblicazione delle immagini Docker del progetto Data-Coupler. + +## 🔧 Configurazione + +### Prerequisiti + +Per utilizzare Gitea Actions su questo repository, è necessario: + +1. **Gitea Account**: Avere un account su Gitea (gitea.com o istanza self-hosted) +2. **Repository Settings**: Abilitare Gitea Actions nelle impostazioni del repository +3. **Container Registry**: Avere accesso al Gitea Container Registry +4. **Secret Configuration**: Configurare il secret `GITEA_TOKEN` + +### Configurazione del Secret GITEA_TOKEN + +Il workflow richiede un token di accesso per pubblicare le immagini Docker sul registry: + +1. Vai su **Settings → Secrets** nel repository Gitea +2. Crea un nuovo secret chiamato `GITEA_TOKEN` +3. Il valore deve essere un Personal Access Token con i seguenti permessi: + - `write:packages` - Per pubblicare container images + - `read:packages` - Per leggere images esistenti + +#### Come Creare un Personal Access Token su Gitea + +1. Vai su **Settings → Applications** nel tuo profilo Gitea +2. Clicca su **Generate New Token** +3. Nome del token: `Data-Coupler Docker Build` +4. Seleziona i seguenti scopes: + - `write:packages` + - `read:packages` +5. Clicca su **Generate Token** +6. Copia il token generato (sarà mostrato solo una volta) + +### Configurazione del Repository Path + +Nel file `.gitea/workflows/docker-build.yml`, modifica la variabile `IMAGE_NAME`: + +```yaml +env: + REGISTRY: gitea.com + IMAGE_NAME: tuo-username/data-coupler # Modifica con il tuo username/organization +``` + +**Importante**: Sostituisci `alessiodalsanto` con il tuo username o nome dell'organization su Gitea. + +## 🚀 Workflow + +### Docker Build Workflow + +**File**: `.gitea/workflows/docker-build.yml` + +#### Trigger Events + +Il workflow si attiva automaticamente su: +- **Push** sui branch: `main`, `development`, `staging` +- **Manual dispatch** tramite interfaccia web + +#### Jobs + +Il workflow è composto da 3 job principali: + +##### 1. `build-linux` - Build Immagine Linux +- **Runner**: `ubuntu-latest` +- **Dockerfile**: `./Dockerfile` +- **Platform**: `linux/amd64` +- **Tags generati**: + - `latest` (per branch `main` e `development`) + - `development-latest` (per branch `development`) + - `staging-latest` (per branch `staging`) + - `-` (per ogni commit) + - `-` (con data/ora) + +##### 2. `build-windows` - Build Immagine Windows +- **Runner**: `windows-2022` +- **Dockerfile**: `./Dockerfile.windows` +- **Platform**: Windows Server 2022 +- **Tags generati**: Come Linux ma con suffisso `-windows` + +##### 3. `create-manifest` - Multi-Platform Manifest +- **Runner**: `ubuntu-latest` +- **Dipendenze**: `build-linux`, `build-windows` +- Crea manifest multi-piattaforma che combinano le immagini Linux e Windows + +### Strategia di Tagging + +#### Branch `main` +- `latest` - Tag condiviso per versione stabile +- `latest-windows` - Versione Windows +- `main-` - Tag specifico per commit +- `main-` - Tag con timestamp + +#### Branch `development` +- `latest` - Tag condiviso per ultime funzionalità +- `development-latest` - Tag specifico per development +- `latest-windows` / `development-latest-windows` - Versioni Windows +- `development-` - Tag specifico per commit +- `development-` - Tag con timestamp + +#### Branch `staging` +- `staging-latest` - Tag per ambiente di staging +- `staging-latest-windows` - Versione Windows +- `staging-` - Tag specifico per commit +- `staging-` - Tag con timestamp + +## 📦 Utilizzo delle Immagini + +### Pull delle Immagini + +#### Da Gitea Container Registry + +```bash +# Ultima versione stabile (main/development) +docker pull gitea.com/alessiodalsanto/data-coupler:latest + +# Versione development specifica +docker pull gitea.com/alessiodalsanto/data-coupler:development-latest + +# Versione staging +docker pull gitea.com/alessiodalsanto/data-coupler:staging-latest + +# Versione Windows +docker pull gitea.com/alessiodalsanto/data-coupler:latest-windows +``` + +### Docker Compose + +Modifica il `docker-compose.yml` per usare le immagini Gitea: + +```yaml +services: + data-coupler: + image: gitea.com/alessiodalsanto/data-coupler:latest + # ... resto della configurazione +``` + +## 🔍 Monitoraggio + +### Visualizzare lo Stato dei Workflow + +1. Vai nella tab **Actions** del repository Gitea +2. Seleziona il workflow **Build and Push Docker Images** +3. Visualizza i dettagli di ogni esecuzione + +### Log e Debug + +- I log di ogni job sono disponibili nell'interfaccia Gitea Actions +- Per debug dettagliato, attiva il manual dispatch con opzione `force_build` + +## 🔄 Differenze con GitHub Actions + +### Principali Differenze + +1. **Context Variables**: + - GitHub: `github.*` → Gitea: `gitea.*` + - Esempio: `github.actor` → `gitea.actor` + +2. **Registry**: + - GitHub: `ghcr.io` → Gitea: `gitea.com` + +3. **Secret Name**: + - GitHub: `GITHUB_TOKEN` (automatico) → Gitea: `GITEA_TOKEN` (configurato manualmente) + +4. **Attestation**: + - Il job di attestation non è presente su Gitea (feature GitHub specifica) + +### Compatibilità + +Gitea Actions è compatibile con la maggior parte delle GitHub Actions disponibili su GitHub Marketplace, incluse: +- `actions/checkout@v4` +- `docker/setup-buildx-action@v3` +- `docker/login-action@v3` +- `docker/build-push-action@v5` +- `docker/metadata-action@v5` + +## 🛠️ Troubleshooting + +### Errore di Autenticazione + +Se ottieni errori di autenticazione: +1. Verifica che il secret `GITEA_TOKEN` sia configurato correttamente +2. Assicurati che il token abbia i permessi `write:packages` +3. Controlla che il token non sia scaduto + +### Build Fallita + +Se la build fallisce: +1. Controlla i log del job specifico +2. Verifica che i Dockerfile siano presenti e corretti +3. Assicurati che le dipendenze NuGet siano accessibili + +### Immagini Non Pubblicate + +Se le immagini non vengono pubblicate: +1. Verifica che `IMAGE_NAME` sia corretto +2. Controlla che il registry sia accessibile +3. Verifica i permessi del token + +## 📚 Risorse + +- [Gitea Actions Documentation](https://docs.gitea.io/en-us/actions/) +- [GitHub Actions Compatibility](https://docs.gitea.io/en-us/usage/actions/comparison/) +- [Docker Build Push Action](https://github.com/docker/build-push-action) + +## 📝 Note + +- Le immagini sono private per default; configura le impostazioni del package per renderle pubbliche se necessario +- Il workflow supporta anche l'esecuzione manuale tramite `workflow_dispatch` +- I manifest multi-platform permettono di usare lo stesso tag per Linux e Windows + +--- + +**Versione**: 1.0 +**Ultimo Aggiornamento**: 24 Gennaio 2026 +**Maintainer**: Alessio Dalsanto diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml new file mode 100644 index 0000000..e898d07 --- /dev/null +++ b/.gitea/workflows/docker-build.yml @@ -0,0 +1,188 @@ +name: Build and Push Docker Images + +on: + push: + branches: + - main + - development + - staging + workflow_dispatch: + inputs: + force_build: + description: 'Force build even without code changes' + required: false + default: false + type: boolean + +env: + # Gitea Container Registry + REGISTRY: gitea.com + # Repository path (format: owner/repo) + IMAGE_NAME: alessiodalsanto/data-coupler + +jobs: + build-linux: + name: Build Linux Container + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Gitea Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ gitea.actor }} + password: ${{ secrets.GITEA_TOKEN }} + + - name: Extract metadata for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + # Tag based on branch + type=raw,value=latest,enable=${{ gitea.ref == 'refs/heads/main' }} + type=raw,value=latest,enable=${{ gitea.ref == 'refs/heads/development' }} + type=raw,value=development-latest,enable=${{ gitea.ref == 'refs/heads/development' }} + type=raw,value=dev-latest,enable=${{ gitea.ref == 'refs/heads/dev' }} + type=raw,value=staging-latest,enable=${{ gitea.ref == 'refs/heads/staging' }} + # Tag with commit sha + type=sha,prefix={{branch}}-,format=short + # Tag with date + type=raw,value={{branch}}-{{date 'YYYYMMDD-HHmmss'}} + flavor: | + latest=false + + - name: Build and push Linux Docker image + id: build + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + platforms: linux/amd64 + + build-windows: + name: Build Windows Container + runs-on: windows-2022 + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to Gitea Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ gitea.actor }} + password: ${{ secrets.GITEA_TOKEN }} + + - name: Extract metadata for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + # Tag based on branch with windows suffix + type=raw,value=latest-windows,enable=${{ gitea.ref == 'refs/heads/main' }} + type=raw,value=latest-windows,enable=${{ gitea.ref == 'refs/heads/development' }} + type=raw,value=development-latest-windows,enable=${{ gitea.ref == 'refs/heads/development' }} + type=raw,value=dev-latest-windows,enable=${{ gitea.ref == 'refs/heads/dev' }} + type=raw,value=staging-latest-windows,enable=${{ gitea.ref == 'refs/heads/staging' }} + # Tag with commit sha + type=sha,prefix={{branch}}-windows-,format=short + # Tag with date + type=raw,value={{branch}}-windows-{{date 'YYYYMMDD-HHmmss'}} + flavor: | + latest=false + + - name: Build and push Windows Docker image + run: | + # Convert repository name to lowercase + $imageName = "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}".ToLower() + + # Build with temporary tag + docker build -t "${imageName}:temp-windows" -f Dockerfile.windows . + + # Parse and push all tags + $tags = "${{ steps.meta.outputs.tags }}" -split "`n" + foreach ($tag in $tags) { + $tag = $tag.Trim() + if ($tag) { + # Ensure tag is lowercase + $tag = $tag.ToLower() + Write-Host "Tagging and pushing: $tag" + docker tag "${imageName}:temp-windows" $tag + docker push $tag + } + } + + # Remove temporary tag + docker rmi "${imageName}:temp-windows" + shell: pwsh + + create-manifest: + name: Create Multi-Platform Manifest + runs-on: ubuntu-latest + needs: [build-linux, build-windows] + permissions: + contents: read + packages: write + + steps: + - name: Log in to Gitea Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ gitea.actor }} + password: ${{ secrets.GITEA_TOKEN }} + + - name: Create and push manifest for main branch + if: gitea.ref == 'refs/heads/main' + run: | + IMAGE_LOWER=$(echo "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" | tr '[:upper:]' '[:lower:]') + docker buildx imagetools create -t ${IMAGE_LOWER}:latest \ + ${IMAGE_LOWER}:latest \ + ${IMAGE_LOWER}:latest-windows + + - name: Create and push manifest for development branch + if: gitea.ref == 'refs/heads/development' + run: | + IMAGE_LOWER=$(echo "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" | tr '[:upper:]' '[:lower:]') + docker buildx imagetools create -t ${IMAGE_LOWER}:latest \ + ${IMAGE_LOWER}:latest \ + ${IMAGE_LOWER}:latest-windows + docker buildx imagetools create -t ${IMAGE_LOWER}:development-latest \ + ${IMAGE_LOWER}:development-latest \ + ${IMAGE_LOWER}:development-latest-windows + + - name: Create and push manifest for dev branch + if: gitea.ref == 'refs/heads/dev' + run: | + IMAGE_LOWER=$(echo "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" | tr '[:upper:]' '[:lower:]') + docker buildx imagetools create -t ${IMAGE_LOWER}:dev-latest \ + ${IMAGE_LOWER}:dev-latest \ + ${IMAGE_LOWER}:dev-latest-windows + + - name: Create and push manifest for staging branch + if: gitea.ref == 'refs/heads/staging' + run: | + IMAGE_LOWER=$(echo "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" | tr '[:upper:]' '[:lower:]') + docker buildx imagetools create -t ${IMAGE_LOWER}:staging-latest \ + ${IMAGE_LOWER}:staging-latest \ + ${IMAGE_LOWER}:staging-latest-windows diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 7d4c16c..53b1043 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -368,15 +368,26 @@ - `hotfix/*`: Fix urgenti ### CI/CD Pipeline: + +#### GitHub Actions (`.github/workflows/docker-build.yml`) - **Branch `main`**: Pubblica immagini Docker con tag `latest` - **Branch `development`**: Pubblica immagini Docker con tag `latest` e `development-latest` - **Branch `staging`**: Pubblica immagini Docker con tag `staging-latest` - **Ogni commit**: Crea tag con SHA e timestamp per tracciabilità +- **Registry**: GitHub Container Registry (`ghcr.io`) + +#### Gitea Actions (`.gitea/workflows/docker-build.yml`) +- **Stessa configurazione** di GitHub Actions +- **Registry**: Gitea Container Registry (`gitea.com`) +- **Supporto**: Istanze Gitea self-hosted +- **Setup**: Richiede secret `GITEA_TOKEN` con permessi `write:packages` +- **Documentazione**: `.gitea/workflows/README.md` **Note sui Tag Docker**: - `latest`: Condiviso tra `main` e `development` per garantire accesso alle ultime funzionalità - `development-latest`: Specifico per il branch `development`, utile per distinguere le versioni in sviluppo - `staging-latest`: Dedicato al branch `staging` per test pre-produzione +- Disponibile su **entrambi** i registry (GitHub e Gitea) ### Commit Messages: - Formato: `[Tipo] Descrizione breve` @@ -399,6 +410,7 @@ - **DELETION_SYNC_IMPLEMENTATION.md**: Sincronizzazione eliminazioni - **DOCKER_DEPLOYMENT.md**: Guida deployment Docker - **WINDOWS_SERVICE_DEPLOYMENT.md**: Deploy come Windows Service +- **.gitea/workflows/README.md**: Configurazione Gitea Actions ## 🎓 Best Practices per AI Assistants diff --git a/README.md b/README.md index d74a51e..99086c7 100644 --- a/README.md +++ b/README.md @@ -167,6 +167,33 @@ docker build -t data-coupler:local-windows -f Dockerfile.windows . 📚 **Documentazione Docker Completa**: Vedi [DOCKER_DEPLOYMENT.md](DOCKER_DEPLOYMENT.md) e [GITHUB_ACTIONS_SETUP.md](GITHUB_ACTIONS_SETUP.md) +### 🔄 CI/CD Pipeline + +Il progetto supporta pipeline CI/CD automatiche su: + +**GitHub Actions** (`.github/workflows/docker-build.yml`): +- Build automatica su push ai branch `main`, `development`, `staging` +- Pubblicazione su GitHub Container Registry (`ghcr.io`) +- Multi-platform manifest (Linux + Windows) + +**Gitea Actions** (`.gitea/workflows/docker-build.yml`): +- Stessa configurazione di GitHub Actions +- Pubblicazione su Gitea Container Registry (`gitea.com`) +- Supporto per istanze Gitea self-hosted +- Configurazione: `.gitea/workflows/README.md` + +**Immagini su Gitea**: +```bash +# Pull da Gitea Container Registry +docker pull gitea.com/alessiodalsanto/data-coupler:latest + +# Versioni disponibili +docker pull gitea.com/alessiodalsanto/data-coupler:development-latest +docker pull gitea.com/alessiodalsanto/data-coupler:staging-latest +``` + +📚 **Setup Gitea**: Vedi [.gitea/workflows/README.md](.gitea/workflows/README.md) + ## Caratteristiche di Sicurezza - **Crittografia**: Le password vengono crittografate prima del salvataggio From c74a00511ca19143eeab194f7fd2f1f7157e74f6 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 12:30:18 +0100 Subject: [PATCH 02/23] [Fix] Correzione registry Gitea Actions - Aggiornato registry da gitea.com a gitea.home-nas-ds.org - Gitea non ha un registry centralizzato pubblico come GitHub - Configurato per usare istanza self-hosted con Container Registry - Aggiornata documentazione con istruzioni corrette - Aggiunte note su configurazione registry e alternative --- .gitea/workflows/README.md | 33 +++++++++++++++++++------------ .gitea/workflows/docker-build.yml | 6 +++--- .github/copilot-instructions.md | 4 ++-- README.md | 12 +++++------ 4 files changed, 31 insertions(+), 24 deletions(-) diff --git a/.gitea/workflows/README.md b/.gitea/workflows/README.md index 3a785a5..606c444 100644 --- a/.gitea/workflows/README.md +++ b/.gitea/workflows/README.md @@ -38,15 +38,18 @@ Il workflow richiede un token di accesso per pubblicare le immagini Docker sul r ### Configurazione del Repository Path -Nel file `.gitea/workflows/docker-build.yml`, modifica la variabile `IMAGE_NAME`: +Nel file `.gitea/workflows/docker-build.yml`, verifica le variabili di registry: ```yaml env: - REGISTRY: gitea.com - IMAGE_NAME: tuo-username/data-coupler # Modifica con il tuo username/organization + REGISTRY: gitea.home-nas-ds.org # La tua istanza Gitea self-hosted + IMAGE_NAME: alessio/data-coupler # username/repo sulla tua istanza ``` -**Importante**: Sostituisci `alessiodalsanto` con il tuo username o nome dell'organization su Gitea. +**Importante**: +- `REGISTRY` deve puntare alla tua istanza Gitea con Container Registry abilitato +- `IMAGE_NAME` deve essere nel formato `username/repo` della tua istanza +- Assicurati che il Container Registry sia abilitato su Gitea (Settings → Packages) ## 🚀 Workflow @@ -115,16 +118,16 @@ Il workflow è composto da 3 job principali: ```bash # Ultima versione stabile (main/development) -docker pull gitea.com/alessiodalsanto/data-coupler:latest +docker pull gitea.home-nas-ds.org/alessio/data-coupler:latest # Versione development specifica -docker pull gitea.com/alessiodalsanto/data-coupler:development-latest +docker pull gitea.home-nas-ds.org/alessio/data-coupler:development-latest # Versione staging -docker pull gitea.com/alessiodalsanto/data-coupler:staging-latest +docker pull gitea.home-nas-ds.org/alessio/data-coupler:staging-latest # Versione Windows -docker pull gitea.com/alessiodalsanto/data-coupler:latest-windows +docker pull gitea.home-nas-ds.org/alessio/data-coupler:latest-windows ``` ### Docker Compose @@ -134,7 +137,7 @@ Modifica il `docker-compose.yml` per usare le immagini Gitea: ```yaml services: data-coupler: - image: gitea.com/alessiodalsanto/data-coupler:latest + image: gitea.home-nas-ds.org/alessio/data-coupler:latest # ... resto della configurazione ``` @@ -160,7 +163,8 @@ services: - Esempio: `github.actor` → `gitea.actor` 2. **Registry**: - - GitHub: `ghcr.io` → Gitea: `gitea.com` + - GitHub: `ghcr.io` → Gitea: `gitea.home-nas-ds.org` (istanza self-hosted) + - Gitea non ha un registry pubblico centralizzato come GitHub 3. **Secret Name**: - GitHub: `GITHUB_TOKEN` (automatico) → Gitea: `GITEA_TOKEN` (configurato manualmente) @@ -208,9 +212,12 @@ Se le immagini non vengono pubblicate: ## 📝 Note -- Le immagini sono private per default; configura le impostazioni del package per renderle pubbliche se necessario -- Il workflow supporta anche l'esecuzione manuale tramite `workflow_dispatch` -- I manifest multi-platform permettono di usare lo stesso tag per Linux e Windows +- **Registry Self-Hosted**: Questo workflow è configurato per usare un'istanza Gitea self-hosted (`gitea.home-nas-ds.org`) +- **Container Registry**: Assicurati che il Container Registry sia abilitato nella tua istanza Gitea (Settings → Packages) +- **Accesso Pubblico/Privato**: Le immagini sono private per default; configura le impostazioni del package per renderle pubbliche se necessario +- **Esecuzione Manuale**: Il workflow supporta anche l'esecuzione manuale tramite `workflow_dispatch` +- **Manifest Multi-Platform**: I manifest multi-platform permettono di usare lo stesso tag per Linux e Windows +- **Alternative Registry**: Se non hai un'istanza Gitea con registry, puoi configurare Docker Hub o altri registry modificando la variabile `REGISTRY` --- diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index e898d07..ffb96fa 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -15,10 +15,10 @@ on: type: boolean env: - # Gitea Container Registry - REGISTRY: gitea.com + # Gitea Container Registry (self-hosted instance) + REGISTRY: gitea.home-nas-ds.org # Repository path (format: owner/repo) - IMAGE_NAME: alessiodalsanto/data-coupler + IMAGE_NAME: alessio/data-coupler jobs: build-linux: diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 53b1043..2b64420 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -378,8 +378,8 @@ #### Gitea Actions (`.gitea/workflows/docker-build.yml`) - **Stessa configurazione** di GitHub Actions -- **Registry**: Gitea Container Registry (`gitea.com`) -- **Supporto**: Istanze Gitea self-hosted +- **Registry**: Gitea Container Registry (`gitea.home-nas-ds.org`) +- **Supporto**: Istanza Gitea self-hosted con registry abilitato - **Setup**: Richiede secret `GITEA_TOKEN` con permessi `write:packages` - **Documentazione**: `.gitea/workflows/README.md` diff --git a/README.md b/README.md index 99086c7..82f3118 100644 --- a/README.md +++ b/README.md @@ -178,18 +178,18 @@ Il progetto supporta pipeline CI/CD automatiche su: **Gitea Actions** (`.gitea/workflows/docker-build.yml`): - Stessa configurazione di GitHub Actions -- Pubblicazione su Gitea Container Registry (`gitea.com`) -- Supporto per istanze Gitea self-hosted +- Pubblicazione su Gitea Container Registry (`gitea.home-nas-ds.org`) +- Istanza Gitea self-hosted con registry abilitato - Configurazione: `.gitea/workflows/README.md` -**Immagini su Gitea**: +**Immagini su Gitea** (self-hosted): ```bash # Pull da Gitea Container Registry -docker pull gitea.com/alessiodalsanto/data-coupler:latest +docker pull gitea.home-nas-ds.org/alessio/data-coupler:latest # Versioni disponibili -docker pull gitea.com/alessiodalsanto/data-coupler:development-latest -docker pull gitea.com/alessiodalsanto/data-coupler:staging-latest +docker pull gitea.home-nas-ds.org/alessio/data-coupler:development-latest +docker pull gitea.home-nas-ds.org/alessio/data-coupler:staging-latest ``` 📚 **Setup Gitea**: Vedi [.gitea/workflows/README.md](.gitea/workflows/README.md) From 5b1d7d1ea2185256e316f725ce5700980cc2a5a3 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 12:33:04 +0100 Subject: [PATCH 03/23] [Fix] Correzione autenticazione Gitea Actions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Sostituito gitea.actor con username hardcoded 'alessio' - Corretto tutti i riferimenti gitea.ref con github.ref - Gitea Actions usa le stesse variabili di GitHub per compatibilità - Aggiornata documentazione con spiegazione context variables - Fix: username nel docker login ora funzionante --- .gitea/workflows/README.md | 13 +++++++++---- .gitea/workflows/docker-build.yml | 32 +++++++++++++++---------------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/.gitea/workflows/README.md b/.gitea/workflows/README.md index 606c444..a43295b 100644 --- a/.gitea/workflows/README.md +++ b/.gitea/workflows/README.md @@ -159,14 +159,19 @@ services: ### Principali Differenze 1. **Context Variables**: - - GitHub: `github.*` → Gitea: `gitea.*` - - Esempio: `github.actor` → `gitea.actor` + - Gitea Actions usa le **stesse variabili** di GitHub Actions: `github.*` + - Esempio: `github.ref`, `github.sha`, `github.actor` + - **Nota**: Anche se il servizio è Gitea, le variabili mantengono il prefisso `github` per compatibilità -2. **Registry**: +2. **Username**: + - Nel workflow è hardcoded come `alessio` per semplicità + - Puoi usare `${{ github.actor }}` se preferisci (utente che ha triggerato il workflow) + +3. **Registry**: - GitHub: `ghcr.io` → Gitea: `gitea.home-nas-ds.org` (istanza self-hosted) - Gitea non ha un registry pubblico centralizzato come GitHub -3. **Secret Name**: +4. **Secret Name**: - GitHub: `GITHUB_TOKEN` (automatico) → Gitea: `GITEA_TOKEN` (configurato manualmente) 4. **Attestation**: diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index ffb96fa..1e87b46 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -49,11 +49,11 @@ jobs: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: | # Tag based on branch - type=raw,value=latest,enable=${{ gitea.ref == 'refs/heads/main' }} - type=raw,value=latest,enable=${{ gitea.ref == 'refs/heads/development' }} - type=raw,value=development-latest,enable=${{ gitea.ref == 'refs/heads/development' }} - type=raw,value=dev-latest,enable=${{ gitea.ref == 'refs/heads/dev' }} - type=raw,value=staging-latest,enable=${{ gitea.ref == 'refs/heads/staging' }} + type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }} + type=raw,value=latest,enable=${{ github.ref == 'refs/heads/development' }} + type=raw,value=development-latest,enable=${{ github.ref == 'refs/heads/development' }} + type=raw,value=dev-latest,enable=${{ github.ref == 'refs/heads/dev' }} + type=raw,value=staging-latest,enable=${{ github.ref == 'refs/heads/staging' }} # Tag with commit sha type=sha,prefix={{branch}}-,format=short # Tag with date @@ -89,7 +89,7 @@ jobs: uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} - username: ${{ gitea.actor }} + username: alessio password: ${{ secrets.GITEA_TOKEN }} - name: Extract metadata for Docker @@ -99,11 +99,11 @@ jobs: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: | # Tag based on branch with windows suffix - type=raw,value=latest-windows,enable=${{ gitea.ref == 'refs/heads/main' }} - type=raw,value=latest-windows,enable=${{ gitea.ref == 'refs/heads/development' }} - type=raw,value=development-latest-windows,enable=${{ gitea.ref == 'refs/heads/development' }} - type=raw,value=dev-latest-windows,enable=${{ gitea.ref == 'refs/heads/dev' }} - type=raw,value=staging-latest-windows,enable=${{ gitea.ref == 'refs/heads/staging' }} + type=raw,value=latest-windows,enable=${{ github.ref == 'refs/heads/main' }} + type=raw,value=latest-windows,enable=${{ github.ref == 'refs/heads/development' }} + type=raw,value=development-latest-windows,enable=${{ github.ref == 'refs/heads/development' }} + type=raw,value=dev-latest-windows,enable=${{ github.ref == 'refs/heads/dev' }} + type=raw,value=staging-latest-windows,enable=${{ github.ref == 'refs/heads/staging' }} # Tag with commit sha type=sha,prefix={{branch}}-windows-,format=short # Tag with date @@ -149,11 +149,11 @@ jobs: uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} - username: ${{ gitea.actor }} + username: alessio password: ${{ secrets.GITEA_TOKEN }} - name: Create and push manifest for main branch - if: gitea.ref == 'refs/heads/main' + if: github.ref == 'refs/heads/main' run: | IMAGE_LOWER=$(echo "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" | tr '[:upper:]' '[:lower:]') docker buildx imagetools create -t ${IMAGE_LOWER}:latest \ @@ -161,7 +161,7 @@ jobs: ${IMAGE_LOWER}:latest-windows - name: Create and push manifest for development branch - if: gitea.ref == 'refs/heads/development' + if: github.ref == 'refs/heads/development' run: | IMAGE_LOWER=$(echo "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" | tr '[:upper:]' '[:lower:]') docker buildx imagetools create -t ${IMAGE_LOWER}:latest \ @@ -172,7 +172,7 @@ jobs: ${IMAGE_LOWER}:development-latest-windows - name: Create and push manifest for dev branch - if: gitea.ref == 'refs/heads/dev' + if: github.ref == 'refs/heads/dev' run: | IMAGE_LOWER=$(echo "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" | tr '[:upper:]' '[:lower:]') docker buildx imagetools create -t ${IMAGE_LOWER}:dev-latest \ @@ -180,7 +180,7 @@ jobs: ${IMAGE_LOWER}:dev-latest-windows - name: Create and push manifest for staging branch - if: gitea.ref == 'refs/heads/staging' + if: github.ref == 'refs/heads/staging' run: | IMAGE_LOWER=$(echo "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" | tr '[:upper:]' '[:lower:]') docker buildx imagetools create -t ${IMAGE_LOWER}:staging-latest \ From 16075c10c1650732ecc48637f5ec1aaa206ea42b Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 12:35:18 +0100 Subject: [PATCH 04/23] [Fix] Rinominato secret da GITEA_TOKEN a REGISTRY_TOKEN - Gitea non permette secret che iniziano con GITEA_ - Cambiato nome in REGISTRY_TOKEN in tutti i file - Aggiornata documentazione con il nuovo nome - Aggiunta nota sulla limitazione dei nomi secret in Gitea --- .gitea/workflows/README.md | 9 +++++---- .gitea/workflows/docker-build.yml | 4 ++-- .github/copilot-instructions.md | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.gitea/workflows/README.md b/.gitea/workflows/README.md index a43295b..e90c23f 100644 --- a/.gitea/workflows/README.md +++ b/.gitea/workflows/README.md @@ -15,12 +15,12 @@ Per utilizzare Gitea Actions su questo repository, è necessario: 3. **Container Registry**: Avere accesso al Gitea Container Registry 4. **Secret Configuration**: Configurare il secret `GITEA_TOKEN` -### Configurazione del Secret GITEA_TOKEN +### Configurazione del Secret REGISTRY_TOKEN Il workflow richiede un token di accesso per pubblicare le immagini Docker sul registry: 1. Vai su **Settings → Secrets** nel repository Gitea -2. Crea un nuovo secret chiamato `GITEA_TOKEN` +2. Crea un nuovo secret chiamato `REGISTRY_TOKEN` 3. Il valore deve essere un Personal Access Token con i seguenti permessi: - `write:packages` - Per pubblicare container images - `read:packages` - Per leggere images esistenti @@ -172,7 +172,8 @@ services: - Gitea non ha un registry pubblico centralizzato come GitHub 4. **Secret Name**: - - GitHub: `GITHUB_TOKEN` (automatico) → Gitea: `GITEA_TOKEN` (configurato manualmente) + - GitHub: `GITHUB_TOKEN` (automatico) → Gitea: `REGISTRY_TOKEN` (configurato manualmente) + - **Nota**: Il secret non può iniziare con `GITEA_` per limitazioni di Gitea 4. **Attestation**: - Il job di attestation non è presente su Gitea (feature GitHub specifica) @@ -191,7 +192,7 @@ Gitea Actions è compatibile con la maggior parte delle GitHub Actions disponibi ### Errore di Autenticazione Se ottieni errori di autenticazione: -1. Verifica che il secret `GITEA_TOKEN` sia configurato correttamente +1. Verifica che il secret `REGISTRY_TOKEN` sia configurato correttamente 2. Assicurati che il token abbia i permessi `write:packages` 3. Controlla che il token non sia scaduto diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 1e87b46..d916233 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -90,7 +90,7 @@ jobs: with: registry: ${{ env.REGISTRY }} username: alessio - password: ${{ secrets.GITEA_TOKEN }} + password: ${{ secrets.REGISTRY_TOKEN }} - name: Extract metadata for Docker id: meta @@ -150,7 +150,7 @@ jobs: with: registry: ${{ env.REGISTRY }} username: alessio - password: ${{ secrets.GITEA_TOKEN }} + password: ${{ secrets.REGISTRY_TOKEN }} - name: Create and push manifest for main branch if: github.ref == 'refs/heads/main' diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 2b64420..52b98a0 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -380,7 +380,7 @@ - **Stessa configurazione** di GitHub Actions - **Registry**: Gitea Container Registry (`gitea.home-nas-ds.org`) - **Supporto**: Istanza Gitea self-hosted con registry abilitato -- **Setup**: Richiede secret `GITEA_TOKEN` con permessi `write:packages` +- **Setup**: Richiede secret `REGISTRY_TOKEN` con permessi `write:packages` - **Documentazione**: `.gitea/workflows/README.md` **Note sui Tag Docker**: From f3afede0e163a8372ecc448a328b190e4779ff9e Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 12:38:48 +0100 Subject: [PATCH 05/23] [Debug] Aggiunto debug registry e documentazione troubleshooting - Aggiunto step debug per verificare accesso al registry - Documentazione completa su come verificare Container Registry - Aggiunte istruzioni per registry alternativi (Docker Hub, GHCR) - Guida per testare autenticazione manualmente --- .gitea/workflows/README.md | 55 +++++++++++++++++++++++++++++++ .gitea/workflows/docker-build.yml | 8 +++++ 2 files changed, 63 insertions(+) diff --git a/.gitea/workflows/README.md b/.gitea/workflows/README.md index e90c23f..7262958 100644 --- a/.gitea/workflows/README.md +++ b/.gitea/workflows/README.md @@ -189,6 +189,28 @@ Gitea Actions è compatibile con la maggior parte delle GitHub Actions disponibi ## 🛠️ Troubleshooting +### Verificare che il Container Registry sia Abilitato + +Prima di tutto, verifica che il Container Registry sia abilitato sulla tua istanza Gitea: + +1. **Controlla la configurazione Gitea** (`app.ini`): + ```ini + [packages] + ENABLED = true + ``` + +2. **Verifica accesso al registry**: + ```bash + curl https://gitea.home-nas-ds.org/v2/ + # Dovrebbe rispondere con status 401 (richiede autenticazione) + # Se ottieni 404, il registry non è abilitato + ``` + +3. **Test autenticazione**: + ```bash + echo "YOUR_TOKEN" | docker login gitea.home-nas-ds.org -u alessio --password-stdin + ``` + ### Errore di Autenticazione Se ottieni errori di autenticazione: @@ -225,6 +247,39 @@ Se le immagini non vengono pubblicate: - **Manifest Multi-Platform**: I manifest multi-platform permettono di usare lo stesso tag per Linux e Windows - **Alternative Registry**: Se non hai un'istanza Gitea con registry, puoi configurare Docker Hub o altri registry modificando la variabile `REGISTRY` +### 🐳 Configurazione Registry Alternativi + +Se il Container Registry di Gitea non è disponibile, puoi usare alternative: + +#### Docker Hub +```yaml +env: + REGISTRY: docker.io + IMAGE_NAME: username/data-coupler + +# Nel login step: +- name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} +``` + +#### GitHub Container Registry (come fallback) +```yaml +env: + REGISTRY: ghcr.io + IMAGE_NAME: alessio/data-coupler + +# Nel login step: +- name: Log in to GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} +``` + --- **Versione**: 1.0 diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index d916233..a19e9c9 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -35,6 +35,14 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: Debug - Check registry access + run: | + echo "Testing registry access..." + curl -v https://gitea.home-nas-ds.org/v2/ || echo "Registry not accessible" + echo "Registry: ${{ env.REGISTRY }}" + echo "Image: ${{ env.IMAGE_NAME }}" + continue-on-error: true + - name: Log in to Gitea Container Registry uses: docker/login-action@v3 with: From deeeef984e208b0ce2d93012cbd15f2be63afdd4 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 12:43:58 +0100 Subject: [PATCH 06/23] [Debug] Verifica secret e usa docker login diretto MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Aggiunto step per verificare che REGISTRY_TOKEN sia configurato - Sostituito docker/login-action con docker login diretto - Aggiunto controllo lunghezza token per debug - Test con comando bash nativo per maggiore compatibilità --- .gitea/workflows/docker-build.yml | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index a19e9c9..64b3001 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -43,12 +43,21 @@ jobs: echo "Image: ${{ env.IMAGE_NAME }}" continue-on-error: true + - name: Debug - Verify secret is configured + run: | + if [ -z "${{ secrets.REGISTRY_TOKEN }}" ]; then + echo "::error::REGISTRY_TOKEN secret is not configured or is empty!" + exit 1 + else + echo "REGISTRY_TOKEN secret is configured (length: ${#REGISTRY_TOKEN})" + fi + env: + REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }} + - name: Log in to Gitea Container Registry - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ gitea.actor }} - password: ${{ secrets.GITEA_TOKEN }} + run: | + echo "${{ secrets.REGISTRY_TOKEN }}" | docker login ${{ env.REGISTRY }} -u alessio --password-stdin + shell: bash - name: Extract metadata for Docker id: meta From 71c38b4e90560d9cbda2c163fe3f069fa955fe1b Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 13:33:28 +0100 Subject: [PATCH 07/23] -Modificata gitea actions --- .gitea/workflows/docker-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 64b3001..5de295e 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -93,7 +93,7 @@ jobs: build-windows: name: Build Windows Container - runs-on: windows-2022 + runs-on: windows permissions: contents: read packages: write From 263ae063ac02be0799abbbf23446c903e53d2b15 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 13:37:20 +0100 Subject: [PATCH 08/23] [Fix] Installazione Node.js nel runner Windows - Aggiunto step per installare Node.js se mancante - Usa Chocolatey per installazione automatica - Node.js richiesto dalle GitHub Actions (checkout@v4) - Fix: Cannot find node in PATH su runner Windows --- .gitea/workflows/docker-build.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 5de295e..b36cff7 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -99,6 +99,18 @@ jobs: packages: write steps: + - name: Setup Node.js for Actions + run: | + # Check if node is available + if (!(Get-Command node -ErrorAction SilentlyContinue)) { + Write-Host "Node.js not found, installing..." + choco install nodejs -y --version=20.11.0 + refreshenv + } + node --version + shell: pwsh + continue-on-error: false + - name: Checkout repository uses: actions/checkout@v4 From ee7f925fb3930eccd380d06e58cfeb7775bcec83 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 13:39:04 +0100 Subject: [PATCH 09/23] [Fix] Windows workflow senza Node.js e PowerShell Core - Rimosso uso di GitHub Actions che richiedono Node.js - Checkout manuale con git invece di actions/checkout - Login Docker diretto invece di docker/login-action - Build e push con script CMD nativo Windows - Fix: Cannot find pwsh/node in PATH --- .gitea/workflows/docker-build.yml | 85 +++++++++++-------------------- 1 file changed, 29 insertions(+), 56 deletions(-) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index b36cff7..5a101cd 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -99,71 +99,44 @@ jobs: packages: write steps: - - name: Setup Node.js for Actions + - name: Checkout repository (manual git) run: | - # Check if node is available - if (!(Get-Command node -ErrorAction SilentlyContinue)) { - Write-Host "Node.js not found, installing..." - choco install nodejs -y --version=20.11.0 - refreshenv - } - node --version - shell: pwsh - continue-on-error: false - - - name: Checkout repository - uses: actions/checkout@v4 + git config --global core.autocrlf false + git clone --depth 1 --branch ${{ github.ref_name }} https://github.com/${{ github.repository }} . + shell: cmd - name: Log in to Gitea Container Registry - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: alessio - password: ${{ secrets.REGISTRY_TOKEN }} - - - name: Extract metadata for Docker - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - # Tag based on branch with windows suffix - type=raw,value=latest-windows,enable=${{ github.ref == 'refs/heads/main' }} - type=raw,value=latest-windows,enable=${{ github.ref == 'refs/heads/development' }} - type=raw,value=development-latest-windows,enable=${{ github.ref == 'refs/heads/development' }} - type=raw,value=dev-latest-windows,enable=${{ github.ref == 'refs/heads/dev' }} - type=raw,value=staging-latest-windows,enable=${{ github.ref == 'refs/heads/staging' }} - # Tag with commit sha - type=sha,prefix={{branch}}-windows-,format=short - # Tag with date - type=raw,value={{branch}}-windows-{{date 'YYYYMMDD-HHmmss'}} - flavor: | - latest=false + run: echo ${{ secrets.REGISTRY_TOKEN }} | docker login ${{ env.REGISTRY }} -u alessio --password-stdin + shell: cmd - name: Build and push Windows Docker image run: | - # Convert repository name to lowercase - $imageName = "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}".ToLower() + set BRANCH=${{ github.ref_name }} + set SHA=${{ github.sha }} + set SHORT_SHA=%SHA:~0,7% - # Build with temporary tag - docker build -t "${imageName}:temp-windows" -f Dockerfile.windows . + REM Build image + docker build -t temp-image -f Dockerfile.windows . - # Parse and push all tags - $tags = "${{ steps.meta.outputs.tags }}" -split "`n" - foreach ($tag in $tags) { - $tag = $tag.Trim() - if ($tag) { - # Ensure tag is lowercase - $tag = $tag.ToLower() - Write-Host "Tagging and pushing: $tag" - docker tag "${imageName}:temp-windows" $tag - docker push $tag - } - } + REM Tag and push based on branch + if "%BRANCH%"=="main" ( + docker tag temp-image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-windows + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-windows + ) + if "%BRANCH%"=="development" ( + docker tag temp-image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-windows + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-windows + docker tag temp-image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:development-latest-windows + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:development-latest-windows + ) + if "%BRANCH%"=="staging" ( + docker tag temp-image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:staging-latest-windows + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:staging-latest-windows + ) - # Remove temporary tag - docker rmi "${imageName}:temp-windows" - shell: pwsh + REM Clean up + docker rmi temp-image + shell: cmd create-manifest: name: Create Multi-Platform Manifest From 31c53eff33b65835df954c6aecb8495754c02ec0 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 13:43:22 +0100 Subject: [PATCH 10/23] [Fix] Rimosso checkout manuale Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Gitea Actions clona automaticamente il repository - Non serve checkout manuale con git - Il codice è già presente nella working directory - Fix: git non riconosciuto su runner Windows --- .gitea/workflows/docker-build.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 5a101cd..f936810 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -99,12 +99,6 @@ jobs: packages: write steps: - - name: Checkout repository (manual git) - run: | - git config --global core.autocrlf false - git clone --depth 1 --branch ${{ github.ref_name }} https://github.com/${{ github.repository }} . - shell: cmd - - name: Log in to Gitea Container Registry run: echo ${{ secrets.REGISTRY_TOKEN }} | docker login ${{ env.REGISTRY }} -u alessio --password-stdin shell: cmd From 6ab03ba42083aaff26cee86ea474a6800d6d1fd8 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 13:44:41 +0100 Subject: [PATCH 11/23] [Debug] Aggiunto debug per Dockerfile.windows - Aggiunto step per verificare working directory e files - Controllo esistenza Dockerfile.windows prima del build - Miglior error handling con exit codes - Debug: unable to find Dockerfile.windows --- .gitea/workflows/docker-build.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index f936810..e644cb6 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -99,18 +99,40 @@ jobs: packages: write steps: + - name: Debug - Check working directory + run: | + echo Current directory: + cd + echo. + echo Files in current directory: + dir + echo. + echo Looking for Dockerfiles: + dir Dockerfile* + shell: cmd + continue-on-error: true + - name: Log in to Gitea Container Registry run: echo ${{ secrets.REGISTRY_TOKEN }} | docker login ${{ env.REGISTRY }} -u alessio --password-stdin shell: cmd - name: Build and push Windows Docker image run: | + REM Check if Dockerfile exists + if not exist Dockerfile.windows ( + echo ERROR: Dockerfile.windows not found! + dir + exit /b 1 + ) + set BRANCH=${{ github.ref_name }} set SHA=${{ github.sha }} set SHORT_SHA=%SHA:~0,7% + echo Building Windows image... REM Build image docker build -t temp-image -f Dockerfile.windows . + if errorlevel 1 exit /b 1 REM Tag and push based on branch if "%BRANCH%"=="main" ( From 5f3f1c4fa6cb013a990d9c079f92747a5c22e553 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 13:45:32 +0100 Subject: [PATCH 12/23] [Fix] Download repository con curl per Windows - Gitea Actions non clona automaticamente il repo - Download repo da GitHub come ZIP con curl - Estrazione con tar (nativo Windows 10+) - Spostamento files nella working directory - Fix: working directory vuota, nessun Dockerfile --- .gitea/workflows/docker-build.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index e644cb6..ac4a15b 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -99,6 +99,21 @@ jobs: packages: write steps: + - name: Download repository archive + run: | + echo Downloading repository from GitHub... + curl -L -o repo.zip https://github.com/${{ github.repository }}/archive/refs/heads/${{ github.ref_name }}.zip + echo Extracting archive... + tar -xf repo.zip + echo Moving files to current directory... + for /d %%d in (*-${{ github.ref_name }}) do ( + xcopy "%%d\*" . /E /I /Y + rmdir "%%d" /S /Q + ) + del repo.zip + echo Repository downloaded and extracted + shell: cmd + - name: Debug - Check working directory run: | echo Current directory: From 5e14c1bc223b0ef952c017c8854869191078033d Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 13:47:06 +0100 Subject: [PATCH 13/23] =?UTF-8?q?[Refactor]=20Ricostruito=20workflow=20Win?= =?UTF-8?q?dows=20con=20parit=C3=A0=20Linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Stesso flusso e struttura della parte Linux - Download e extract repository migliorato - Debug steps per verificare file e secret - Tagging multipli come Linux (latest, branch-sha, etc.) - Miglior gestione errori e logging - Usa windows-2022 come runner specifico --- .gitea/workflows/docker-build.yml | 89 ++++++++++++++++++------------- 1 file changed, 52 insertions(+), 37 deletions(-) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index ac4a15b..85062f3 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -93,80 +93,95 @@ jobs: build-windows: name: Build Windows Container - runs-on: windows + runs-on: windows-2022 permissions: contents: read packages: write steps: - - name: Download repository archive + - name: Download and extract repository run: | echo Downloading repository from GitHub... curl -L -o repo.zip https://github.com/${{ github.repository }}/archive/refs/heads/${{ github.ref_name }}.zip echo Extracting archive... tar -xf repo.zip - echo Moving files to current directory... - for /d %%d in (*-${{ github.ref_name }}) do ( - xcopy "%%d\*" . /E /I /Y - rmdir "%%d" /S /Q + echo Moving files... + for /d %%d in (*) do ( + if exist "%%d\.gitignore" ( + xcopy "%%d\*" . /E /H /Y /Q + rmdir "%%d" /S /Q + ) ) del repo.zip - echo Repository downloaded and extracted + echo Repository ready shell: cmd - - name: Debug - Check working directory + - name: Debug - Verify files run: | - echo Current directory: + echo Working directory: cd echo. - echo Files in current directory: - dir - echo. - echo Looking for Dockerfiles: - dir Dockerfile* + echo Dockerfiles found: + dir Dockerfile* /B 2>nul || echo No Dockerfiles found shell: cmd continue-on-error: true + - name: Debug - Verify secret + run: | + if "${{ secrets.REGISTRY_TOKEN }}"=="" ( + echo ERROR: REGISTRY_TOKEN not configured! + exit /b 1 + ) else ( + echo REGISTRY_TOKEN is configured + ) + shell: cmd + - name: Log in to Gitea Container Registry run: echo ${{ secrets.REGISTRY_TOKEN }} | docker login ${{ env.REGISTRY }} -u alessio --password-stdin shell: cmd - name: Build and push Windows Docker image run: | - REM Check if Dockerfile exists - if not exist Dockerfile.windows ( - echo ERROR: Dockerfile.windows not found! - dir - exit /b 1 - ) - + set IMAGE_LOWER=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} set BRANCH=${{ github.ref_name }} set SHA=${{ github.sha }} set SHORT_SHA=%SHA:~0,7% - echo Building Windows image... - REM Build image - docker build -t temp-image -f Dockerfile.windows . - if errorlevel 1 exit /b 1 - - REM Tag and push based on branch + REM Determine tags based on branch + set TAGS= if "%BRANCH%"=="main" ( - docker tag temp-image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-windows - docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-windows + set TAGS=%IMAGE_LOWER%:latest-windows + set TAGS=%TAGS% %IMAGE_LOWER%:main-windows-%SHORT_SHA% ) if "%BRANCH%"=="development" ( - docker tag temp-image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-windows - docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-windows - docker tag temp-image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:development-latest-windows - docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:development-latest-windows + set TAGS=%IMAGE_LOWER%:latest-windows + set TAGS=%TAGS% %IMAGE_LOWER%:development-latest-windows + set TAGS=%TAGS% %IMAGE_LOWER%:development-windows-%SHORT_SHA% ) if "%BRANCH%"=="staging" ( - docker tag temp-image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:staging-latest-windows - docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:staging-latest-windows + set TAGS=%IMAGE_LOWER%:staging-latest-windows + set TAGS=%TAGS% %IMAGE_LOWER%:staging-windows-%SHORT_SHA% ) - REM Clean up - docker rmi temp-image + echo Building Windows Docker image... + docker build -t temp-windows -f Dockerfile.windows . + if errorlevel 1 ( + echo Build failed! + exit /b 1 + ) + + echo Tagging and pushing images... + for %%t in (%TAGS%) do ( + echo Tagging: %%t + docker tag temp-windows %%t + echo Pushing: %%t + docker push %%t + ) + + echo Cleaning up temporary image... + docker rmi temp-windows + + echo Windows build completed successfully! shell: cmd create-manifest: From 33381a995044800cfff8757624a0867d798f17c5 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 13:47:51 +0100 Subject: [PATCH 14/23] [Fix] Corretto runner Windows da windows-2022 a windows - Il runner Gitea supporta solo 'windows' generico - Rimosso riferimento a windows-2022 non esistente --- .gitea/workflows/docker-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 85062f3..856dd5c 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -93,7 +93,7 @@ jobs: build-windows: name: Build Windows Container - runs-on: windows-2022 + runs-on: windows permissions: contents: read packages: write From a50b295c5939314d4f18348f0a7eee9f46c6c073 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 13:49:15 +0100 Subject: [PATCH 15/23] [Fix] Migliorato download e extract repository Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Usa robocopy per spostare file (più affidabile di xcopy) - Logging dettagliato per ogni fase - Verifica Dockerfile.windows dopo estrazione - Error handling robusto con exit codes - Risolve: Dockerfile.windows not found --- .gitea/workflows/docker-build.yml | 48 ++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 856dd5c..a1a1cb0 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -101,19 +101,47 @@ jobs: steps: - name: Download and extract repository run: | - echo Downloading repository from GitHub... + echo ===== Downloading repository ===== curl -L -o repo.zip https://github.com/${{ github.repository }}/archive/refs/heads/${{ github.ref_name }}.zip - echo Extracting archive... - tar -xf repo.zip - echo Moving files... - for /d %%d in (*) do ( - if exist "%%d\.gitignore" ( - xcopy "%%d\*" . /E /H /Y /Q - rmdir "%%d" /S /Q - ) + if errorlevel 1 ( + echo Failed to download repository + exit /b 1 ) + + echo ===== Extracting archive ===== + tar -xf repo.zip + if errorlevel 1 ( + echo Failed to extract archive + exit /b 1 + ) + + echo ===== Finding extracted folder ===== + dir /B /AD + + echo ===== Moving files to current directory ===== + REM GitHub creates folder with format: repo-name-branch + REM Find first directory and copy its contents + for /d %%i in (*) do ( + echo Found directory: %%i + echo Copying contents from %%i to current directory... + robocopy "%%i" . /E /MOVE /NFL /NDL /NJH /NJS + goto :extracted + ) + :extracted + + echo ===== Cleaning up ===== del repo.zip - echo Repository ready + + echo ===== Verifying files ===== + echo Current directory contents: + dir /B + + if exist Dockerfile.windows ( + echo SUCCESS: Dockerfile.windows found! + ) else ( + echo ERROR: Dockerfile.windows not found! + exit /b 1 + ) shell: cmd - name: Debug - Verify files From 5915537e838d9e36634b2c7cf12573b1602a1f5a Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 13:49:57 +0100 Subject: [PATCH 16/23] [Fix] Usa git clone per checkout su Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Sostituito download ZIP con git clone diretto - Più veloce e affidabile - Clone shallow (depth 1) per performance - Verifica Dockerfile.windows dopo clone - Git è disponibile sul runner Windows --- .gitea/workflows/docker-build.yml | 44 ++++++++----------------------- 1 file changed, 11 insertions(+), 33 deletions(-) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index a1a1cb0..8a3542f 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -99,47 +99,25 @@ jobs: packages: write steps: - - name: Download and extract repository + - name: Checkout repository with Git run: | - echo ===== Downloading repository ===== - curl -L -o repo.zip https://github.com/${{ github.repository }}/archive/refs/heads/${{ github.ref_name }}.zip + echo ===== Cloning repository ===== + git clone --depth 1 --branch ${{ github.ref_name }} https://github.com/${{ github.repository }}.git repo if errorlevel 1 ( - echo Failed to download repository + echo Failed to clone repository exit /b 1 ) - echo ===== Extracting archive ===== - tar -xf repo.zip - if errorlevel 1 ( - echo Failed to extract archive - exit /b 1 - ) - - echo ===== Finding extracted folder ===== - dir /B /AD - - echo ===== Moving files to current directory ===== - REM GitHub creates folder with format: repo-name-branch - REM Find first directory and copy its contents - for /d %%i in (*) do ( - echo Found directory: %%i - echo Copying contents from %%i to current directory... - robocopy "%%i" . /E /MOVE /NFL /NDL /NJH /NJS - goto :extracted - ) - :extracted - - echo ===== Cleaning up ===== - del repo.zip - - echo ===== Verifying files ===== - echo Current directory contents: - dir /B + echo ===== Moving files to working directory ===== + robocopy repo . /E /MOVE /NFL /NDL /NJH /NJS + rmdir repo /S /Q 2>nul + echo ===== Verifying checkout ===== if exist Dockerfile.windows ( - echo SUCCESS: Dockerfile.windows found! + echo SUCCESS: Repository checked out, Dockerfile.windows found ) else ( - echo ERROR: Dockerfile.windows not found! + echo ERROR: Dockerfile.windows not found + dir /B exit /b 1 ) shell: cmd From 8e229fc77ca78e64da79403d1fb5eb5d6e65e512 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 17:23:47 +0100 Subject: [PATCH 17/23] [Fix] Clone da repository Gitea invece di GitHub - Cambiato URL da github.com a gitea.home-nas-ds.org - Usa REGISTRY_TOKEN per autenticazione git clone - Embedded credentials nell'URL (username:token@host) - Risolve: richiesta credenziali GitHub --- .gitea/workflows/docker-build.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 8a3542f..62670df 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -101,8 +101,8 @@ jobs: steps: - name: Checkout repository with Git run: | - echo ===== Cloning repository ===== - git clone --depth 1 --branch ${{ github.ref_name }} https://github.com/${{ github.repository }}.git repo + echo ===== Cloning repository from Gitea ===== + git clone --depth 1 --branch ${{ github.ref_name }} https://alessio:%REGISTRY_TOKEN%@gitea.home-nas-ds.org/${{ github.repository }}.git repo if errorlevel 1 ( echo Failed to clone repository exit /b 1 @@ -120,6 +120,8 @@ jobs: dir /B exit /b 1 ) + env: + REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }} shell: cmd - name: Debug - Verify files From 7fe8453e7a78051353febb75b05d16cfb00e780d Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 17:27:13 +0100 Subject: [PATCH 18/23] [Fix] Gestione corretta exit code robocopy (0-7 = success, 8+ = error) --- .gitea/workflows/docker-build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 62670df..350d436 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -110,6 +110,11 @@ jobs: echo ===== Moving files to working directory ===== robocopy repo . /E /MOVE /NFL /NDL /NJH /NJS + REM robocopy exit codes: 0=no copy, 1=ok, 2=extra files, 3=ok+extra, 4+=error + if %ERRORLEVEL% GEQ 8 ( + echo Robocopy failed with exit code %ERRORLEVEL% + exit /b 1 + ) rmdir repo /S /Q 2>nul echo ===== Verifying checkout ===== From d8a20696404fc29fc28d3ab27f526341e2d78476 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 17:29:53 +0100 Subject: [PATCH 19/23] [Fix] Semplificato checkout: clone in cartella source e cd, eliminato robocopy --- .gitea/workflows/docker-build.yml | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 350d436..682dc97 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -101,30 +101,13 @@ jobs: steps: - name: Checkout repository with Git run: | - echo ===== Cloning repository from Gitea ===== - git clone --depth 1 --branch ${{ github.ref_name }} https://alessio:%REGISTRY_TOKEN%@gitea.home-nas-ds.org/${{ github.repository }}.git repo - if errorlevel 1 ( - echo Failed to clone repository - exit /b 1 - ) - - echo ===== Moving files to working directory ===== - robocopy repo . /E /MOVE /NFL /NDL /NJH /NJS - REM robocopy exit codes: 0=no copy, 1=ok, 2=extra files, 3=ok+extra, 4+=error - if %ERRORLEVEL% GEQ 8 ( - echo Robocopy failed with exit code %ERRORLEVEL% - exit /b 1 - ) - rmdir repo /S /Q 2>nul - - echo ===== Verifying checkout ===== - if exist Dockerfile.windows ( - echo SUCCESS: Repository checked out, Dockerfile.windows found - ) else ( + git clone --depth 1 --branch ${{ github.ref_name }} https://alessio:%REGISTRY_TOKEN%@gitea.home-nas-ds.org/${{ github.repository }}.git source + cd source + if not exist Dockerfile.windows ( echo ERROR: Dockerfile.windows not found - dir /B exit /b 1 ) + echo SUCCESS: Repository cloned env: REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }} shell: cmd @@ -174,8 +157,8 @@ jobs: if "%BRANCH%"=="staging" ( set TAGS=%IMAGE_LOWER%:staging-latest-windows set TAGS=%TAGS% %IMAGE_LOWER%:staging-windows-%SHORT_SHA% - ) + cd source echo Building Windows Docker image... docker build -t temp-windows -f Dockerfile.windows . if errorlevel 1 ( From e707045d6398ce33679cc185822968290e4a1323 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 17:33:07 +0100 Subject: [PATCH 20/23] [Fix] Clone direttamente in directory corrente (git clone ... .) invece di sottocartella --- .gitea/workflows/docker-build.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 682dc97..403b2af 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -101,8 +101,7 @@ jobs: steps: - name: Checkout repository with Git run: | - git clone --depth 1 --branch ${{ github.ref_name }} https://alessio:%REGISTRY_TOKEN%@gitea.home-nas-ds.org/${{ github.repository }}.git source - cd source + git clone --depth 1 --branch ${{ github.ref_name }} https://alessio:%REGISTRY_TOKEN%@gitea.home-nas-ds.org/${{ github.repository }}.git . if not exist Dockerfile.windows ( echo ERROR: Dockerfile.windows not found exit /b 1 @@ -157,8 +156,8 @@ jobs: if "%BRANCH%"=="staging" ( set TAGS=%IMAGE_LOWER%:staging-latest-windows set TAGS=%TAGS% %IMAGE_LOWER%:staging-windows-%SHORT_SHA% + ) - cd source echo Building Windows Docker image... docker build -t temp-windows -f Dockerfile.windows . if errorlevel 1 ( From 1d9b4902d4309dc5f92d691c9031d689ce6afb13 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 17:46:07 +0100 Subject: [PATCH 21/23] [Fix] Rimossa cache gha non disponibile su Gitea Actions (causava timeout) --- .gitea/workflows/docker-build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 403b2af..1ad5446 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -87,8 +87,6 @@ jobs: push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max platforms: linux/amd64 build-windows: From c0d3f87a7e3e9b6160045e43ed7eda35a7baf865 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 17:46:07 +0100 Subject: [PATCH 22/23] Rimosso il branch Development dall'action riguardante i container --- .gitea/workflows/docker-build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 403b2af..1ad5446 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -87,8 +87,6 @@ jobs: push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max platforms: linux/amd64 build-windows: From 505349e10b339da58e531bd06df314e7d0dc7cc2 Mon Sep 17 00:00:00 2001 From: Alessio Dal Santo Date: Sat, 24 Jan 2026 18:13:07 +0100 Subject: [PATCH 23/23] Aggiornamento workflow per build Windows Docker image --- .gitea/workflows/docker-build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 1ad5446..ba6f87f 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -4,7 +4,6 @@ on: push: branches: - main - - development - staging workflow_dispatch: inputs: