Files
smartpark-app/ci/setup_runner.sh
T
vincentpenalosa efe92994f6
Build SmartPark manual / manual (push) Successful in 51s
Prepare automated manual build and Chapter 3 draft
2026-10-09 21:01:49 -04:00

47 lines
2.7 KiB
Bash

#!/usr/bin/env bash
# Run as your normal Ubuntu user, not as root. Uses sudo for installation.
set -euo pipefail
[[ $(uname -m) == x86_64 ]] || { echo 'This installer targets x86_64 only'; exit 1; }
base=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
[[ ! -e /etc/smartpark-runner/config.yaml ]] || { echo 'Runner already configured; inspect it rather than overwrite.'; exit 1; }
sudo apt-get update
sudo apt-get install --no-install-recommends curl ca-certificates xz-utils
downloads=$(mktemp -d)
cd "$downloads"
# Resolve the current Node 22 release from its official checksum list, then
# install and record that exact release. No downloaded install script is run.
curl -fSLO https://nodejs.org/dist/latest-v22.x/SHASUMS256.txt
node_archive=$(awk '$2 ~ /^node-v22\.[0-9]+\.[0-9]+-linux-x64\.tar\.xz$/ {print $2}' SHASUMS256.txt)
[[ -n "$node_archive" && "$node_archive" != *$'\n'* ]]
node_version=${node_archive#node-}
node_version=${node_version%-linux-x64.tar.xz}
curl -fSLO "https://nodejs.org/dist/$node_version/$node_archive"
awk -v f="$node_archive" '$2 == f' SHASUMS256.txt | sha256sum -c -
tar -xf "$node_archive"
[[ ! -e /opt/smartpark-node ]] || { echo '/opt/smartpark-node exists; inspect before continuing'; exit 1; }
sudo mv "${node_archive%.tar.xz}" /opt/smartpark-node
sudo chown -R root:root /opt/smartpark-node
runner_version=2.3.0
runner_file="gitea-runner-$runner_version-linux-amd64"
curl -fSLO "https://dl.gitea.com/gitea-runner/$runner_version/$runner_file"
curl -fSLO "https://dl.gitea.com/gitea-runner/$runner_version/$runner_file.sha256"
sha256sum -c "$runner_file.sha256"
sudo install -m 0755 "$runner_file" /usr/local/bin/gitea-runner
if id smartpark-runner >/dev/null 2>&1; then
echo 'smartpark-runner account already exists; inspect its permissions before continuing.'
exit 1
fi
sudo useradd --system --create-home --home-dir /var/lib/smartpark-runner --shell /usr/sbin/nologin smartpark-runner
sudo chmod 700 /var/lib/smartpark-runner
sudo install -d -o smartpark-runner -g smartpark-runner -m 700 /var/lib/smartpark-runner/work
sudo install -d -o root -g smartpark-runner -m 750 /etc/smartpark-runner
sudo install -o root -g smartpark-runner -m 640 "$base/runner-config.yaml" /etc/smartpark-runner/config.yaml
sudo install -m 644 "$base/smartpark-runner.service" /etc/systemd/system/smartpark-runner.service
sudo systemctl daemon-reload
sudo -u smartpark-runner /opt/smartpark-node/bin/node --version
sudo -u smartpark-runner /usr/local/bin/gitea-runner --version
sudo -u smartpark-runner latexmk -v
echo 'Installed, but NOT registered or started. Registration requires an authorized token.'
echo "Verified downloads remain in $downloads; remove those files later using the Files app if desired."