Skip to content

Latest commit

 

History

History
84 lines (61 loc) · 2.69 KB

File metadata and controls

84 lines (61 loc) · 2.69 KB

Release Distribution Guide

Overview

Release artifacts for BiByte are large (43+ MiB with embedded JRE) and are not stored in this repository for performance reasons.

Building Release Artifacts

Prerequisites

  • Java 25 JDK
  • Gradle 9.2.0+
  • jpackage and jlink tools

Build Steps

# Build the project
gradle clean build

# Generate distribution packages
gradle packageMacDmg                # macOS host: creates DMG in build/native/mac
gradle packageDeb                   # Linux host: creates DEB in build/native/deb
gradle packageWinExe                # Windows host: creates EXE in build/native/win/exe
gradle packageWinMsi                # Windows host: creates MSI in build/native/win/msi

Output Locations

  • JAR files: build/libs/BiByte-*.jar
  • Latest JAR alias: build/release/BiByte-latest.jar
  • Checksums: build/release/<version>/SHA256SUMS.txt
  • macOS: build/native/mac/BiByte-*-macos-*.dmg
  • Windows: build/native/win/exe/BiByte-*-windows-*.exe and build/native/win/msi/BiByte-*-windows-*.msi
  • Linux: build/native/deb/BiByte-*-debian-*.deb

prepareRelease collects the JAR and the native package for the current host. Run it on each target host when preparing multi-platform release assets.

Distribution Strategy

For GitHub Releases

  1. Use GitHub's Releases feature to attach built artifacts
  2. Do NOT commit distribution files to the repository
  3. Upload artifacts via the GitHub UI or using gh release upload

For Automated CI/CD

Use .github/workflows/publish-release.yml workflow to:

  1. Build artifacts automatically on tag push
  2. Create GitHub Release
  3. Upload artifacts directly to release

.gitignore Rationale

The build/release/ directory and generated build artifacts are ignored because:

  • Large file overhead: macOS bundle is 174 files, 43+ MiB
  • Slow clone/fetch: Unnecessary for development
  • Git push timeouts: HTTP 408 errors on large pushes
  • Duplication: Built locally on each machine as needed

Manual Release Publishing

To publish a release manually:

# 1. Build locally
gradle clean prepareRelease

# 2a. Create GitHub release (using gh CLI)
gh release create v7.0.0 build/release/7.0.0/BiByte-7.0.0.jar build/release/BiByte-latest.jar \
  --title "Version 7.0.0" \
  --notes "Release notes here"

# 2b. Or upload to existing release instead
gh release upload v7.0.0 build/release/BiByte-latest.jar build/release/7.0.0/*

Automating with GitHub Actions

The repository includes a reusable workflow that:

  1. Builds all distribution packages
  2. Creates/updates GitHub Release
  3. Uploads artifacts automatically

Trigger by pushing a tag: git tag v7.0.0 && git push origin v7.0.0