Skip to content

fix(ci): read the root release outputs without a path prefix - #35

Merged
TheMeinerLP merged 2 commits into
mainfrom
fix/release-outputs
Aug 13, 2026
Merged

fix(ci): read the root release outputs without a path prefix#35
TheMeinerLP merged 2 commits into
mainfrom
fix/release-outputs

Conversation

@TheMeinerLP

Copy link
Copy Markdown
Contributor

Two defects from Phase 7 that only surfaced once real releases ran.

The image publishes never fired

The apus 0.2.0 release created its tag and bumped the version, but build-context and all six publish-* jobs were skipped — while publish-telemetry-addon on the telemetry-addon 0.2.0 release ran through fine.

The cause is in release-please-action's own output handling:

function setPathOutput(path, key, value) {
  if (path === '.') {
    core.setOutput(key, value);          // root package: bare key
  } else {
    core.setOutput(`${path}--${key}`, value);
  }
}

The root package is the exception to the <path>--<key> naming rule. The workflow read outputs['.--release_created'], which is therefore always empty, so the gate never opened. The two component packages were prefixed correctly, which is exactly why the Maven publish worked and hid the problem.

Fixed by reading outputs.release_created / outputs.version for the root track. The two component outputs stay as they are.

Every release PR failed the link check

lychee reported a 404 on

https://github.com/OneLiteFeatherNET/Apus/compare/telemetry-addon-v0.1.0...telemetry-addon-v0.2.0

Release Please writes compare links pointing at the tag that the release PR itself will create on merge — so while the PR is open, the tag does not exist. CHANGELOG.md is already in .markdownlint-cli2.jsonc's ignores, but lychee is a separate step in the central workflow and does not read that config.

Fixed by passing --exclude-path CHANGELOG.md through the lychee-args input. Verified locally against the exact failing link with lychee 0.24.2: 1 error before, 0 after.

Consequence for the current release

apus-v0.2.0 is tagged but has no images — they were skipped, not failed. The next release on the root track will produce them; alternatively the publish jobs can be re-run manually against that tag.

The Phase 7 plan document carried the same wrong output names and is corrected here too, so it does not serve as a template for the next repository.

🤖 Generated with Claude Code

release-please-action's setPathOutput() emits the bare output key when the
package path is ., and only prefixes the component packages. The workflow
read `.--release_created`, which is therefore always empty, so build-context
and all six image publishes were skipped on the apus 0.2.0 release while
publish-telemetry-addon -- whose prefixed output name was correct -- ran fine.

Also exclude CHANGELOG.md from the lychee link check: release-please writes
compare links pointing at the tag the release PR has not created yet, so every
release PR failed the link check with a 404. markdownlint already ignores the
file via `ignores`, but lychee is a separate step that does not read it.
@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Test results

496 tests   496 ✅  30s ⏱️
 68 suites    0 💤
 68 files      0 ❌

Results for commit fa33c51.

♻️ This comment has been updated with latest results.

release-please writes one CHANGELOG.md per package, so telemetry-addon/CHANGELOG.md
was linted and failed on MD012. A bare "CHANGELOG.md" ignore pattern only matches
the file in the repository root.
@TheMeinerLP
TheMeinerLP merged commit c0bd759 into main Aug 13, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant