Commit Graph
42 Commits
Author SHA1 Message Date
LucaZanni b94bd6936a 🔒 fix(ci): la guardia Dockerfile blocca, e le ARG valgono solo nel loro stage
- via `continue-on-error`: i 56 repo difettosi sono stati corretti (tappa 2
  di PZeta_Touch/flux-repo#133), e su 238 Dockerfile del portale ne restano
  due, che non sono repository git e non passano di qui
- le ARG non si ereditano da `FROM <stage>`, come dice la documentazione
  Docker: la versione precedente presumeva il contrario e lasciava passare
  proprio i casi come nuxt-vue-components-docs, cioè quelli che tirano
  dentro npm 12 e fanno fallire la build al tag
- messaggi da ::warning a ::error, e uscita 1 quando trova qualcosa

Fixes #14 @1h30m
2026-09-12 10:32:27 +02:00
LucaZanni 5973ec9fcc 🐛 fix(ci): la guardia Dockerfile ignora le variabili assegnate nel RUN
- in un RUN espande la shell: una variabile assegnata nel comando stesso
  (VERSIONE="$(...)" && ... ${VERSIONE}) non è la ARG omonima. Era un falso
  avviso su algorithmic-trading, venues/ibkr-gateway/Dockerfile:143
- COPY, LABEL e le altre istruzioni espanse da Docker restano controllate
- collaudo con gawk e gawk --posix: algorithmic-trading 0 avvisi,
  pzeta-king prima della correzione 2, scada-runtime su main 10, Dockerfile
  sintetici con gli esiti attesi; bash -n sullo step estratto dallo YAML

Fixes #13 @25m
refs PZeta_Touch/flux-repo#133
2026-09-11 21:40:53 +02:00
LucaZanni 715860c357 🐛 fix(ci): la guardia Dockerfile dice quando non riesce a leggere le ARG
- l'analisi delle ARG diventa la funzione arg_scope, e all'avvio gira su
  un Dockerfile di prova con una ARG fuori scope nota: se l'awk del runner
  non la riconosce, un ::warning lo dice, il controllo delle ARG salta e
  quello del registry resta, invece di dichiarare in regola ciò che non ha
  potuto leggere
- regex portabile: [$][{]? al posto di \$\{?, che gawk --posix segnalava
  come escape sconosciuto
- collaudo su gawk e gawk --posix (Dockerfile sintetico, pzeta-king prima
  della correzione, vue-pzportal, node-xmlvalidation) e con un awk rotto;
  stesso step, identico, nelle due varianti quality-gates

Fixes #12 @25m
refs PZeta_Touch/flux-repo#133
2026-09-11 21:38:14 +02:00
LucaZanni 9b5159d89e ✨ feat(ci): la guardia Dockerfile anche in quality-gates-github
- stesso step di quality-gates.yml, identico, prima dell'install: i sei
  repository sulla variante -github, fra cui vue-pzportal, ne restavano
  fuori
- solo bash, indipendente da dove si scaricano le action; solo avviso come
  nell'originale

Fixes #11 @25m
refs PZeta_Touch/flux-repo#133
2026-09-11 21:27:00 +02:00
LucaZanni c593f29b0f 🐛 fix(ci): la guardia Dockerfile vede le ARG ereditate da uno stage padre
- una ARG passa agli stage che derivano da quello che la dichiara
  (FROM <stage>), come le ENV: lo prova il log BuildKit di
  nuxt-vue-components-docs v1.0.13, dove deps espande la NPM_VERSION di base
- prima era un falso avviso su ogni Dockerfile con la ARG in uno stage base
- nomi di stage confrontati senza distinzione di maiuscole, come in Docker
- collaudo su un Dockerfile sintetico (ARG globale, padre, fratello,
  nipote, ENV, predefinite, commenti nelle continuazioni): segnala solo i
  due casi attesi

Fixes #10 @25m
refs PZeta_Touch/flux-repo#133
2026-09-11 21:25:21 +02:00
LucaZanni 8949bc7f31 ✨ feat(ci): avviso sui Dockerfile col registry in minuscolo o ARG fuori stage
- quality-gates.yml: nuovo step prima dell'install che scansiona i Dockerfile
  del repository e segnala con ::warning file/riga, più una tabella nel job
  summary, (a) il registry @pzeta scritto pzeta_touch o pzeta e (b) le ARG
  usate in uno stage che non le dichiara
- solo avviso (continue-on-error, uscita sempre 0): bloccante oggi
  fermerebbe i ~46 repo che reggono solo perché pinnano npm 11; lo diventa
  con la tappa 2 di flux-repo#133
- analisi per stage in awk POSIX, collaudata anche con gawk --posix:
  scada-runtime 19 avvisi, pzeta-king 2, vue-pzportal 1, node-xmlvalidation 0

Fixes #9 @1h30m
refs PZeta_Touch/flux-repo#133
2026-09-11 21:21:24 +02:00
LucaZanni 81c871422e 🔧 fix(ci): la deroga al gate dei ruoli arriva allo step che deve saltare
- quality-gates.yml: `owns-auth-roles` esce dal campo `if:` dello step e viene
  letta come env `OWNS_AUTH_ROLES`. In posizione `if:` i valori `with:` del
  chiamante non raggiungono il contesto `inputs` di act_runner, quindi il gate
  bocciava proprio node-user-profiling, l'unico repo autorizzato a dichiarare
  ruoli: tre run rossi e ogni gate successivo saltato
- il nome del repository fa da rete di sicurezza accanto all'input: una deroga
  dichiarata e una constatata, cosi' regge anche se `inputs` non arrivasse
- verificato sui tre casi: deroga via input, deroga via nome con input vuoto,
  repo terzo con le stesse migrazioni (continua a fallire, nessuna regressione)

Fixes #8 @1h30m
2026-09-07 21:31:08 +02:00
LucaZanni 67fccd84e2 ✨ feat(ci): nessun modulo puo' dichiarare ruoli in auth.ruoli
- nuovo step in quality-gates.yml: cerca INSERT INTO auth.ruoli nei file .sql di
  migrations, seeds, sql e database/migrations, e fallisce spiegando cosa fare
  invece — dichiarare un gruppo d'area con i propri permessi, scegliendo il
  livello fra i tredici di piattaforma
- il contratto esisteva dal seed 13 di node-user-profiling e prevedeva questo
  controllo, che non era mai stato scritto: nove microfrontend lo hanno
  disatteso, 21 ruoli creati e 27 su 35 senza omonimo PostgreSQL. Un ruolo cosi'
  nel claim role del JWT e' un SET ROLE che non riesce, e l'utenza di collaudo
  del timesheet ne era la prova
- il boundary dopo `ruoli` tiene fuori auth.ruolipermessi; le righe di commento
  sono ignorate perche' spesso spiegano proprio questa regola
- una-tantum e rollback sono escluse: raccolgono delta generati e script di
  ritorno, fotografie di stati passati che riscrivere falserebbe
- nuovo input owns-auth-roles (default false): solo node-user-profiling, che
  possiede lo schema, lo mette a true. Unica deroga, ed e' esplicita
- verificato su tutti i 30 frontend con migrazioni e sui backend principali:
  nessuno fallisce dopo la ripulitura dei nove repo

Fixes #7 @1h
2026-08-28 10:40:25 +02:00
LucaZanni 6aca13b460 🐛 fix(capacitor-android): il wrapper gradle riceve il bit che Windows non gli da
- Aggiunto lo step "Rendi eseguibile gradlew" prima dei build APK e AAB
- Allineati capacitor-android.yml e la variante GitHub

Fixes #6 @1h30m
2026-08-27 18:47:34 +02:00
LucaZanni c1a4b2723f ✨ feat(capacitor-android): inietta versionName e versionCode da package.json
- Nuovo step "Inject Android version" dopo il sync Capacitor: riscrive versionName e versionCode in android/app/build.gradle prima della build
- versionCode derivato come major*10000 + minor*100 + patch, monotono crescente fra release; pre-release e build metadata scartati dal calcolo ma mantenuti nel versionName
- Nuovo input opzionale version-code per forzare un valore esplicito
- Supporto Groovy e Kotlin DSL; fallisce con diagnostica se la piattaforma manca, la versione non e' semver, minor/patch superano 99 o l'iniezione non produce il valore atteso
- Allineata la variante -github, corpo dello step identico

Fixes #5 @1h30m
2026-08-11 08:51:01 +02:00
LucaZanni c0524722e4 🔧 fix(ci): allinea a PZeta_Touch il registry npm dei workflow riusabili
- .gitea/workflows/*.yml: il registry @pzeta scritto in ~/.npmrc passa da
  `pzeta_touch` a `PZeta_Touch` (12 file, 24 righe). E' la stessa causa dei
  Dockerfile: i package-lock.json della flotta risolvono i tarball su
  `.../api/packages/PZeta_Touch/npm/`, npm confronta gli URL come stringhe e
  con la grafia minuscola tratta il pacchetto come tarball remota (EALLOWREMOTE
  da npm 11) e non applica il _authToken
- e' il punto di massima leva: quality-gates.yml e docker-release.yml sono
  chiamati via `uses:` da 51 repo `node-*` ed eseguono `npm ci` sul runner
  PRIMA di `docker build`, quindi la release si ferma li' anche con il
  Dockerfile gia' corretto
- il REGISTRY delle immagini (`gitea.pzetatouch.it/pzeta_touch`) resta
  minuscolo: i nomi dei repository Docker devono esserlo, ed e' la grafia usata
  dai defaults di flux-repo

refs PZeta_Touch/flux-repo#129 @45m
2026-08-04 10:31:04 +02:00
LucaZanni dae2a74437 ✨ feat(ci): aggiungi l'input working-directory ai reusable workflow Node
- quality-gates, dependency-check, dependency-outdated, npm-publish e
  auto-release accettano ora working-directory (default "."), applicato via
  defaults.run a livello di job: copre tutti gli step run senza toccare gli
  step uses, che devono restare sulla root
- Allineate le varianti -github dei cinque workflow
- Sblocca i repo dove package.json non e' in root (pzeta-calendar in
  typescript/, pzeta-king in server/), che finora dovevano rinunciare ai
  template e reinlineare i job, perdendo la working-directory a ogni
  riallineamento
- Retrocompatibile: con l'input omesso il comportamento resta identico

refs #4
2026-08-01 19:30:03 +02:00
LucaZanni f0896d775d feat(ci): aggiungi varianti -github dei reusable e fix audit Python
- crea gemelli X-github.yml per ogni reusable con action da github.com (fallback mirror gitea.com)
- python-dependency-check/outdated: audit in venv isolata (fix falsi positivi da runner ML)
- python-dependency-check/outdated: deduplica issue (commento invece di nuova issue)
- examples: aggiungi ci-github.yml e release-github.yml in tutte le cartelle

Fixes #3 @3h
2026-07-06 19:53:01 +02:00
LucaZanni e5411d9d2d feat(docker-release): aggiungi build-args con vars fallback per versioni Docker
- NODE_VERSION da vars.NODE_DOCKER_VERSION (fallback: 24.16.0-alpine3.22)
- NGINX_VERSION da vars.NGINX_DOCKER_VERSION (fallback: 1.30.2-alpine3.23)
- NPM_VERSION da vars.NPM_VERSION (fallback: 11.16.0)

Fixes #0 @25m
2026-06-06 14:49:45 +02:00
LucaZanni 94767592c5 fix(ci): downgrade upload-artifact v4->v3 gitea.com
github.com/actions/upload-artifact@v4 non supportato su GHES/Gitea self-hosted.
gitea.com/actions/upload-artifact@v3 usa la API artifact compatibile.
2026-06-06 14:43:38 +02:00
LucaZanni 0fc0251233 fix(ci): sostituisce node -e con jq per leggere package.json
node -e con quoting " dentro block scalar YAML causa syntax error nella shell
("require(" interpretato come subshell). jq evita il problema.
2026-06-06 14:37:23 +02:00
LucaZanni b609947f46 chore(examples): aggiorna node-version a 24.16.0 nel commento di esempio 2026-06-06 14:24:38 +02:00
LucaZanni b21c3877c6 chore(ci): aggiorna node-version default a 24.16.0
Node.js 24.16.0 LTS sostituisce 22.17 come versione di default in tutti i workflow.
2026-06-06 14:24:11 +02:00
LucaZanni 392cdf2580 fix(ci): sostituisce gitea.com/actions/cache con github.com in tutti i workflow
gitea.com/actions/cache@v4 restituisce HTTP 500 in modo intermittente.
github.com/actions/cache@v4 già usato dal runner per altri step (setup-java, ecc.).
2026-06-06 14:05:29 +02:00
LucaZanni 0ed7e2b58a fix(ci): sostituisce gitea.com/actions/cache con github.com - HTTP 500
gitea.com/actions/cache@v4 restituisce 500 impedendo l'avvio del job android.
2026-06-06 13:59:52 +02:00
LucaZanni 3b49d18d5b fix(ci): aggiunge input npm-version per compatibilità lockfile npm@11
- quality-gates.yml: nuovo input npm-version con step condizionale upgrade
- docker-release.yml: idem
- examples/documentazione: ci.yml e release.yml passano npm-version: '11'

Fixes #2 @25m
2026-06-06 13:36:22 +02:00
LucaZanni 53b1c7a9c4 feat(examples): aggiungi template documentazione Nuxt 4
- ci.yml: quality-gates condivisi con paths-ignore su content/**
- release.yml: docker-release + auto-release con needs
- maintenance.yml: schedule martedì 02:00 audit, 1° mese 03:00 outdated

refs #1 @25m
2026-06-06 13:28:46 +02:00
LucaZanni 0f7688ac5e chore(ci): aggiorna action versions, fix auto-release e migrazione self-hosted
- Aggiorna checkout v4→v6, setup-python v5→v5.2.0, setup-android v3→v4
- Aggiorna upload-artifact v3→v4, docker/login-action v3→v4
- Aggiunge needs su auto-release in tutti gli esempi (fix esecuzione parallela)
- Aggiunge token esplicito nel checkout come workaround bug Gitea #31900
- Aggiunge job dependency-outdated mancante in libreria-npm/maintenance.yml
- Aggiorna schedule: libreria-npm mercoledì 02:00, microservizio lunedì 02:00
- Migra tutti i riferimenti da gitea.com/Punga78 a gitea.pzetatouch.it/devops

Fixes #1 @3h
2026-06-06 13:21:01 +02:00
LucaZanni 54c74d9c6a feat(ci): aggiungi label OCI per collegare container al repository Gitea
- Aggiunto org.opencontainers.image.source con URL del repository
- Aggiunto org.opencontainers.image.revision con SHA del commit
- Aggiunto org.opencontainers.image.version con versione del pacchetto
- Applicato a docker-release.yml e python-docker-release.yml

@25m
2026-04-11 18:53:05 +02:00
LucaZanni 86a0cd416f 🐛 fix(ci): correggi passaggio NPM_TOKEN come Docker secret e runs-on workaround
- Sostituisce build-args con secrets in docker-release.yml per compatibilità
  con Dockerfile che usa --mount=type=secret,id=npm_token
- Aggiunge runs-on: catthehacker-latest negli esempi (workaround Gitea bug #34986)
2026-04-09 19:54:25 +02:00
LucaZanni 3ee135b020 👷 ci(release): aggiungi workaround per bug runs-on in Gitea
- aggiunta runs-on: catthehacker-latest per aggirare bug #34986
- commento esplicativo sul motivo della modifica
- garantita corretta esecuzione workflow_call su Gitea
2026-04-09 19:46:59 +02:00
LucaZanni c16b182607 📦 build(ci): aggiungi workflow CI, release e manutenzione python
- aggiunto esempio workflow CI per python con quality gates
- aggiunto esempio workflow manutenzione con branch cleanup, audit sicurezza e check pacchetti obsoleti
- aggiunto esempio workflow release per build docker e auto-release gitea

📦 build(shared-actions): aggiungi shared-actions python per CI/CD

- aggiunto python-quality-gates.yml per lint, format, type check e test
- aggiunto python-auto-release.yml per changelog e rilascio automatico
- aggiunto python-docker-release.yml per build e push immagini docker
- aggiunto python-dependency-check.yml per audit sicurezza dipendenze
- aggiunto python-dependency-outdated.yml per verifica pacchetti obsoleti
2026-04-08 17:03:29 +02:00
LucaZanni edb33df3b8 ✨ feat(workflows): aggiungi check pacchetti obsoleti e migliora audit sicurezza
- aggiungi workflow separato per controllo dipendenze obsolete
- aggiorna maintenance.yml per distinguere tra audit sicurezza e check obsolete
- aggiorna nomi e struttura dei job per maggiore chiarezza
- carica artifact Android con nome versione dinamico
- separa issue sicurezza da quelle di pacchetti obsoleti in CI
- migliora trigger per job di manutenzione periodica【workflows】
2026-04-07 11:59:30 +02:00
LucaZanni eac0873d9a 🐛 fix(ci): usa upload-artifact da GitHub per compatibilità Gitea
- gitea.com/actions/upload-artifact@v3 usa @actions/artifact v2.0.0+ non compatibile con GHES/Gitea
- github.com/actions/upload-artifact@v3 usa @actions/artifact v1.x compatibile

Fixes #6 @15m
2026-04-03 17:17:07 +02:00
LucaZanni bada0f51fc 🐛 fix(ci): correggi upload artifact APK e aggiungi build reports
- aggiungi fallback `|| 'debug'` nel path upload APK per evitare doppio slash quando build-type è vuoto
- aggiungi step upload Gradle build reports (problems-report.html) con if-no-files-found: ignore
- aggiorna default java-version a 21

Fixes #6 @30m
2026-04-03 17:05:34 +02:00
LucaZanni 2b28d8b721 🐛 fix(ci): downgrade upload-artifact da v4 a v3 per compatibilità Gitea
- upload-artifact@v4 usa @actions/artifact v2.0.0+ che richiede API GitHub.com
- Gitea/GHES non supporta questa versione, causando errore GHESNotSupportedError

Fixes #4 @25m
2026-04-03 13:26:23 +02:00
LucaZanni fab9961bd5 Bump version to v1.0.1 2026-04-03 11:17:38 +02:00
LucaZanni ea0f8638f7 🐛 fix(ci): aggiungi step cap add android prima di sync
- Aggiunto step idempotente `npx cap add android || true` prima di `npx cap sync android`
- Risolve il fallimento quando la directory android/ non è nel repository del consumer
- Il comando è sicuro: se android/ esiste già, emette solo un warning

refs #0 @25m
2026-04-03 11:02:38 +02:00
LucaZanni b184b503c3 🔧 chore(workflows): rimuovi workflow release non più necessario
- elimina il file release.yml perché non più utilizzato nel flusso di lavoro

🔧 chore(ci): aggiorna trigger workflow CI
- aggiungi supporto per pull request su main
- ignora file markdown e cartella docs nei trigger
- migliora gestione delle branch monitorate
2026-03-26 14:58:27 +01:00
LucaZanni b864af4bb2 🎉 feat(ci): aggiungi versionamento semantico per shared-actions
- Aggiunto package.json con versione 1.0.0
- Nuovo workflow release.yml standalone: crea release Gitea su tag v*
- Aggiornamento automatico tag major floating (v1 → latest v1.x.x)
- Esempi aggiornati da @main a @v1 (tag major stabile)

Flusso di release:
  git tag v1.0.0 && git push origin v1.0.0
  → crea release Gitea con changelog
  → aggiorna tag floating v1
2026-03-26 14:41:36 +01:00
LucaZanni 89555ae07e 🎉 feat(ci): aggiungi pipeline Capacitor Android riutilizzabile
- Nuovo workflow capacitor-android.yml con build debug e release
- Input configurabili: runner, node-version, java-version, build-type, output-format
- Supporto APK (sideload/test) e AAB (Play Store) via output-format
- Firma release tramite keystore in base64 (secret)
- Setup google-services.json opzionale per Firebase
- Cache npm + Gradle per performance
- Upload artifact automatico (retention 14 giorni)
- Esempi consumer: ci.yml, release.yml, maintenance.yml
2026-03-26 11:22:35 +01:00
LucaZanni 218ca83525 ♻️ refactor(ci): rendi runner configurabile in docker-release
- Aggiunto input 'runner' con default 'catthehacker-latest'
- Permette ai consumer di specificare un runner diverso
- Aggiornato esempio microservizio con runner esplicito
2026-03-26 07:17:44 +01:00
LucaZanni 02f61125ef 🐛 fix(ci): normalizza nome immagine Docker rimuovendo scope npm
- I package con scope npm (@pzeta/nome) generano tag Docker invalidi
- Aggiunto sed per strippare '@scope/' prima di costruire il tag
- Risultato: gitea.pzetatouch.it/pzeta_touch/telegram-file-bot:1.0.1
2026-03-26 07:12:29 +01:00
LucaZanni f1305498c1 🐛 fix(ci): correggi URL istanza, token e struttura YAML nei workflow condivisi
- Sostituito URL hardcoded con ${{ gitea.server_url }} (portabilità)
- Sostituito ${{ secrets.GITEA_TOKEN }} con ${{ gitea.token }} (token automatico)
- Aggiunto env SERVER_URL/REPOSITORY per evitare espressioni inline nei curl
- Fix dependency-check: rimosso BODY multi-riga (bug YAML run:|) → printf + /tmp/body.md
- Fix auto-release: changelog su /tmp/changelog.txt (evita collisione workspace)
- Fix branch-cleanup: encoding branch via variabile (sicurezza shell)
2026-03-26 07:01:34 +01:00
LucaZanni e5df154060 🔧 chore(ci): aggiorna uses: verso gitea.com per accesso pubblico
- Sostituito path interno pzeta_touch/shared-actions con URL assoluto gitea.com
- Risolve errore autenticazione del runner su repo shared-actions privato
- Il runner clona da gitea.com/Punga78/shared-actions senza credenziali
2026-03-26 06:55:57 +01:00
LucaZanni 8b292ae35d 🎉 feat(ci): setup Gitea Actions riutilizzabili cross-repo
- Aggiunti 6 workflow condivisi in .gitea/workflows/ con trigger workflow_call
- Implementati: quality-gates, npm-publish, docker-release, auto-release, dependency-check, branch-cleanup
- Aggiunti esempi consumer per microservizio e libreria-npm (ci, release, maintenance)
- Allineato npm run lint:check su tutti i workflow
- Corretti GITEA_TOKEN, gitea.* context, GITHUB_REF/GITHUB_OUTPUT per compatibilità Gitea
- Rimosso needs: tra job reusable (Gitea bug #31900), path uses: con .gitea/workflows/

Fixes #1 @1d
2026-03-24 17:04:22 +01:00
LucaZanni 9e0928a327 🎉 first commit 2026-03-24 12:09:50 +01:00