treefmt / nix fmt (pull_request) Successful in 5s
build_systems / build-portal-1 (pull_request) Successful in 32s
pytest / pytest (pull_request) Successful in 32s
test ebook search / test-ebook-search (pull_request) Successful in 36s
build_systems / build-brain (pull_request) Successful in 54s
build_systems / build-bob (pull_request) Successful in 55s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m6s
build_systems / build-jeeves (pull_request) Successful in 1m58s
treefmt / nix fmt (push) Successful in 5s
build_systems / build-portal-1 (push) Successful in 24s
pytest / pytest (push) Successful in 32s
build_systems / build-brain (push) Successful in 37s
test ebook search / test-ebook-search (push) Successful in 35s
build_systems / build-bob (push) Successful in 41s
build_systems / build-rhapsody-in-green (push) Successful in 50s
build_systems / build-jeeves (push) Successful in 53s
Reuse a single NixOS container build for all runners while preserving unique runtime hostnames and existing Gitea registrations.
37 lines
1.2 KiB
Bash
37 lines
1.2 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
legacy_instance_dir="$STATE_DIRECTORY/$(hostname)"
|
|
instance_dir="$STATE_DIRECTORY/$1"
|
|
runner_url="$2"
|
|
runner_config_file="$3"
|
|
shift 3
|
|
runner_labels="$(IFS=,; printf '%s' "$*")"
|
|
|
|
if [ ! -e "$instance_dir" ] && [ -d "$legacy_instance_dir" ]; then
|
|
mv "$legacy_instance_dir" "$instance_dir"
|
|
fi
|
|
|
|
mkdir -vp "$instance_dir"
|
|
cd "$instance_dir" || exit 1
|
|
|
|
token_hash_file="$instance_dir/.token-hash"
|
|
token_hash_current="$(printf '%s' "$TOKEN" | sha256sum | cut -d' ' -f1)"
|
|
token_hash_stored="$(cat "$token_hash_file" 2>/dev/null || echo "")"
|
|
labels_file="$instance_dir/.labels"
|
|
labels_wanted="$(printf '%s\n' "$@" | sort)"
|
|
labels_current="$(cat "$labels_file" 2>/dev/null || echo 0)"
|
|
|
|
if [ ! -e "$instance_dir/.runner" ] || [ "$labels_wanted" != "$labels_current" ] || [ "$token_hash_current" != "$token_hash_stored" ]; then
|
|
rm -v "$instance_dir/.runner" || true
|
|
|
|
gitea-runner register --no-interactive \
|
|
--instance "$runner_url" \
|
|
--token "$TOKEN" \
|
|
--name "jeeves-$(hostname)" \
|
|
--labels "$runner_labels" \
|
|
--config "$runner_config_file"
|
|
|
|
printf '%s' "$token_hash_current" > "$token_hash_file"
|
|
printf '%s\n' "$labels_wanted" > "$labels_file"
|
|
fi
|