One tag push builds and publishes everything: seven CLI jars and four GUI
installers, attached to a GitHub pre-release by .github/workflows/release.yml.
| Asset | Built by | Runner |
|---|---|---|
ImageTester_<version>.jar (universal) + _Windows / _Mac / _MacArm / _Linux / _Alpine / _Arm |
build-jars job — mvn -DskipTests package |
ubuntu (one build produces all seven; they differ only by bundled eyes-universal-core binary) |
ImageTester-<version>-Windows.msi |
build matrix — mvn -Pgui-installers -DskipTests -Dowasp.skip=true clean verify |
windows-latest |
ImageTester-<version>-macOS-AppleSilicon.dmg |
〃 | macos-latest |
ImageTester-<version>-macOS-Intel.dmg |
〃 | macos-15-intel |
ImageTester-<version>-Linux.deb |
〃 | ubuntu-latest |
Release notes come from .github/release-template.md ({{VERSION}} substituted).
- Bump the version in
pom.xml(<version>). The workflow refuses tags whose base version disagrees with the pom, so installer metadata and asset names always match. - Merge to
mainwith CI green. - Tag and push:
Suffixed tags (
git tag v3.13.0 git push origin v3.13.0v3.13.0-rc1) are allowed; the base must equal the pom version. - The Release workflow creates a pre-release with all eleven assets. Download, smoke-test an installer and a jar, then flip the release from pre-release to latest in the GitHub UI. The README's Download badge points at the latest release.
Run the Release workflow manually (workflow_dispatch): it builds every asset
as workflow artifacts but never creates a release.
- CLI jars:
mvn -DskipTests package(JDK 11+) →jars/ImageTester_<version>*.jar. - GUI installer for your OS:
mvn -Pgui-installers -DskipTests -Dowasp.skip=true clean verify(needs JDK 17 — jpackage) →target/installers/.
Installers currently ship unsigned (the release notes explain the OS warnings).
The workflow fails loudly if WINDOWS_SIGNING_CERT / APPLE_SIGNING_CERT
secrets are set before the signing steps are implemented, so a "signed" release
can never silently ship unsigned.