Files
static-musl-builds/README.md
T

52 lines
1.6 KiB
Markdown
Raw Permalink Normal View History

# static-musl-builds
Automated static `musl` builds for portable Linux binaries.
Current target:
- `iperf3` (x86_64 / amd64)
## What this repo does
- Tracks a pinned upstream version in `versions/`
- Builds a fully static `musl` binary with Gitea Actions
- Publishes versioned release assets to Gitea Releases
- Is designed to grow with more binaries later
## Current output
For each `iperf3` release build, the workflow publishes:
- `iperf3-<version>-linux-amd64-musl-static`
- `iperf3-<version>-linux-amd64-musl-static.tar.gz`
- `iperf3-<version>-linux-amd64-musl-static.sha256`
## Repo layout
- `versions/iperf3.version` — tracked upstream version
- `scripts/build_iperf3.sh` — static build script
- `scripts/sync_iperf3_version.py` — checks upstream and updates pinned version
- `scripts/publish_release.py` — idempotent release asset publisher for Gitea
- `.gitea/workflows/iperf3.yml` — CI pipeline
## How updates happen
1. `scripts/sync_iperf3_version.py` checks the latest upstream iperf3 release.
2. If a newer version exists, it updates `versions/iperf3.version`.
3. A commit is pushed.
4. Gitea Actions builds the static binary and uploads release assets.
## Manual local update example
```bash
python3 scripts/sync_iperf3_version.py --update-file
if ! git diff --quiet -- versions/iperf3.version; then
git add versions/iperf3.version
git commit -m "chore(iperf3): bump to $(cat versions/iperf3.version)"
git push
fi
```
## Notes
- The current workflow targets `amd64` first because that is the most broadly useful Linux target.
- The structure is intentionally generic so more binaries can be added later without reworking the repo.