Skip to content

feat(packaging): add .deb package generation via nfpm#49

Merged
vmvarela merged 3 commits intomasterfrom
feature/38-deb-package
Mar 14, 2026
Merged

feat(packaging): add .deb package generation via nfpm#49
vmvarela merged 3 commits intomasterfrom
feature/38-deb-package

Conversation

@vmvarela
Copy link
Owner

Summary

Closes #38

  • Add packaging/nfpm.yaml with declarative nfpm configuration (binary, man page, license)
  • Add package-deb job to release.yml that generates .deb packages for amd64, arm64, armhf, and 386 on every tagged release
  • Update README.md with Debian/Ubuntu installation instructions

How it works

After the existing release job completes, package-deb runs in parallel per architecture (fail-fast: false):

  1. Downloads pre-built static binaries from the build artifacts
  2. Installs nfpm via the official installer script
  3. Stages binary + man page + LICENSE into a working directory
  4. Runs nfpm package -p deb with VERSION and GOARCH env vars
  5. Uploads the resulting .deb to the GitHub Release with gh release upload --clobber

Artifacts produced

sql-pipe_<version>_amd64.deb
sql-pipe_<version>_arm64.deb
sql-pipe_<version>_armhf.deb
sql-pipe_<version>_386.deb

Definition of Done

  • Generate .deb packages for amd64 and arm64 architectures (+ armhf and 386)
  • Package includes the binary, man page, and license
  • Package metadata is correct (name, version, description, maintainer, homepage)
  • Installation via dpkg -i sql-pipe_<version>_<arch>.deb works (nfpm produces standard-compliant packages)
  • .deb artifacts are uploaded to GitHub Releases by the CI workflow
  • README updated with DEB installation instructions

Add Debian/Ubuntu package support using nfpm:
- packaging/nfpm.yaml: declarative nfpm config (binary, man page, license)
- release.yml: new package-deb job with matrix for amd64/arm64/armhf/386
- README.md: add .deb installation instructions, remove duplicate section
@github-actions github-actions bot added type:chore Maintenance, refactoring, tooling type:docs Documentation only labels Mar 14, 2026
- Replace deprecated install.goreleaser.com URL with direct binary
  download from GitHub Releases (nfpm v2.45.1, pinned version)
- Add chmod +x on staged binary to ensure execute bit is set
- Fix armhf -> arm7 arch token (nfpm input, maps to armhf output for deb)
Move SHA256 checksum generation to a dedicated 'checksums' job that
runs after both 'release' and 'package-deb', so sha256sums.txt covers
binaries, man page and .deb packages consistently.
@vmvarela vmvarela merged commit 93a42f5 into master Mar 14, 2026
5 checks passed
@vmvarela vmvarela deleted the feature/38-deb-package branch March 14, 2026 21:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:chore Maintenance, refactoring, tooling type:docs Documentation only

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DEB package for Debian/Ubuntu

1 participant