Problem
The staged App Engine deploy job can report failure even when gcloud app deploy has already completed successfully.
Root cause
The deploy script currently runs:
yes | gcloud app deploy ...
under set -euo pipefail.
When gcloud app deploy succeeds, it exits and closes stdin. The yes process then receives SIGPIPE, emits yes: standard output: Broken pipe, and exits non-zero. Because pipefail is enabled, the whole step is marked failed even though the App Engine version was successfully deployed.
Evidence
In run 24918186779, GitHub Actions logged:
Deployed service [default] to [https://staging-2342-b7c5e75-dot-policyengine-api.uc.r.appspot.com]
- immediately followed by
yes: standard output: Broken pipe
- then
Process completed with exit code 1
GCP confirms the deployed staging version exists and serves readiness checks successfully.
Fix
Use gcloud app deploy --quiet instead of piping yes into the command. That preserves non-interactive behavior without producing a false failure after successful deploys.
Problem
The staged App Engine deploy job can report failure even when
gcloud app deployhas already completed successfully.Root cause
The deploy script currently runs:
yes | gcloud app deploy ...under
set -euo pipefail.When
gcloud app deploysucceeds, it exits and closes stdin. Theyesprocess then receivesSIGPIPE, emitsyes: standard output: Broken pipe, and exits non-zero. Becausepipefailis enabled, the whole step is marked failed even though the App Engine version was successfully deployed.Evidence
In run
24918186779, GitHub Actions logged:Deployed service [default] to [https://staging-2342-b7c5e75-dot-policyengine-api.uc.r.appspot.com]yes: standard output: Broken pipeProcess completed with exit code 1GCP confirms the deployed staging version exists and serves readiness checks successfully.
Fix
Use
gcloud app deploy --quietinstead of pipingyesinto the command. That preserves non-interactive behavior without producing a false failure after successful deploys.