fix(ci): quota_project pro gcloud builds submit #8

Merged
dalton.alvarenga merged 3 commits from fix/cloudbuild-quota-project into main 2026-05-07 16:27:47 +00:00

Erro persistente após PR #7 + IAM grants: gcloud builds submit falha com serviceusage.services.use forbidden em todos os runs (448, 449, 450). Causa: SA key auth não seta quota_project no credentials, gcloud usa um default fora de corepetro, a chamada interna à Service Usage API quebra antes do upload pro _cloudbuild. Fix: gcloud config set billing/quota_project corepetro + env CLOUDSDK_BILLING_QUOTA_PROJECT.

Erro persistente após PR #7 + IAM grants: gcloud builds submit falha com `serviceusage.services.use` forbidden em todos os runs (448, 449, 450). Causa: SA key auth não seta quota_project no credentials, gcloud usa um default fora de corepetro, a chamada interna à Service Usage API quebra antes do upload pro _cloudbuild. Fix: `gcloud config set billing/quota_project corepetro` + env `CLOUDSDK_BILLING_QUOTA_PROJECT`.
dalton.alvarenga added 1 commit 2026-05-07 13:59:17 +00:00
fix(ci): seta quota_project pro gcloud builds submit não 500 em service usage
Some checks failed
CD / build (pull_request) Failing after 40s
154d498699
`gcloud builds submit` faz uma chamada interna à Service Usage API antes
de uploadar o source pro bucket _cloudbuild. Quando autentica via SA key
(google-github-actions/auth), o credentials file não tem quota_project, e
gcloud cai num default que não é corepetro — a chamada à SU falha com
"serviceusage.services.use forbidden" mesmo com roles/serviceusage.serviceUsageConsumer
concedida no projeto.

Fix: setar billing/quota_project explícito antes do builds submit + env
var CLOUDSDK_BILLING_QUOTA_PROJECT como cinto-suspensório.
dalton.alvarenga added 1 commit 2026-05-07 15:02:43 +00:00
fix(ci): --gcs-source-staging-dir + --suppress-logs no builds submit
Some checks failed
CD / build (pull_request) Failing after 5m27s
18c22e85c4
Quota_project sozinho não resolve. Reproduzi local com a SA gitea-cd e
peguei a HTTP 403 raw da Storage API: dois calls bloqueados em sequência:

1. GET /storage/v1/b/_cloudbuild → resolvido com grant de roles/storage.admin
   no bucket (storage.buckets.get vinha do projectEditor legacy ACL, que
   gitea-cd não é).

2. GET /storage/v1/b?prefix=_cloudbuild&project=corepetro → 403 em
   storage.buckets.list. Esse permission é project-scoped (não dá pra
   grantar bucket-scoped). Em vez de inflar a SA com storage.admin no
   projeto, --gcs-source-staging-dir explícito faz gcloud pular o
   auto-detect inteiro e usar o bucket especificado.

E --suppress-logs evita o stream que exige Viewer/Owner no projeto pra
ler Cloud Logging — gitea-cd não tem; o build ainda é aguardado e o
exit code propaga correto.

Validado: build de teste alpine deu SUCCESS na primeira tentativa com
esses dois flags.
dalton.alvarenga added 1 commit 2026-05-07 16:20:31 +00:00
fix(ci): troca --suppress-logs por --async + poll loop
All checks were successful
CD / build (pull_request) Successful in 4m3s
037a3f4d93
--suppress-logs nessa versão do gcloud CLI no runner ainda tenta ler
logs no fim e dá exit != 0 quando a SA não tem Viewer no projeto. Build
real do PR #8 deu SUCCESS (image lab-18 em AR), mas a step falhou na
finalização do gcloud.

Com --async, gcloud retorna o build ID logo após enfileirar e sai.
Poll explícito via builds describe (que usa cloudbuild.builds.get,
já em builds.editor). Mata o build no primeiro estado terminal != SUCCESS.
dalton.alvarenga merged commit 0a6852acbb into main 2026-05-07 16:27:47 +00:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Clubpetro-Lab/vanna-clubpetro#8
No description provided.