Fix release publishing pipelines for all languages - #273
Merged
Conversation
- csharp: version check used a mixed-case NuGet flat-container URL which 404s from CI, so the workflow re-pushed already-published versions and failed with 403; lowercase the URL so existing versions are skipped correctly - java: migrate publishing from the decommissioned OSSRH (s01.oss.sonatype.org) to the Central Portal via central-publishing-maven-plugin; skip publishing with a warning when CENTRAL_USERNAME/CENTRAL_TOKEN/GPG secrets are missing instead of failing every push to main - rust: publish links-notation-macro before links-notation - the main crate now depends on it, and it has never been published to crates.io - go: add publishRelease job creating go/vX.Y.Z tags (required format for Go submodule versioning) driven by a new go/VERSION file - all: publishRelease jobs referenced needs.findChangedXFiles without listing it in needs:, so the condition always evaluated false and GitHub releases were silently never created; add the missing needs entries Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Fixes the failing/broken publish jobs so registries actually receive updates when versions are released.
Root causes found and fixed
C# —
pushToNugetfailing on every main push (redcsharpworkflow)The version-existence check hit
api.nuget.org/v3-flatcontainer/Link.Foundation.Links.Notation/...with a mixed-case package id — the flat-container API is lowercase-only from CI runners, so the check always said "version does not exist", the job re-pushed the already-published 0.13.0 (on NuGet since 2025-12-01), and nuget.org rejected it with 403. The URL is now lowercased, so existing versions are skipped and the workflow goes green.Java —
publishToMavenCentralfailing on every main push (redjavaworkflow)Two independent problems:
gpg: signing failed: No secret key.s01.oss.sonatype.org(OSSRH), which Sonatype decommissioned in June 2025 — even with credentials it could never publish.Migrated to the Central Portal (
central-publishing-maven-plugin, server-idcentral), and the job now skips with a warning instead of failing when credentials are missing.Rust — next release would fail
links-notationnow depends onlinks-notation-macro, which has never been published to crates.io — the nextcargo publishwould be rejected. The workflow now publishes the macro crate first (tolerating already-exists). Verified withcargo publish --dry-run.Go — no versioning at all
js/python/rust/csharp all have 0.13.0 tags, but Go has none, so
go get ...@v0.13.0cannot work. Added apublishReleasejob that createsgo/vX.Y.Ztags (the required format for submodule Go modules) driven by a newgo/VERSIONfile (set to 0.13.0).All languages — GitHub releases silently never created
Every
publishReleasejob'sif:referencedneeds.findChangedXFiles.outputs...without listing that job inneeds:— GitHub evaluates the missing context as empty, the condition is always false, and release tagging has been silently skipped since the workflows were restructured. Added the missingneeds:entries in all five workflows.CENTRAL_USERNAME/CENTRAL_TOKENGPG_PRIVATE_KEY/GPG_PASSPHRASEgpg --armor --export-secret-keysNPM_TOKENNUGET_TOKEN,PYPI_TOKEN, and org-levelCARGO_TOKENare present. The NuGet 403 may disappear entirely with the fixed version check; if a future genuine push still 403s, the key needs rotation.Verification
mvn help:effective-pom -Preleaseresolves the new central-publishing plugincargo publish -p links-notation-macro --dry-runpackages and verifies cleanly🤖 Generated with Claude Code