Repository navigation
deploy.yml --var flags may not be honored by multiapps plugin (PR #438 follow-up) #455
Description
Symptom
PR #438 added --var flags to the cf deploy invocation in .github/workflows/deploy.yml:129-135 to substitute ${github-dispatch-token} (and the existing ${content-api-key} / ${rebuild-api-key} / ${approuter-url} placeholders) at deploy time.
The CI workflow has not run since #438 merged, so the --var syntax has never been exercised against the multiapps plugin in our deploy pipeline.
Today (2026-06-20), during a local DEV deploy, I discovered that cf deploy --var ... is NOT a recognized flag in either multiapps 3.10.0 (default install) or 3.11.1 (latest as of 2026-06-20). cf deploy --help does not list --var; passing it causes the help text to print and the deploy to abort.
Reproduction
$ cf plugins | grep multiapps
multiapps 3.11.1 ...
$ cf deploy mta_archives/some.mtar -e some.mtaext --var foo=bar -f
# prints help text; deploy failsWhy CI may have been silently broken
GitHub Actions hasn't triggered a Build & Deploy workflow run since #438 merged. The first run will likely fail with an "Unable to resolve tutorials-srv#github-dispatch-token" error from the multiapps deploy service (the same error I saw locally).
Possibilities to investigate:
- Linux multiapps plugin may differ from Windows. Our local environment is Windows; CI runs on
ubuntu-latest. Maybe the Linux build accepts--varand the Windows build doesn't. - The plugin's
--require-secure-parametersflag (visible incf deploy --help) may be the right substitute — it accepts secure-parameter values via stdin or env vars in a different shape. - Pre-build substitution at
mbt buildtime is the standard alternative: pass values viaCF_VAR_<name>env vars tombt build -e dev.mtaext. (I tested this locally; placeholders survived. Worth verifying with the-eflag's full semantics.) - A different CF MTA tool entirely (e.g.,
cf bg-deploy,cf mta) may accept--varwherecf deploydoesn't.
Today's workaround
For today's local DEV deploy I:
- Edited
deploy/dev.mtaextto replace${github-dispatch-token}with empty literal''. - Re-ran
mbt build -e ../deploy/dev.mtaext. - Ran
cf deploy mta_archives/*.mtar -e ../deploy/dev.mtaext -f(no--var). - Reverted the dev.mtaext edit.
The deploy succeeded. tutorials-srv is running with GITHUB_DISPATCH_TOKEN="" — the safe failure mode per the spec at docs/superpowers/specs/2026-06-19-github-dispatch-token-mtaext-design.md. Admin-write debounced rebuilds won't fire until this is fixed and a new deploy lands.
Suggested investigation
- Trigger the existing deploy.yml workflow_dispatch on DEV and observe whether the
--varflags actually resolve placeholders or cause the same "Unable to resolve" error I saw locally. - If broken, the fix is either:
- Switch to
mbt buildwithCF_VAR_<name>env vars (substitution at build time). - Switch to
--require-secure-parametersif it provides the expected interface. - Use a wrapper tool that does pre-substitution (e.g.
envsubstover the mtaext before deploy).
- Switch to
Refs
- PR: fix(deploy): persist GITHUB_DISPATCH_TOKEN via mtaext (#435) #438 (added the unverified
--varlines) - Spec: docs/superpowers/specs/2026-06-19-github-dispatch-token-mtaext-design.md
- Memory:
feedback_default_off_flags_need_live_smoke— exactly this pattern (PR landed, no live deploy validation)
Activity
fix(ci): mtaext placeholder substitution via envsubst, not non-existe…