8000 Release tooling after 0.2.0: bin/release.sh, verify scripts that check Central, templates on 0.2.0 by rleibman · Pull Request #162 · rleibman/thicket · GitHub
[go: up one dir, main page]

Skip to content

Release tooling after 0.2.0: bin/release.sh, verify scripts that check Central, templates on 0.2.0 - #162

Merged
rleibman merged 1 commit into
mainfrom
release-tooling
Nov 13, 2026
Merged

rleibman merged 1 commit into
mainfrom
release-tooling

Conversation

@rleibman
Copy link
Copy Markdown
Owner

Item 1 of the post-0.2.0 list. The iOS device-builds issue is #161; the Android options come separately.

Changes

  • bin/release.sh <version>: the route 0.2.0 took, as one command.

    1. The Mac clones the tag and runs publish; platforms/publish unsigned.
    2. The staging comes back without macOS's ._* files.
    3. Every module is checked: jar, sources, javadoc, POM fields, checksums, no SNAPSHOT.
    4. Everything is signed here, every signature verified, and the bundle uploaded as USER_MANAGED.
    5. It waits for VALIDATED and never publishes: that stays your click.

    RELEASE_UPLOAD=0 rehearses without uploading.

  • bin/verify-getting-started.sh and -apple.sh: THICKET_VERSION=<v> now checks a release. The script skips publishLocal and gives sbt an empty coursier cache, Ivy home and global base. It fails unless every Thicket jar came from repo1.maven.org. Until now both scripts ignored THICKET_VERSION and always tested local jars, though docs/14 told you to run them against the release.

  • Templates default to 0.2.0. All three defaulted to 0.1.0, which was never published. Copying a template, as the README says, failed to resolve.

  • Docs:

Measured

Check Result
THICKET_VERSION=0.2.0 bin/verify-getting-started.sh PASS. 5 Thicket jars from repo1.maven.org; 6 089 368-byte binary; still running at 10 s
Local mode, the old behaviour PASS (0.2.0-SNAPSHOT)
THICKET_VERSION=0.2.0-SNAPSHOT, a version that exists only in ~/.ivy2/local FAILS as it should: sbt looked only in the empty Ivy folder
THICKET_VERSION=0.2.0 bin/verify-getting-started-apple.sh on the Mac PASS on macOS (window 320×192) and the iOS simulator, jars from repo1. The first run failed with "socket file absolute path too long" under the Mac's $TMPDIR; a short SBT_GLOBAL_SERVER_DIR fixed it
bin/release.sh 0.2.0, RELEASE_UPLOAD=0 69 modules, 276 signatures verified, 52 MB bundle
bin/release.sh 9.9.9 refused: no tag
GTK template copied out, empty caches, no THICKET_VERSION before: ResolveException … sbt-thicket_sbt2_3:0.1.0; after: nativeLink exit 0 from Central alone

Findings, not fixed here

  • Rebuilds aren't byte-identical. 44 of 69 rebuilt jars match Central exactly. The 25 Scala Native jars don't, probably because they record the build directory; the cause isn't established. It doesn't affect users, but nobody can verify a release by rebuilding it. Recorded in docs/14.
  • The Apple script's local mode is what the Apple CI job runs, so this PR's Apple job exercises it. I only ran its released mode by hand.

Not run

checkLinux: nothing here is a build input. The templates are outside the build, and the rest is shell and docs. CI runs it anyway.

🤖 Generated with Claude Code

…k Central, templates on 0.2.0

- bin/release.sh: the route 0.2.0 took, as one command. The Mac builds the tag
  unsigned; the staging comes back without ._ files; every module is checked
  (four files, POM fields, checksums, no SNAPSHOT), signed here, verified, and
  uploaded USER_MANAGED. It waits for VALIDATED and never publishes.
  RELEASE_UPLOAD=0 rehearses without uploading.
- verify-getting-started{,-apple}.sh: THICKET_VERSION=<v> now means "check a
  release": no publishLocal, empty coursier cache / Ivy home / global base, and
  a failure unless every thicket jar came from repo1.maven.org. Before, both
  ignored THICKET_VERSION and always tested local jars, though docs/14 said to
  run them against the release.
- templates: default to 0.2.0. All three defaulted to 0.1.0, never published, so
  copying a template as the README says failed to resolve.
