Skip to content
This repository was archived by the owner on Feb 6, 2026. It is now read-only.

feat: Linux distribution via APT, RPM, and Snap#96

Merged
rianjs merged 5 commits intomainfrom
feat/linux-distribution
Jan 23, 2026
Merged

feat: Linux distribution via APT, RPM, and Snap#96
rianjs merged 5 commits intomainfrom
feat/linux-distribution

Conversation

@rianjs
Copy link
Collaborator

@rianjs rianjs commented Jan 22, 2026

Summary

Add Linux distribution support via APT (.deb), RPM (.rpm), and Snap packages.

  • nfpms config: Generate .deb and .rpm packages via GoReleaser for direct download
  • Snap support: snapcraft.yaml with strict confinement for Snapcraft Store publishing
  • Release workflow: Add jobs to publish Snap and trigger linux-packages repo

What's included

Commit Description
nfpms config Adds .deb and .rpm generation to GoReleaser
snapcraft.yaml Snap package definition with strict confinement
release workflow Snap publishing + linux-packages dispatch

What's NOT included (separate work)

The open-cli-collective/linux-packages repo needs to be created separately. It will:

  • Host self-hosted APT and RPM repositories
  • Provide apt install cfl and dnf install cfl for users
  • Be triggered by the repository_dispatch event added in this PR

Prerequisites before merging

These secrets need to be configured:

Secret Purpose Status
SNAPCRAFT_STORE_CREDENTIALS Publish to Snapcraft Store Needs setup
LINUX_PACKAGES_DISPATCH_TOKEN Trigger linux-packages repo Needs setup

Snap setup steps:

  1. Create Snapcraft account at snapcraft.io
  2. Register cfl snap name
  3. Run snapcraft export-login --snaps=cfl --acls=package_upload exported.txt
  4. Add contents as SNAPCRAFT_STORE_CREDENTIALS secret

Test plan

  • Verify .goreleaser.yml syntax with goreleaser check
  • Verify snapcraft.yaml syntax with snapcraft lint
  • Create linux-packages repo before first release
  • Configure secrets before first release

Closes #95

🤖 Generated with Claude Code

rianjs and others added 5 commits January 22, 2026 08:53
Configure GoReleaser to generate Linux packages for direct download.
Users can install via:

  # Debian/Ubuntu
  sudo dpkg -i cfl_<version>_linux_amd64.deb

  # Fedora/RHEL
  sudo rpm -i cfl-<version>.x86_64.rpm

Part of #95

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add snapcraft.yaml for publishing to the Snapcraft Store.

Configuration:
- Strict confinement (no classic approval needed)
- Interfaces: home, network, personal-files (~/.config/cfl)
- Builds from source with Go 1.24
- Architectures: amd64, arm64

Users will install via:
  snap install cfl

Prerequisites for publishing:
- Snapcraft Store account
- Register 'cfl' snap name
- Add SNAPCRAFT_STORE_CREDENTIALS secret

Part of #95

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add two new jobs to the release workflow:

1. snap: Builds and publishes to Snapcraft Store
   - Requires SNAPCRAFT_STORE_CREDENTIALS secret

2. linux-packages: Triggers the org-level linux-packages repo
   - Dispatches package-release event with version info
   - Requires LINUX_PACKAGES_DISPATCH_TOKEN secret
   - linux-packages repo will update APT/RPM repositories

Both jobs run in parallel after goreleaser completes.

Part of #95

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The 'cfl' snap name was already taken on the Snapcraft Store.
Registered as 'ocli-confluence' instead.

Users install with: snap install ocli-confluence
Command is still 'cfl' via alias.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Group installation methods by macOS, Windows, Linux
- Add Snap, APT, and RPM instructions for Linux
- Note that Homebrew tap and APT/RPM repos are third-party (not official)
- Add direct .deb/.rpm download examples
- Move "Go install" to "From Source" section

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@rianjs rianjs merged commit 013b0d1 into main Jan 23, 2026
3 checks passed
@rianjs rianjs deleted the feat/linux-distribution branch January 23, 2026 11:59
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Linux distribution via APT, RPM, and Snap

1 participant