Skip to content

jreleaser: add 1.26.0 - #923

Open
bryan-minimal wants to merge 1 commit into
mainfrom
add-jreleaser
Open

bryan-minimal wants to merge 1 commit into
mainfrom
add-jreleaser

Conversation

@bryan-minimal

@bryan-minimal bryan-minimal commented Oct 18, 2026 •

Copy link
Copy Markdown
Member

What

Adds packages/jreleaser, JReleaser 1.26.0 (jreleaser/jreleaser, 2026-08-31). JReleaser is release automation: changelogs, forge releases, packagers, Maven Central deploys and announcements. Java loadout, #899.

  • Artifact: the JVM distribution jreleaser-1.26.0.zip, which holds a bin/jreleaser launcher and 133 jars in lib/. It is one artifact for both arches. sha256 c821df22…8dec628 matches upstream's jreleaser-1.26.0.zip.sha256, checksums_sha256.txt and the release asset digest. I chose it over the per-arch GraalVM native zips: one sha256, no match target, and it runs on the same JDK as the rest of the Java tooling. The bytecode targets Java 8, so any packaged jdk runs it.
  • Layout: /usr/share/jreleaser/{bin/jreleaser,lib/*.jar,LICENSE,NOTICE} plus a /usr/bin/jreleaser wrapper that execs the upstream launcher. The .bat launcher is dropped. The zip stores the jars as 0600, so build.sh installs them with explicit modes (0644, launcher 0755).
  • Launcher: the upstream bin/jreleaser is POSIX sh (#!/usr/bin/env sh). It resolves APP_HOME from its own path and runs java -classpath lib/* org.jreleaser.cli.Main. It uses $JAVA_HOME/bin/java if JAVA_HOME is set, otherwise java on PATH; the packaged jdk provides both. It honours JAVA_OPTS.
  • Runtime deps: jdk; bash (the sh scripts); coreutils (env, uname, ls, tr); findutils (xargs: the launcher dies with xargs is not available without it); sed (used to quote JAVA_OPTS).
  • Network: releasing means talking to git forges, Maven Central, registries and announcers. The package declares needs = { dns, internet } for consumers, as jbang (jbang: add 0.142.0 #903) does. Local steps such as init, config and assemble run offline, and the tests prove it.
  • Licence: Apache-2.0. Provenance: GithubRepo jreleaser/jreleaser (tags v<version>).
  • Prebuilt for the same reason as maven / gradle / jdtls: the Gradle build resolves from Maven Central. binary_from records it.

Tests (Standalone)

  • jreleaser_version: one line of jreleaser --version is exactly jreleaser 1.26.0.
  • init: jreleaser init --format yml in an empty dir writes a jreleaser.yml stamped # Generated with JReleaser 1.26.0, with a project: block.
  • assemble: a real offline release step. The test creates a git repo (git is a test dep, as in emacs-site-lisp) with a jreleaser.yml that declares an archive assembler over src/hello.txt. jreleaser config --assembly must parse and validate the config. jreleaser assemble must succeed, and demo-1.2.3.tar.gz and demo-1.2.3.zip must each contain demo-1.2.3/hello.txt. The tar is listed with tar, the zip with the JDK's jar. JAVA_OPTS pins the JVM's HTTP(S) proxy to a closed local port, so any network attempt fails instead of reaching out. No forge token is involved.

Verified

I built it in a pkgbuild session (arm64) with min package build --rebuild --verbose jreleaser, then ran min check --packages jreleaser. Every checker passed, including standalone tests, output types valid and missing runtime_deps.

Negative control (fresh session): I expected jreleaser 1.25.0 and demo-1.2.3/bye.txt in the zip. Both jreleaser_version and assemble failed. I restored the file and re-checked in a fresh session: it passed.

amd64 is left to CI; the distribution is architecture-independent.

Refs #899

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added a package for JReleaser 1.26.0, including its command-line launcher and supporting files.
    • The package supports initializing a project, validating assembly configuration, and creating ZIP and TAR.GZ archives, including offline archive assembly.

Release automation. Ships the architecture-independent JVM distribution
(bin/ launcher + lib/ jars) on jdk, with the launcher's sh/coreutils/
findutils/sed deps. Consumers inherit needs = { dns, internet }; tests run
init and an archive assemble offline.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bryan-minimal
bryan-minimal requested a review from a team as a code owner October 18, 2026 00:50
@coderabbitai

coderabbitai Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: gominimal/pkgs/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: 87a49f8f-09c9-407f-946d-d90984d90c36
📥 Commits

Reviewing files that changed from the base of the PR and between c56e4dc and 57cdca3.

📒 Files selected for processing: 2
  • packages/jreleaser/build.ncl
  • packages/jreleaser/build.sh

Included review availability: This review used your included allowance. 0 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour.

📝 Walkthrough

Adds a JReleaser 1.26.0 package built from its upstream ZIP. The package installs the launcher and distribution files, and tests cover version reporting, starter configuration, and offline archive assembly.

Changes: JReleaser package

Layer / File(s) Summary
Package definition and installation
packages/jreleaser/build.ncl, packages/jreleaser/build.sh
Defines the upstream distribution, dependencies, outputs, and package attributes. The build script installs the distribution files and creates a wrapper at /usr/bin/jreleaser.
Package tests
packages/jreleaser/build.ncl
Tests version reporting and generated YAML. An offline assembly test validates a sample project and checks that its input file appears in ZIP and TAR.GZ outputs.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant PackageBuild
  participant buildsh as build.sh
  participant InstalledWrapper
  participant DistributionLauncher
  PackageBuild->>buildsh: Run build with package version
  buildsh->>InstalledWrapper: Create /usr/bin/jreleaser wrapper
  InstalledWrapper->>DistributionLauncher: Forward arguments
Loading

Suggested reviewers: 0chroma

Merge Risk: ⚪ Minimal · up to 57cdc

No merge-blocking issue is established; the package is ready for normal checks.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely identifies the addition of the JReleaser 1.26.0 package, which is the main change.
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1 files. (1 skipped: 1 unsupported.)

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

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