52 lines
1.6 KiB
Markdown
52 lines
1.6 KiB
Markdown
# 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.
|