internal: Bootstrap sbt-airframe in release workflows (release 2026.2.1)#4186
Merged
Conversation
The v2026.2.0 release partially failed: every release workflow that loads the root build (Scala JVM/JS/Native and sbt-airframe) couldn't resolve the not-yet-published sbt-airframe plugin - the same bootstrap deadlock, now in the release path. Only the standalone AirSpec release (no sbt-airframe dependency) succeeded, publishing airspec 2026.2.0. Add the bootstrap-sbt-airframe composite action to the four release workflows. In release-sbt-plugin.yml it must run before AIRFRAME_VERSION is set, so the plugin's own deps resolve from the last released airframe on Maven Central instead of the version being built (breaking the cycle). Since airspec 2026.2.0 is already on Central (versions are immutable), cut a new patch 2026.2.1 for the complete suite rather than rewriting the released tag. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Code Review
This pull request updates the sbt-airframe version from 2026.2.0 to 2026.2.1 across the GitHub action configuration and various plugins.sbt build files. I have no feedback to provide on these changes.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
|
Tick the box to add this pull request to the merge queue (same as
|
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.
Why
The
v2026.2.0release partially failed. Every release workflow that loads the root build —Release Scala JVM/Scala.js/Scala Native/sbt-airframe— couldn't resolvesbt-airframe_sbt2_3:2026.2.0, because the root metabuild depends on the very plugin being released (the same bootstrap deadlock, now in the release path). Only the standaloneRelease AirSpec(no sbt-airframe dependency) succeeded — soairspec 2026.2.0is live on Central, but the rest of the suite is not.What this does
bootstrap-sbt-airframecomposite action to the four release workflows so the root build can load.release-sbt-plugin.yml, the bootstrap runs beforeAIRFRAME_VERSIONis set, so the plugin's ownairframe-*deps resolve from the last released version on Maven Central rather than the not-yet-built release version — breaking the circular dependency. The subsequentprojectJVM/publishLocalthen produces the real2026.2.1libs, and the authoritativepublishSignedbuilds sbt-airframe against them.SBT_AIRFRAME_VERSIONdefaults and the bootstrap version to2026.2.1.Recovery plan
airspec 2026.2.0is already published and Central versions are immutable, so instead of rewriting the released tag we cut a fresh patch. After merge: tagv2026.2.1→ all release workflows publish the complete2026.2.1suite.2026.2.0remains a harmless partial (onlyairspec, which the main build doesn't depend on — it pinsAIRSPEC_VERSION=24.12.1).Once
2026.2.1is confirmed on Central, the temporary CI + release bootstrap can be removed.🤖 Generated with Claude Code