Conversation
Since #400 the options-style inputs are expanded by the shell from an environment variable instead of being substituted into the script as literal text. Unquoted parameter expansion still splits on whitespace, but it does not perform quote removal, so quote characters in the value end up as literal characters in the argument. A value such as zpretty-options: '--extend-exclude "/rss/(rss\.xml|search-rss)\.pt$"' now reaches zpretty with the double quotes attached, the pattern matches nothing, and the excluded files are checked after all. The reference documentation recommended exactly that form. Describe the actual behaviour in a dedicated section, mark the two affected inputs, and fix the example to the unquoted form. While here, close the remaining gaps in the same reference: - Document the inputs of all fifteen reusable workflows. Only backend-lint had a table. - Add the five workflows that were missing entirely: coverage, circular, dependencies, qa and release_ready. - Correct the three composite action tables, which between them omitted five inputs and misdescribed setup_uv. - Correct the container registry secret names, documented as registry-username and registry-password rather than username and password. - Distinguish container-image-build from container-image-push by their shared registry-backed build cache. - Record that reusable workflows declare no permissions of their own, and state what frontend-storybook needs from its caller in order to deploy. Closes #404
For the github-actions ecosystem, directory "/" covers .github/workflows and a root-level action.yml. Our composite actions live in .github/actions/<name>/action.yml, which is neither, so their dependencies were never updated. The dependency graph confirms the blind spot: actions/setup-node does not appear at all, and astral-sh/setup-uv appears only at the versions used by the workflows, never at the version pinned inside the composite actions. Every commit touching .github/actions since it was created has been a manual bump. Use the directories key so the composite actions are scanned as well.
gforcada
approved these changes
Aug 12, 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.
Summary
Two related changes to how the shared workflows are documented and maintained.
The first fixes #404. Since #400 the
*-optionsinputs are expanded by the shell from an environment variable rather than substituted into the script as literal text. Unquoted parameter expansion still splits on whitespace, but it does not perform quote removal — so quote characters inside the value survive into the argument. The value we documented as the recommended form:now reaches
zprettywith the double quotes attached, matches nothing, and the deliberately excluded files get checked anyway.Per the discussion on the issue this is documented rather than worked around in the workflow, so the injection surface that #400 closed stays closed. The reference now describes the real behaviour, marks the two affected inputs, and shows the unquoted form.
The second closes a Dependabot blind spot found while reviewing the same files.
Documentation
docs/sources/reference/shared-workflows.mdgrew from 281 to ~530 lines:backend-linthad one.coverage,circular,dependencies,qa,release_ready.setup_backend_uvwas missingplone-versionandworking-directory, andsetup_frontenddocumented one of its four inputs.registry-username/registry-password; the workflows actually declareusername/password, so the documented example could not have worked.container-image-buildandcontainer-image-pushdistinguished by the registry-backed build cache they share.permissions:of their own, plus a table forfrontend-storybookshowing thatdeploy: trueneedscontents: writefrom the caller. Its deploy step also only runs onrefs/heads/main, which was undocumented.Dependabot
For the
github-actionsecosystem,directory: "/"covers.github/workflowsand a root-levelaction.yml. Our composite actions live at.github/actions/<name>/action.yml, which is neither, so nothing has ever updated their dependencies.The dependency graph confirms it:
actions/setup-nodedoes not appear at all — it exists only insidesetup_frontend— andastral-sh/setup-uvappears only at the versions used by the workflows, never at thev8.2.0pinned inside the composite actions. Every commit touching.github/actionssince it was created has been a manual bump.Switched to the
directorieskey so those directories are scanned too.Please sanity-check the glob. I could not verify that
/.github/actions/*resolves for this ecosystem — globbing is documented as adirectoriesfeature, and what/means is documented separately per ecosystem, but the docs do not say the two compose. If it matches nothing we get no coverage and no error. After merge,actions/setup-nodeappearing in the dependency graph is the signal that it worked; if it does not, the fallback is listing the three action directories explicitly.Out of scope
astral-sh/setup-uvis stale atv7.5.0in six workflows andv7indocs.yml, while v8 has been out since March. This is not the scope problem above — the dependency graph shows Dependabot sees it and skips it, and it has never opened a PR for it. Likely an ignore condition or a failing update job; both are visible from Insights → Dependency graph → Dependabot. Worth a separate issue.Verification
make docsbuilds clean. The only warning is pre-existing and unrelated (how-to/setup-to-pyprojectis not in a toctree). All new cross-references resolve.Closes #404