2.1 KiB
2.1 KiB
Release Packaging
This document describes the manual release flow for sshkeeper.
Create a Tag
Use a semantic version tag:
git status --short
git tag -a v0.2.0 -m "sshkeeper v0.2.0"
git push origin v0.2.0
The release script uses git describe --tags --always --dirty by default. You
can also pass the version explicitly:
./release.sh v0.2.0
or:
VERSION=v0.2.0 ./release.sh
For reproducible archives, the script uses SOURCE_DATE_EPOCH. By default it
uses the timestamp of the latest git commit. To force a specific timestamp:
SOURCE_DATE_EPOCH=1760000000 ./release.sh v0.2.0
Run Release Checks
Before packaging, run:
make release-check
This runs:
go test ./...go vet ./...- native
go build linux/amd64cross-build withCGO_ENABLED=0linux/arm64cross-build withCGO_ENABLED=0darwin/amd64cross-build withCGO_ENABLED=0darwin/arm64cross-build withCGO_ENABLED=0windows/amd64cross-build withCGO_ENABLED=0
Build Artifacts
Run:
./release.sh v0.2.0
Expected files in dist/:
sshkeeper_v0.2.0_linux_amd64.tar.gz
sshkeeper_v0.2.0_linux_arm64.tar.gz
sshkeeper_v0.2.0_darwin_amd64.tar.gz
sshkeeper_v0.2.0_darwin_arm64.tar.gz
sshkeeper_v0.2.0_windows_amd64.zip
checksums.txt
Each archive contains:
sshkeeperorsshkeeper.exeREADME.mdLICENSEdocs/guide.md
Verify Checksums
From the dist/ directory:
sha256sum -c checksums.txt
Expected result: every archive reports OK.
Publish in GitHub Release
Upload these files to the release:
- all five platform archives
checksums.txt
Release notes should mention platform status:
- Linux and macOS are primary release targets.
- macOS builds are available as tar.gz for amd64 and arm64 and require the
system
sshclient. - Windows build is experimental and requires OpenSSH Client available as
ssh.exeinPATH.
Packaging TODO
Prepare these package channels after the first archive-based release:
- deb package
- Arch PKGBUILD / AUR
- rpm later
- Homebrew tap
- Scoop manifest
- Winget later