5d29bdc4bd
ci / quality (push) Failing after 6s
- cargo fmt across the workspace (the CI gate the last push tripped). - varde-daemon: drop the now-unused bytes dependency. - varde-ctl(1): document push; gc reflects the continuous-sweep reality; subscribe mentions push events. - config.toml example: gc_interval_secs, and an honest note that max_download_bytes_per_sec is currently unenforced. - LICENSE-MIT + LICENSE-APACHE at the root (the declared license now ships as files), bundled into release tarballs and installed by the PKGBUILD. - PKGBUILD: real maintainer, AUR pre-flight note (updpkgsums), license installation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
82 lines
3.2 KiB
YAML
82 lines
3.2 KiB
YAML
# Release pipeline: a `vX.Y.Z` tag (pushed by `cargo release`, see
|
|
# release.toml) builds distribution tarballs and attaches them to a
|
|
# Gitea release.
|
|
#
|
|
# Each tarball contains the two binaries (stripped, release profile),
|
|
# the systemd units, the example config, rendered man pages, and the
|
|
# license/readme — everything a distro package or a hand install needs.
|
|
name: release
|
|
|
|
on:
|
|
push:
|
|
tags: ["v*"]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
container: rust:1
|
|
strategy:
|
|
matrix:
|
|
target: [x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: install tooling
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y --no-install-recommends scdoc jq
|
|
if [ "${{ matrix.target }}" = "aarch64-unknown-linux-gnu" ]; then
|
|
apt-get install -y --no-install-recommends gcc-aarch64-linux-gnu
|
|
fi
|
|
rustup target add ${{ matrix.target }}
|
|
|
|
- name: build
|
|
env:
|
|
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
|
|
run: |
|
|
cargo build --workspace --release --target ${{ matrix.target }}
|
|
|
|
- name: package
|
|
run: |
|
|
VERSION="${GITHUB_REF_NAME#v}"
|
|
PKG="varde-${VERSION}-${{ matrix.target }}"
|
|
mkdir -p "$PKG"/{bin,systemd/user,man}
|
|
cp "target/${{ matrix.target }}/release/varde-daemon" \
|
|
"target/${{ matrix.target }}/release/varde-ctl" "$PKG/bin/"
|
|
# Cross-strip is unavailable for the foreign target; native
|
|
# strip handles the host one.
|
|
if [ "${{ matrix.target }}" = "x86_64-unknown-linux-gnu" ]; then
|
|
strip "$PKG"/bin/*
|
|
else
|
|
aarch64-linux-gnu-strip "$PKG"/bin/*
|
|
fi
|
|
cp dist/varde.service dist/varde.socket "$PKG/systemd/"
|
|
cp dist/user/varde.service dist/user/varde.socket "$PKG/systemd/user/"
|
|
cp dist/config.toml "$PKG/config.toml.example"
|
|
scdoc < dist/varde.8.scd > "$PKG/man/varde.8"
|
|
scdoc < dist/varde-ctl.1.scd > "$PKG/man/varde-ctl.1"
|
|
cp README.md SPECS.md LICENSE-MIT LICENSE-APACHE "$PKG/"
|
|
tar czf "$PKG.tar.gz" "$PKG"
|
|
sha256sum "$PKG.tar.gz" > "$PKG.tar.gz.sha256"
|
|
|
|
- name: create release and upload
|
|
env:
|
|
TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
API="${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}"
|
|
# Create the release if this matrix job is first; 409 = the
|
|
# other job already made it.
|
|
curl -sf -X POST "$API/releases" \
|
|
-H "Authorization: token $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"tag_name\": \"${GITHUB_REF_NAME}\", \"name\": \"${GITHUB_REF_NAME}\", \"draft\": false}" \
|
|
|| true
|
|
RELEASE_ID=$(curl -sf "$API/releases/tags/${GITHUB_REF_NAME}" \
|
|
-H "Authorization: token $TOKEN" | jq .id)
|
|
for f in varde-*.tar.gz varde-*.tar.gz.sha256; do
|
|
curl -sf -X POST \
|
|
"$API/releases/${RELEASE_ID}/assets?name=$(basename "$f")" \
|
|
-H "Authorization: token $TOKEN" \
|
|
-F "attachment=@$f"
|
|
done
|