diff --git a/install/runner-install.sh b/install/runner-install.sh index a326549..80751d9 100644 --- a/install/runner-install.sh +++ b/install/runner-install.sh @@ -63,8 +63,34 @@ valid_token_word "$RUNNER_LABELS" || { msg_err "RUNNER_LABELS enthält unzuläss # der unprivilegierte User darf dort nicht schreiben. run_user() { runuser -u "$APP_USER" -- env -C "$RUNNER_DIR" HOME="$APP_HOME" "$@"; } -# ── Pakete: git/rsync, Node (checkout-Action), Docker (Test-Container) ──────── -setup_base_apt git rsync ca-certificates curl +# ── Pakete: git/rsync, Node (checkout-Action), Docker (Test-Container), +# Build-Werkzeuge (Compiler-Sprachen in CI) ───────────────────────────────── +# +# make/gcc/protobuf: Der Runner faehrt Host-Mode, also gibt es kein Image, das +# Werkzeuge mitbringt — was hier nicht liegt, hat kein Job. Konkret gemessen an +# l.kirchner/patchmgr (Go): +# make "make: command not found" in jedem Gate-Job +# gcc ohne gefundenen C-Compiler bleibt cgo aus (go env +# meldet dann CGO_ENABLED=0), und "go test -race" ist +# nicht baubar +# protobuf-compiler protoc fuer die Codegenerierung +# libprotobuf-dev liefert /usr/include/google/protobuf/*.proto; ohne die +# Includes scheitert protoc trotz vorhandenem Binary +# +# ACHTUNG protoc: Das bindet jedes Repo der Instanz an die protoc-Fassung der +# Distribution (Debian 12: 3.21.x). Anders als make/gcc ist protoc ein +# Codegenerator — ein Distro-Upgrade aendert erzeugten Code fuer alle Nutzer +# gleichzeitig. Wer eine eigene Fassung braucht, pinnt sie im Projekt +# (Release-Tarball, buf, oder Docker — der Runner hat Docker) statt sie hier +# zu heben. +# +# Bewusst NICHT installiert: sudo. Ein Workflow soll auf diesem Runner nichts +# nachinstallieren koennen — was gebraucht wird, steht hier. +# +# Go selbst gehoert nicht hierher: Projekte holen es ueber actions/setup-go, +# weil CI-Matrizen mehrere Fassungen fahren. +setup_base_apt git rsync ca-certificates curl \ + make gcc protobuf-compiler libprotobuf-dev NODE_HAVE="$(command -v node >/dev/null 2>&1 && node -v | sed -E 's/^v([0-9]+).*/\1/' || echo 0)" if [[ "$NODE_HAVE" != "$NODE_MAJOR" ]]; then