INSTALL.md follows a clean run from day 0 to a deployed machine. Release assets now include rollcall-<tag>-linux-<arch>.tar.gz (binary, deploy/, agent/). deploy/publish-image.sh uploads a region's commissioning image to a release (commissioning-*); bootstrap.sh downloads either layout, with IMAGE_TOKEN for private repositories. bootstrap: --ssh-key (default: the operator's keys), keeps server_url on reruns without --iface. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
23 lines
1.5 KiB
Bash
Executable File
23 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
# Publish this region's commissioning image as assets of a Gitea release, so new
|
|
# installations download it (bootstrap.sh --image-url .../releases/download/TAG).
|
|
# GITEA_TOKEN=... ./publish-image.sh v0.2.0 [https://gitea.example/api/v1/repos/OWNER/REPO]
|
|
# Files are uploaded as commissioning-{vmlinuz,initrd.img,filesystem.squashfs,SHA256SUMS}.
|
|
set -eu
|
|
TAG=${1:?usage: publish-image.sh TAG [API]}
|
|
API=${2:-https://gitea.mynodes.xyz/api/v1/repos/ilker/rollcall}
|
|
IMG=${IMG:-/srv/rollcall/image}
|
|
: "${GITEA_TOKEN:?set GITEA_TOKEN (write:repository)}"
|
|
cd "$IMG"
|
|
sha256sum vmlinuz initrd.img filesystem.squashfs > SHA256SUMS
|
|
id=$(curl -fsS -H "Authorization: token $GITEA_TOKEN" "$API/releases/tags/$TAG" | python3 -c 'import json,sys;print(json.load(sys.stdin)["id"])')
|
|
existing=$(curl -fsS -H "Authorization: token $GITEA_TOKEN" "$API/releases/$id/assets" | python3 -c 'import json,sys;[print(a["id"],a["name"]) for a in json.load(sys.stdin)]')
|
|
for f in vmlinuz initrd.img filesystem.squashfs SHA256SUMS; do
|
|
name=commissioning-$f
|
|
old=$(echo "$existing" | awk -v n="$name" '$2==n{print $1}')
|
|
[ -n "$old" ] && curl -fsS -X DELETE -H "Authorization: token $GITEA_TOKEN" "$API/releases/$id/assets/$old" >/dev/null
|
|
echo "uploading $name ($(du -h "$f" | cut -f1))"
|
|
curl -fsS -H "Authorization: token $GITEA_TOKEN" -F "attachment=@$f" "$API/releases/$id/assets?name=$name" >/dev/null
|
|
done
|
|
echo "done: bootstrap.sh --image-url ${API%/api/v1/repos/*}/$(echo "$API" | sed 's#.*/repos/##')/releases/download/$TAG"
|