fix(orchestrator): use labeled break to correctly exit for/select on context cancel (SA4011)
Add tools.go to pin staticcheck as a module dependency so CI installs it from the module cache instead of re-downloading on every run.
This commit is contained in:
@@ -247,10 +247,11 @@ func (o *Orchestrator) Run(ctx context.Context) error {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
var bookWG sync.WaitGroup
|
var bookWG sync.WaitGroup
|
||||||
|
bookLoop:
|
||||||
for entry := range entries {
|
for entry := range entries {
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
break
|
break bookLoop
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
76
scripts/setup_runner.sh
Executable file
76
scripts/setup_runner.sh
Executable file
@@ -0,0 +1,76 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# ── usage ─────────────────────────────────────────────────────────────────────
|
||||||
|
usage() {
|
||||||
|
echo "Usage: $0 <runner-name>"
|
||||||
|
echo " runner-name: runner-node-1 | runner-node-2 | runner-node-3"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
[[ $# -ne 1 ]] && usage
|
||||||
|
|
||||||
|
RUNNER_NAME="$1"
|
||||||
|
|
||||||
|
# validate
|
||||||
|
case "$RUNNER_NAME" in
|
||||||
|
runner-node-1|runner-node-2|runner-node-3) ;;
|
||||||
|
*) echo "ERROR: unknown runner name '$RUNNER_NAME'"; usage ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# ── config ────────────────────────────────────────────────────────────────────
|
||||||
|
CACHE_PORT=8088
|
||||||
|
GITEA_URL="https://gitea.kalekber.cc/"
|
||||||
|
REGISTRATION_TOKEN="AboxpDKWx7gizwJ9xeheHVqKjj9J9N9BgyX96wvu"
|
||||||
|
IMAGE="docker.io/gitea/act_runner:latest"
|
||||||
|
DATA_DIR="$PWD/data/$RUNNER_NAME"
|
||||||
|
CFG_PATH="$DATA_DIR/config.yaml"
|
||||||
|
|
||||||
|
# ── detect THIS machine's LAN IP ──────────────────────────────────────────────
|
||||||
|
HOST_IP=$(ip route get 1.1.1.1 | awk '{for(i=1;i<=NF;i++) if($i=="src") print $(i+1); exit}')
|
||||||
|
if [[ -z "$HOST_IP" ]]; then
|
||||||
|
echo "ERROR: could not detect host LAN IP" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Host LAN IP: $HOST_IP"
|
||||||
|
|
||||||
|
# ── generate config.yaml ──────────────────────────────────────────────────────
|
||||||
|
mkdir -p "$DATA_DIR"
|
||||||
|
|
||||||
|
docker run --rm --entrypoint="" "$IMAGE" \
|
||||||
|
act_runner generate-config > "$CFG_PATH"
|
||||||
|
|
||||||
|
awk -v host="$HOST_IP" -v port="$CACHE_PORT" '
|
||||||
|
/^cache:/ { in_cache=1 }
|
||||||
|
in_cache && /enabled:/ { $0 = " enabled: true" }
|
||||||
|
in_cache && /dir:/ { $0 = " dir: \"/data/cache\"" }
|
||||||
|
in_cache && /host:/ { $0 = " host: \"" host "\"" }
|
||||||
|
in_cache && /port:/ { $0 = " port: " port; in_cache=0 }
|
||||||
|
{ print }
|
||||||
|
' "$CFG_PATH" > "${CFG_PATH}.tmp" && mv "${CFG_PATH}.tmp" "$CFG_PATH"
|
||||||
|
|
||||||
|
echo "Config written to $CFG_PATH (cache $HOST_IP:$CACHE_PORT)"
|
||||||
|
|
||||||
|
# ── stop + remove old container if exists ────────────────────────────────────
|
||||||
|
if docker inspect "$RUNNER_NAME" &>/dev/null; then
|
||||||
|
echo "Removing existing $RUNNER_NAME..."
|
||||||
|
docker stop "$RUNNER_NAME" || true
|
||||||
|
docker rm "$RUNNER_NAME" || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ── start runner ──────────────────────────────────────────────────────────────
|
||||||
|
docker run \
|
||||||
|
-v "$DATA_DIR:/data" \
|
||||||
|
-v "$CFG_PATH:/config.yaml" \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
-e CONFIG_FILE=/config.yaml \
|
||||||
|
-e GITEA_INSTANCE_URL="$GITEA_URL" \
|
||||||
|
-e GITEA_RUNNER_REGISTRATION_TOKEN="$REGISTRATION_TOKEN" \
|
||||||
|
-e GITEA_RUNNER_NAME="$RUNNER_NAME" \
|
||||||
|
-p "${CACHE_PORT}:${CACHE_PORT}" \
|
||||||
|
--restart unless-stopped \
|
||||||
|
--name "$RUNNER_NAME" \
|
||||||
|
-d "$IMAGE"
|
||||||
|
|
||||||
|
echo "Runner $RUNNER_NAME started"
|
||||||
|
docker ps --filter "name=$RUNNER_NAME" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
||||||
Reference in New Issue
Block a user