Repository navigation
fix(ci): QA asset guard probes PROD approuter (QA is a feature of prod) - #2923
Merged
Merged
Conversation
…PROUTER_URL_QA /tutorials-qa/* is served by the MAIN (prod) approuter (approuter/xs-app.json routes it to the srv-qa-api destination) — QA is a feature of production, not a separate environment. The asset guard referenced secrets.APPROUTER_URL_QA, which does not exist (repo has only APPROUTER_URL_DEV and APPROUTER_URL_PROD), so it resolved to an empty string and the guard die()d with 'missing --approuter-url' on every full QA rebuild. Point it at APPROUTER_URL_PROD.
This was referenced Oct 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A full QA content rebuild fails at the final step "Guard - approuter serves referenced CSS + islands (QA)" with:
The step sets
APPROUTER_URL: ${{ secrets.APPROUTER_URL_QA }}, but there is noAPPROUTER_URL_QAsecret — the repo has onlyAPPROUTER_URL_DEVandAPPROUTER_URL_PROD. The reference resolves to an empty string, so the guard aborts. (This is independent of the #2917 CSS-build fix, which works — the QA Hugo build now passeshead.html:27.)Root cause
QA is a feature of production, not a separate environment.
/tutorials-qa/*is routed by the main (prod) approuter —approuter/xs-app.jsonsends it to thesrv-qa-apidestination (thetutorials-srv-qaapp in the prod MTA). So the QA HTML is dressed by the PROD approuter, and the asset guard — which probes the approuter serving that HTML — must target the PROD approuter.Fix
APPROUTER_URL: ${{ secrets.APPROUTER_URL_QA }}→${{ secrets.APPROUTER_URL_PROD }}, with a comment explaining the QA-is-prod routing so it isn't "corrected" back later.Impact / safety
Verification
yqconfirms the step'senv.APPROUTER_URLnow resolves tosecrets.APPROUTER_URL_PROD.approuter/xs-app.json(^/tutorials-qa/(.*)$→srv-qa-api).Follow-up once merged + promoted to main: re-run the full QA rebuild to confirm the guard passes and QA content refreshes.
🤖 Generated with Claude Code