fix: resolve 'changed'/'all' extensions in downstream publish jobs - #165
Merged
Merged
Conversation
The determine-changes job resolves the `extensions` input (e.g. 'changed' or 'all') into concrete extension directory names and exposes them via `selected-extensions`. Several downstream jobs instead consumed the raw `inputs.extensions` value, so when a caller passed `extensions: changed` they looped over the literal string "changed" as if it were a directory: - create-github-releases: looked for packages/changed/package.json, did not find it, skipped, yet still printed "Releases created" — so nightly runs stopped producing GitHub releases while tags kept being created. - slack-notify / slack-notify-failure: reported blank extension names and versions. - determine-publish-matrix: read the raw input (currently inert for nightly since IS_NIGHTLY short-circuits to an empty matrix, fixed for consistency / future non-nightly use). Wire determine-changes into each job's `needs` and consume `needs.determine-changes.outputs.selected-extensions`. Also gate create-github-releases on the resolved output rather than the raw input.
madhur310
reviewed
Jul 29, 2026
Contributor
There was a problem hiding this comment.
missed updating publish-skipped-notice?
Contributor
Author
There was a problem hiding this comment.
Good catch — fixed in 3c316d6. Wired determine-changes into the job's needs and switched the log line to needs.determine-changes.outputs.selected-extensions so it prints resolved directory names instead of the literal changed. It's log-only here (no functional break like create-github-releases), but it keeps this job consistent with the rest of the fix.
Addresses review feedback on PR #165: publish-skipped-notice logged the raw inputs.extensions (e.g. the literal 'changed') instead of the resolved directory names. Wire determine-changes into needs and consume needs.determine-changes.outputs.selected-extensions for consistency with the other downstream jobs.
madhur310
approved these changes
Jul 29, 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
Consuming repos that call
vscode-publish-extensions.ymlwithextensions: changed(orall) stopped getting GitHub releases from their nightly builds, even though the workflow reported success and tags kept being created.Observed in
forcedotcom/apex-language-support: nightly tags continue daily (v0.9.32-nightly.20260729), but the last GitHub release isv0.9.19-nightly.20260714— the first nightly after that repo migrated its nightly toextensions: 'changed'.Root cause
determine-changesresolves theextensionsinput (changed/all/CSV) into concrete extension directory names and exposes them asoutputs.selected-extensions. Thebump-versionsjob correctly consumes that resolved output — which is why tags kept working.But several downstream jobs read the raw
inputs.extensionsinstead, so withextensions: changedthey iterated over the literal string"changed"as if it were a directory:create-github-releases— looked forpackages/changed/package.json, didn't find it,continued, then still printed✅ Releases created. Silent no-op → no GitHub release. This is the reported breakage.slack-notify/slack-notify-failure— reported blank extension names/versions in nightly Slack messages.determine-publish-matrix— reads the raw input too; currently inert for nightly (IS_NIGHTLY: 'true'short-circuits to an empty matrix before the input is used), fixed for consistency and future non-nightly use.Evidence from a live run (
create-github-releasesstep):Fix
Wire
determine-changesinto each affected job'sneedsand consumeneeds.determine-changes.outputs.selected-extensionsinstead ofinputs.extensions. Also gatecreate-github-releaseson the resolved output rather than the raw input.determine-changesitself (line ~216) intentionally still reads the rawinputs.extensions— it is the resolver.Validation
determine-changeshas noneeds, so no dependency cycle is introduced.determine-changesinneeds.Full end-to-end confirmation requires a nightly run in a consuming repo (or a
workflow_dispatchwithextensions: changed) after this merges to@main.