From 81c871422ee7731c6b1c41801fa3c7411f0d7330 Mon Sep 17 00:00:00 2001 From: LucaZanni Date: Mon, 7 Sep 2026 21:31:08 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20fix(ci):=20la=20deroga=20al=20ga?= =?UTF-8?q?te=20dei=20ruoli=20arriva=20allo=20step=20che=20deve=20saltare?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- .gitea/workflows/quality-gates.yml | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/quality-gates.yml b/.gitea/workflows/quality-gates.yml index 1b16f25..42c71b0 100644 --- a/.gitea/workflows/quality-gates.yml +++ b/.gitea/workflows/quality-gates.yml @@ -54,8 +54,16 @@ jobs: echo "//gitea.pzetatouch.it/api/packages/PZeta_Touch/npm/:_authToken=${{ secrets.NPM_TOKEN }}" >> ~/.npmrc - name: Nessun ruolo dichiarato fuori da node-user-profiling - if: ${{ !inputs.owns-auth-roles }} shell: bash + env: + # La deroga stava nel campo `if:` dello step, e li' non arriva: nel + # workflow_call di act_runner i valori `with:` del chiamante non + # raggiungono il contesto `inputs` in quella posizione, quindi + # `!inputs.owns-auth-roles` restava vero anche con l'input a true e il + # gate falliva proprio in node-user-profiling, l'unico repository + # autorizzato a dichiarare ruoli. Letta come variabile d'ambiente la + # deroga arriva, e la si confronta come stringa. + OWNS_AUTH_ROLES: ${{ inputs.owns-auth-roles }} run: | # `auth.ruoli` appartiene a node-user-profiling e il suo contratto (seed # 13, esteso dalla migrazione 19) vieta agli altri moduli di crearne. @@ -66,6 +74,17 @@ jobs: # Nove microfrontend lo avevano disatteso: 21 ruoli, 27 su 35 senza # omonimo PostgreSQL. Questo controllo esiste perche' non si ripeta. set -uo pipefail + + # Il nome del repository e' la rete di sicurezza della deroga: se + # nemmeno l'env dovesse arrivare, il proprietario dello schema si + # riconosce lo stesso e non resta bloccato dal proprio gate. Le due + # condizioni dicono la stessa cosa, una dichiarata e una constatata. + repo="${GITHUB_REPOSITORY:-}" + if [ "${OWNS_AUTH_ROLES:-}" = "true" ] || [ "${repo##*/}" = "node-user-profiling" ]; then + echo "Repository proprietario di auth.ruoli: controllo non applicabile." + exit 0 + fi + dirs="" for d in migrations seeds sql database/migrations; do [ -d "$d" ] && dirs="$dirs $d"