the project needs a proper release pipeline for the cli and tui #67
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
This project should have a release workflow modeled after the released workflow of the project IronStorage (hosted on the same gitea server and available in ../IronStorage on the dev machine). The targets are the same as in that project, so linux and darwin in both arm64 and x64 architecture and windows. It should trigger on new tags and create a proper releas with downloadable files.
The iPhone app is not handled in this workflow, as that requires more steps and is always run on the dev machine. This is mainly for distribution of the cli and tui components, as they are cross-plattform and can be built on the gitea runner.
The project RuDS (hosted on the same gitea instance and available in ../RuDS on the machine) also has a writeup RELEASEBUILD.md that gives hints on things that can go wrong, for example for gui builds and cross-compiling, as our gitea runner is running on arm64 but has to create packages for different operating systems and architectures. the spread is similar here, so we should learn from that document and follow its guidance.
Keep in mind we don't have a desktop app here, so that part can be ignored. We only handle the cli and tui distribution, but might still run into issues with the linux x64 distributables.
Implemented in
bac15ab.gotchaandgotcha-tuifor Darwin arm64/x64, Linux arm64/x64 (glibc 2.28 baseline), and Windows x64 from the ARM64 runner using digest-pinnedcargo-zigbuildandcargo-xwincontainers.--locked, verifies Mach-O/ELF/PE magic and non-empty binaries, and packages both executables under one top-level directory per target.Verification:
cargo build --release --locked --package gotcha-cli --package gotcha-tuisucceeded.cargo fmt --all -- --checkRUSTFLAGS="-D warnings" cargo check --workspace --all-targetscargo clippy --workspace --all-targets -- -D warningscargo test --workspace(all tests passed)No release tag was created as part of issue verification, so this implementation did not publish an unrequested product release.