chore(packaging): package tpagectl for distribution #620
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
thwap/thwap-pagesd!620
Loading…
Reference in a new issue
No description provided.
Delete branch "chore/tpagectl-packaging"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Implements Phase 9 packaging for distribution (roadmap #302).
cmd/tpagectl/Dockerfile(multi-stage, staticCGO_ENABLED=0build onalpine), and the CIdockerjob now builds/pushes thegit.lan.thwap.org/thwap/tpagectlimage viathwap-actions/docker-build(linux/amd64+arm64) alongside the existing daemon image..deb(#301) — newpackaging/deb/nfpm.yaml; the release workflow installsnfpm, buildstpagectl_<ver>_amd64.deb+_arm64.debfrom the linux binaries, and uploads them to the release.packaging/homebrew/tpagectl.rb(darwin arm64/amd64 formula); the releasefinalizestep now also publishes atarballs.sha256asset so the formula'ssha256values are fillable per release.packaging/snap/snapcraft.yaml(core22, go plugin); build/publish requires snapcraft + a Snapcraft account and is documented as outside CI.cmd/tpagectl/README.md.Why
Roadmap task #302.
Testing
nfpm.yaml/snapcraft.yamlparse; pre-commit "Validate Forgejo Actions files" and "check yaml" passruby -ccleanpy_compileclean.debbuild simulated locally — amd64+arm64 packages with correctPackage/Version/Architecture/Description(verified viadpkg-deb -I)tarballs.sha256checksum logic simulated against fake dist dirsgo test ./...passes (30 packages); no Go changesBreaking Changes
None.
ci.yml/release.ymladditions are additive.Notes
Only the Docker image uses a
thwap-actionsaction (as requested); Homebrew/Snap are committed manifests and the.debis built in-repo via nfpm.Closes #298
Closes #299
Closes #300
Closes #301
Closes #302
Solid packaging pass. Naming is consistent end-to-end (the
.debstep'scpfromcmd/tpagectl/dist/tpagectl_${TAG}_linux_amd64confirmsgolang-releasenames artifacts<bin>_<tag>_<os>_<arch>, which matches both nfpm'scontents.srcand the Homebrew tarball URLs), the Dockerfile is a clean static multi-stage build, and the.debpath fails loudly rather than silently. Approving; one snap manifest defect filed.Suggestions
packaging/snap/snapcraft.yaml– Strict confinement with no declared plugs means the snap cannot use the network;tpagectlis a pure HTTP client, so the built snap would be non-functional. Declareplugs: [network, home](plusdbusfor Secret Service keychain use). Filed as #621.Notes
nfpmis installed unpinned (@latest) and version/arch are substituted viasedplaceholders rather than nfpm's native{{.Version}}/{{.Arch}}templating — fine forvX.Y.Ztags, fragile for tags containing regex-special characters.tpagectl versionreportsdev/none/unknownin the container; running a client CLI as a container is an unusual design worth confirming.dockerjob (un-gated on Go changes) now builds two multi-arch images on every push.@mainrefs) also applies to the newdocker-buildusages.Praise
CGO_ENABLED=0, vendored build, and a non-root user;ca-certificatesincluded.tarballs.sha256to fill them..debbuild is fail-fast (missing source binary aborts the job), unlike the silent-skip risk tracked in #619.