Packaging & Releases
Relevant source files
The following files were used as context for generating this wiki page:
Packaging and releases for Linux Archductor focus on providing native Linux artifacts through multiple distribution channels, including .deb, .rpm, AppImage, AUR, and Flatpak. The release process is governed by a strict readiness gate that ensures both code quality and workflow stability before public distribution.
The project prioritizes Linux-first quality, using a tag-driven CI workflow to build and attach artifacts to GitHub releases while maintaining scripts for local artifact generation and validation.
Sources: packaging/README.md:3-12, README.md:386-393, progress.md:383-392
Release Readiness Workflow
Release readiness is automated through a dedicated script that serves as a quality gate. This process ensures that the codebase adheres to formatting standards, passes all tests, and builds successfully before any package artifacts are generated.
Local Readiness Gate
The scripts/release-readiness.sh script performs the following validation steps:
- Format Check: Runs
cargo fmtto ensure code style compliance. - Linting: Executes
cargo clippyto catch common mistakes and enforce best practices. - Testing: Runs the full workspace test suite via
cargo test. - Release Build: Compiles the binaries in release mode (
--release). - Doctor Check: Runs the internal
doctorcommand to verify environment dependencies. - Dependency Policy: Executes
cargo deny(if installed) to check license and security policies.
Sources: scripts/release-readiness.sh:42-70, progress.md:447-452
Readiness Diagram
The following flowchart illustrates the logical flow of the release-readiness script:
This diagram represents the sequential checks required to satisfy the release gate.
Sources: scripts/release-readiness.sh:42-120
Supported Distribution Formats
The project uses nfpm for generating native system packages and appimagetool for portable Linux binaries.
Native Packages (.deb and .rpm)
The configuration for native packages is defined in nfpm.yaml. This file specifies metadata, file mappings, and platform-specific dependencies.
| Feature | Details |
|---|---|
| Package Name | linux-archductor |
| Architecture | amd64 |
| Binaries | linux-archductor, linux-archductor-gtk |
| Desktop Entry | packaging/linux-archductor-gtk.desktop |
| Icon | packaging/linux-archductor.svg |
| Deb Dependencies | git, gh, sqlite3, openssh-client, libgtk-4-1, libadwaita-1-0 |
| RPM Dependencies | git, gh, sqlite, openssh-clients, gtk4, libadwaita |
Sources: nfpm.yaml:1-40, packaging/README.md:46-56
AppImage
AppImage builds provide a self-contained execution environment. The resulting artifact defaults to launching the GTK GUI but can pass arguments through to the CLI (e.g., ./linux-archductor.AppImage doctor).
Sources: packaging/README.md:58-86, README.md:144-155
Flatpak (Experimental)
Flatpak support is experimental due to the sandbox requirements. Because the application manages arbitrary Git repositories, the Flatpak sandbox must be configured with --filesystem=host access. The build utilizes the GNOME 47 SDK and the Rust stable SDK extension.
Sources: packaging/README.md:92-108, packaging/flatpak/io.github.pranavkannepalli.linux-archductor.appdata.xml:1-49
CI/CD Release Process
The project employs a tag-driven release strategy using GitHub Actions.
Automation Sequence
When a version tag (e.g., v0.1.0) is pushed to the repository, the CI workflow is triggered to perform the following:
- Initialize
ubuntu-24.04hosted runners. - Build the Rust workspace in release mode.
- Generate a tarball,
.deb,.rpm, and AppImage. - Attach all generated artifacts to a new GitHub release.
- Generate and publish SHA256 checksums for all artifacts.
Sources: packaging/README.md:112-126, scripts/release-readiness.sh:111-125
Release Flow Diagram
The following sequence diagram shows the transition from code tag to distributed release:
Release Package Metadata
The AppStream metadata (used for Flatpak and software centers) defines the user-facing description and features of the release.
| Metadata Field | Value |
|---|---|
| App ID | io.github.pranavkannepalli.linux-archductor |
| License | MIT |
| Summary | Linux-native parallel coding-agent workflow tool |
| Category | Development |
| Keywords | git, worktree, codex, claude, agents, workflow |
Sources: packaging/flatpak/io.github.pranavkannepalli.linux-archductor.appdata.xml:1-45
Conclusion
Packaging and releases for Linux Archductor are designed for reliability and multi-distro compatibility. By enforcing a strict readiness gate through scripts/release-readiness.sh and utilizing standardized packaging tools like nfpm and appimagetool, the project ensures that every public release meets quality standards. The tag-driven CI pipeline further ensures that users receive verified, checksummed artifacts for their preferred Linux distribution channel.