Fix the build workflow's YAML so it actually runs
Build apps / build (push) Failing after 1m48s

The alert steps passed their message body as a bare multi-line argument starting
at column 0. That ends the YAML block scalar, which makes the whole file invalid:
"a multiline key may not be an implicit key". Gitea still listed the workflow as
active and simply never created a run for it — no error anywhere, which is why two
pushes appeared to do nothing.

The bodies are built with indented heredocs now, so every line stays inside the
block scalar. Validated by parsing the file rather than by eye; a workflow that is
registered but silently never triggers looks exactly like one that works.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Waters Church
2026-09-24 15:39:08 -04:00
co-authored by Claude Opus 5
parent b5a3d48d86
commit af97626b12
+25 -16
View File
@@ -96,32 +96,41 @@ jobs:
if: success() if: success()
run: | run: |
export PATH="/usr/local/bin:$PATH" export PATH="/usr/local/bin:$PATH"
APP="$HOME/checklist-app" cd "$HOME/checklist-app"
cd "$APP"
V="$(node -e 'const c=require("./mobile/release.config.json");console.log(`${c.version} (ios build ${c.iosBuild}, android code ${c.androidVersionCode})`)')" V="$(node -e 'const c=require("./mobile/release.config.json");console.log(`${c.version} (ios build ${c.iosBuild}, android code ${c.androidVersionCode})`)')"
node scripts/alert.js "Apps rebuilt and waiting — shipped versions are now behind" \ # The body is built with a heredoc rather than a bare multi-line argument: an
"A change landed that the iOS and Android apps bundle, so they were rebuilt on the # argument that starts at column 0 ends the YAML block scalar and makes this whole
ingest Mac. Both built cleanly and are signed and ready. # file unparseable, which Gitea reports only by silently never running it.
BODY="$(cat <<MSG
A change landed that the iOS and Android apps bundle, so they were rebuilt on the
ingest Mac. Both built cleanly and are signed and ready.
They are NOT on anyone's phone yet, and will not be until you ship them: They are NOT on anyone's phone yet, and will not be until you ship them:
cd ~/Documents/recurring-checklist-app cd ~/Documents/recurring-checklist-app
./release.sh --ios --android ./release.sh --ios --android
Current numbering: $V Current numbering: $V
The website already has this change — it deploys on push. Only the apps, which carry The website already has this change — it deploys on push. Only the apps, which
their own copy of the UI, are waiting." || true carry their own copy of the UI, are waiting.
MSG
)"
node scripts/alert.js "Apps rebuilt and waiting — shipped versions are now behind" "$BODY" || true
- name: Tell Christian the build broke - name: Tell Christian the build broke
if: failure() if: failure()
run: | run: |
export PATH="/usr/local/bin:$PATH" export PATH="/usr/local/bin:$PATH"
cd "$HOME/checklist-app" cd "$HOME/checklist-app"
node scripts/alert.js "App build FAILED on the ingest Mac" \ BODY="$(cat <<MSG
"A push changed something the apps bundle, and the rebuild did not compile. A push changed something the apps bundle, and the rebuild did not compile.
The website is unaffected — it deploys separately and is already live with this The website is unaffected — it deploys separately and is already live with this
change. But the apps cannot be shipped until this builds again. change. But the apps cannot be shipped until this builds again.
Full log: http://chronicles-ab.waterschurch.org:3000/christian/recurring-checklist/actions" || true Full log:
http://chronicles-ab.waterschurch.org:3000/christian/recurring-checklist/actions
MSG
)"
node scripts/alert.js "App build FAILED on the ingest Mac" "$BODY" || true