Release candidates
A release candidate is a set of installers built from one verified commit on main, for the PO to install and test before a release (#17). It isn't a release: nothing is signed, tagged or published by it. An accepted candidate's files become the release (RELEASE_PROCESS.md); versions, tags and the changelog are there too.
What one holds
The Release candidate workflow (release-candidate.yml) uploads one artifact, named like its files, apollo-download-manager-<version>-<candidate>-<short commit>-<YYYYMMDD>, where <candidate> is rc.N for a tag and main for a hand-started run. For example apollo-download-manager-0.2.0-rc.1-3a93690-20261031 (velocity-v2-… until 0.1.1):
| File | What |
|---|---|
…-windows-x64-setup.exe | The Windows installer (PACKAGING.md) |
…-linux-amd64.deb, …-linux-x86_64.rpm | The Linux packages (PACKAGING.md) |
…-licence-report-windows.json, …-licence-report-linux.json | Every third-party component each platform's build ships, with the licence Apollo DM uses it under (pnpm notices with --report, LICENSING.md) |
build-info.json | The version, the tag if any, the commit, when and by which run it was built, each file's size and SHA-256, and each platform's native build records: the libcurl, OpenSSL, nghttp2, zlib, libtorrent and Boost versions with their sources, and the toolchains (BUILDING_NATIVE.md) |
SHA256SUMS | The SHA-256 of every file above, in the sha256sum format |
It is kept 14 days (CI.md). The run's summary repeats the checksums.
Starting one
Only from a commit on main whose Main checks run on main passed. The workflow refuses any other: a commit on another branch, one without a green run, or a tag whose version isn't package.json's. The rules are in scripts/release-candidate-lib.mjs.
By hand, for a test build of the latest
mainor one of its commits (the candidate is namedmain):gh workflow run release-candidate.yml --ref main -f commit=<sha, or main>From a tag, for a numbered candidate: the PO pushes
vX.Y.Z-rc.Non a verifiedmaincommit (or tells an agent to, for that tag). Tags are never moved; a failed candidate is followed by-rc.N+1(DEVELOPMENT_WORKFLOW.md).
What runs: the same packaging workflows as by hand, from exactly the verified commit, built from nothing: no cache is restored, so nothing an earlier run saved reaches the installers (#233), with their own checks: the Windows installer's contents, the Linux packages' contents, libraries and glibc, and their install, check and removal in Ubuntu 22.04, Ubuntu 24.04, Debian 12 and Fedora 42 containers. The tests themselves (L1 to L3) are the green Main checks run the commit needed. Every job runs only when every job it needs succeeded, which a test checks for this workflow and both packaging workflows.
Checking a download
Linux:
sha256sum --check --ignore-missing SHA256SUMSin the folder with the files.Windows:
Get-FileHash <file>in PowerShell, compared with the file's line inSHA256SUMS.Which commit:
build-info.json'scommit, and the run linked in itsrun.
Installing it beside V1
The installers are Apollo Download Manager's release identity, so they install beside V1 and never touch it (PACKAGING.md, COEXISTENCE.md). On Windows, run the installer; on Linux, sudo apt install ./<file>.deb or sudo dnf install ./<file>.rpm.
Windows SmartScreen warns, because the installer isn't signed: More info, then Run anyway.
The PO's test for #17 and #81: install the candidate on the Windows PC with V1 installed, run both, then upgrade it with a later candidate, and record the result on the issue (PACKAGING.md).
Going back to an earlier version
A newer Apollo Download Manager may have changed the format of its data, and an older one can't always read it: the download list then says the saved downloads are from a newer Apollo Download Manager. So:
Before installing a candidate, copy Apollo Download Manager's data folder:
%APPDATA%\com.velocity.downloadmanager.v2on Windows,~/.local/share/com.velocity.downloadmanager.v2on Linux. Quit Apollo Download Manager first.To go back:
Windows: uninstall Apollo Download Manager from Apps & features without ticking "Delete the application data", then run the earlier installer.
Linux:
sudo apt install --allow-downgrades ./<earlier>.deb, orsudo dnf downgrade ./<earlier>.rpm.
If the earlier version can't read the data, quit it, put the copy from step 1 back in place of the data folder, and start it again.
Downloaded files are never touched by installing, upgrading or going back.