Packaging & Release Pipeline
BarePDF automates Windows binary packaging, installer compilation, portable ZIP creation, and SHA256 checksum manifest generation using PowerShell scripts in packaging/windows/scripts/.
Automated Packaging Pipeline
The release pipeline executes in the following sequence:
- Version Validation:
validate-version.ps1verifies the root Cargo product version, inherited workspace package versions, Conventional Commit bump, Inno Setup configuration, and release tag when present. - Staging Executable & Dependencies:
stage-release.ps1builds the release executable (cargo build --release) and copiesBarePDF.exe, PDFium DLLs, licenses, and assets intotarget/release/staged/. - Building Portable Package:
build-portable.ps1compresses staged files intotarget/release/portable/BarePDF-Portable-x64-v<version>.zip. - Compiling Windows Installer:
build-installer.ps1compilespackaging/windows/installer/BarePDF.issvia Inno Setup (ISCC.exe) intotarget/release/installer/BarePDF-Setup-x64-v<version>.exe. - Validating Installer & Registry Config:
validate-installer.ps1verifies the generated setup executable and registry key entries. - Generating Checksums:
generate-checksums.ps1hashes the versioned installer and portable package, then copies one canonical versioned copy of each intotarget/release/artifacts/. It writes one versioned checksum manifest pluslatest.jsonin the same directory.
Linux Packaging (.deb & AppImage)
BarePDF produces Debian packages (.deb) for Pardus 23/25, Debian, and Ubuntu, along with universal portable AppImage binaries.
Debian / Pardus Package (cargo deb)
Metadata is configured under [package.metadata.deb] in apps/barepdf/Cargo.toml.
- Generation:
cargo deb --package barepdf - Structure:
- Binary:
/usr/bin/barepdf - PDFium engine:
/usr/lib/barepdf/libpdfium.so - Desktop entry:
/usr/share/applications/barepdf.desktop - App icon:
/usr/share/icons/hicolor/scalable/apps/barepdf.svg
- Binary:
- Dependencies: Automatically resolved via
$auto, requiringlibxkbcommon0,libfontconfig1,libgbm1, andxdg-utils.
Standalone AppImage (appimagetool)
An AppDir staging directory packages the binary, bundled libpdfium.so, desktop entry, icons, and AppRun launcher:
./appimagetool AppDir BarePDF-<version>-x86_64.AppImage
The resulting AppImage runs portably on any x86_64 Linux system without requiring administrator privileges or system library installations.
GitHub Actions Release Workflow
The .github/workflows/release.yml workflow starts automatically after a successful CI push run on main, or through a manual dispatch. The Ed25519 manifest signing key must match the public key pinned in the repository before release discovery begins; a missing or mismatched key fails closed.
Discovery validates every first-parent commit since the latest stable tag, selects the newest unreleased product version, and tags the exact main snapshot whose CI run triggered publication. Superseded intermediate versions are intentionally skipped instead of shipping obsolete binaries. An existing matching release is accepted idempotently; conflicting or incomplete releases fail. After publication, that stable version becomes GitHub’s latest release and the Pages workflow is explicitly dispatched.
Public documentation links to the website download page. Its build reads the latest GitHub Release and exposes exactly one canonical versioned installer, portable package, and checksum manifest.