Before a release:
- Update the version in
pyproject.toml. - Update
CHANGELOG.mdand release notes. - Confirm the public working tree contains no secrets or internal planning files.
- Ensure the main branch CI checks are green.
- Validate the target Ubuntu/Debian installation path.
make checkThe GitHub release workflow repeats the quality checks before building native AMD64 and ARM64 Debian packages. Each package is built, installed, and smoke-tested on a runner with the matching architecture. AMD64 builds use Ubuntu 22.04; ARM64 builds use Ubuntu 24.04 because the pinned Qt ARM64 wheel requires glibc 2.39 or newer.
| Package architecture | Native CI runner | Compatibility target |
|---|---|---|
| AMD64 | Ubuntu 22.04 AMD64 | Ubuntu 22.04+ and Debian 12+ |
| ARM64 | Ubuntu 24.04 ARM64 | Ubuntu 24.04+ and Debian 13+ |
CI validates package creation, installation, and headless startup on the listed Ubuntu runners. Debian versions and derivative distributions remain compatibility targets until they pass clean-system validation. ARM32 is not supported. See SUPPORTED_PLATFORMS.md for the public support policy.
python3 -m pip install --constraint requirements/release-constraints.txt -e ".[packaging]"
export SOURCE_DATE_EPOCH="$(git log -1 --pretty=%ct)"
./scripts/release/build_deb.shThe build produces:
dist/oracle41-open_<version>_<arch>.debdist/oracle41-open_<version>_<arch>.deb.sha256
The build uses a self-contained PyInstaller runtime. It must run natively on the target architecture; the script rejects attempts to label a package for a different architecture. Release dependency versions are pinned in requirements/release-constraints.txt; update that file deliberately when upgrading packaging or runtime dependencies.
Validate package metadata and contents with dpkg-deb --info, dpkg-deb --contents, and sha256sum -c. The release workflow also validates the desktop and AppStream metadata, extracts each package, runs the frozen binary offscreen, installs the .deb, and repeats the smoke test through /usr/bin/oracle41-open.
On a clean Ubuntu or Debian VM, install with:
sudo apt install ./dist/oracle41-open_*.deb
oracle41-openVerify startup, tab navigation, Settings, provider-key storage, backup/restore, and uninstall behavior on each target distribution before marking it as manually validated.
Use a semver-compatible tag such as v0.2.0-alpha.1. Pushing a version tag triggers the Debian release workflow. Do not push a tag until the source commit and package have been reviewed.
Python uses the PEP 440 version 0.4.0a7. Debian package metadata and filenames normalize that pre-release to 0.4.0~a7, so a later 0.4.0 package is considered a valid upgrade.