- README, docs/13: 0.2.0 is on Central; the gaps left are an Android template
  and iOS device builds (#161). docs/14 §14.4-14.5 rewritten; decision-log entry.

Measured:
- THICKET_VERSION=0.2.0 bin/verify-getting-started.sh: PASS, 5 thicket jars
  from repo1.maven.org, 6089368-byte binary, still running at 10 s. Local mode:
  PASS (0.2.0-SNAPSHOT). THICKET_VERSION=0.2.0-SNAPSHOT (local only): FAILS,
  resolution looks only in the empty Ivy home.
- verify-getting-started-apple.sh, THICKET_VERSION=0.2.0, on the Mac: macOS
  window 320x192 and iOS simulator both PASS, jars from repo1.maven.org. The
  first run failed: sbt's socket path under the Mac's $TMPDIR was too long; a
  short SBT_GLOBAL_SERVER_DIR fixed it.
- bin/release.sh 0.2.0 with RELEASE_UPLOAD=0: 69 modules, 276 signatures
  verified, 52 MB bundle. 44 of 69 jars byte-identical to Central; the 25 Scala
  Native jars are not (recorded in docs/14). 9.9.9 refused: no tag.
- The GTK template copied out with empty caches: before, ResolveException for
  sbt-thicket 0.1.0; after, nativeLink exit 0 from Central alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI left a comment
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

Copilot was unable to complete this review at the selected tier due to model policy or plan restrictions.

🔵 Needs a closer look

The change introduces release automation that depends on a remote macOS build plus real Sonatype/Maven Central and GPG interactions, which cannot be reliably validated without an end-to-end rehearsal in the actual environment.

No open issues 🎉

What changed in this PR

Adds post-0.2.0 release automation and verification tooling, and updates templates/docs to reflect the first published release on Maven Central.

Changes:

  • Adds bin/release.sh <version> to orchestrate staging, verification, signing, and Central Portal upload/validation waiting (without publishing).
  • Updates getting-started verification scripts to support release-mode checks (THICKET_VERSION=...) with isolated sbt/coursier state and Central provenance validation.
  • Bumps templates to default to 0.2.0 and refreshes README/docs/decision log to match the new release and verification workflow.
File Description
templates/​hello-thicket/​project/​plugins.sbt Updates the hello-thicket template to default the sbt-thicket plugin version to 0.2.0.
templates/​hello-thicket-macos/​project/​plugins.sbt Updates the macOS template to default the sbt-thicket plugin version to 0.2.0.
templates/​hello-thicket-ios/​project/​plugins.sbt Updates the iOS template to default the sbt-thicket plugin version to 0.2.0.
README.md Refreshes project status and getting-started guidance to reflect that 0.2.0 is available on Maven Central.
docs/​decisions.md Adds a decision-log entry documenting the two-machine release route (Mac builds; Linux signs/uploads).
docs/​14-releasing.md Rewrites release/verification instructions around the new scripts and records details of the 0.2.0 release process.
docs/​13-phases.md Updates the phase/status documentation to reflect current publishing state and remaining gaps after 0.2.0.
bin/​verify-getting-started.sh Adds a release-mode verification path driven by THICKET_VERSION using isolated caches and Maven Central provenance checks.
bin/​verify-getting-started-apple.sh Adds an Apple-focused release-mode verification path with isolated caches, provenance checks, and an sbt server-dir workaround.
bin/​release.sh Introduces a release orchestration script to fetch a tag, stage artifacts, verify/sign them, upload to Central, and wait for validation without publishing.

Review effort: Balanced

@rleibman
rleibman merged commit d4ea9fa into main Nov 13, 2026
2 of 3 checks passed
rleibman added a commit that referenced this pull request Nov 13, 2026
One conflict: docs/decisions.md, where both sides added a 2026-11-12 entry at
the top of the log. Both kept, the Android entry first.

Statements #162 brought in that this branch makes untrue, corrected in the same
merge: README's "no Android template or plugin yet" and docs/13's phase-5
"Still open: an Android template and plugin". docs/18's status (#163) goes from
"being built" to built.

Measured: sbt --error checkLinux on the merged tree, exit 0, 356 passed, 0 failed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rleibman added a commit that referenced this pull request Nov 13, 2026
One conflict: docs/decisions.md, where main's two 2026-11-12 entries and this
branch's 2026-11-03 camera-preview entry were both added at the top. All kept,
newest first.

Brought in line with rules main gained since this branch:
- thicket-camera-preview-apple sets `description` (#157: every published module
  does; the POM's description is what Central's search shows).
- The Swift-carrying Apple modules are eight with this one, not seven:
  docs/14 §14.5 and bin/release.sh's header. docs/14's 2026-11-09 rehearsal
  record keeps "seven", which was true then.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

2 participants

0