@@ -247,43 +247,55 @@ tar --no-overwrite-dir -xzf runner.tar.gz
247247cat > /usr/local/bin/job-started-hook.sh << 'EOFS '
248248#!/bin/bash
249249exec >> /tmp/job-started-hook.log 2>&1
250+ V="/var/run/github-runner"
250251echo "[$$(date)] ${log_prefix_job_started} $${GITHUB_JOB}"
251- mkdir -p /var/run/github-runner -jobs
252- echo '{"status":"running"}' > /var/run/github-runner -jobs/$${GITHUB_RUN_ID}-$${GITHUB_JOB}.job
253- touch /var/run/github-runner- last-activity /var/run/github-runner -has-run-job
252+ mkdir -p $$V -jobs
253+ echo '{"status":"running"}' > $$V -jobs/$${GITHUB_RUN_ID}-$${GITHUB_JOB}.job
254+ touch $$V- last-activity $$V -has-run-job
254255EOFS
255256
256257cat > /usr/local/bin/job-completed-hook.sh << 'EOFC '
257258#!/bin/bash
258259exec >> /tmp/job-completed-hook.log 2>&1
260+ V="/var/run/github-runner"
259261echo "[$$(date)] ${log_prefix_job_completed} $${GITHUB_JOB}"
260- rm -f /var/run/github-runner -jobs/$${GITHUB_RUN_ID}-$${GITHUB_JOB}.job
261- touch /var/run/github-runner -last-activity
262+ rm -f $$V -jobs/$${GITHUB_RUN_ID}-$${GITHUB_JOB}.job
263+ touch $$V -last-activity
262264EOFC
263265
264266cat > /usr/local/bin/check-runner-termination.sh << 'EOFT '
265267#!/bin/bash
266268exec >> /tmp/termination-check.log 2>&1
267269source /usr/local/bin/runner-common-functions.sh
268- A="/var/run/github-runner-last-activity"
269- J="/var/run/github-runner-jobs"
270- H="/var/run/github-runner-has-run-job"
271- HOMEDIR="$homedir"
272- TOKEN="$token"
270+ V="/var/run/github-runner"
271+ A="$$V-last-activity"
272+ J="$$V-jobs"
273+ H="$$V-has-run-job"
274+ D="$homedir"
275+ T="$token"
273276[ ! -f "$$A" ] && touch "$$A"
274277L=$$(stat -c %Y "$$A" 2>/dev/null || echo 0)
275- I=$$(($$(date +%s)-L))
278+ N=$$(date +%s)
279+ I=$$((N-L))
276280[ -f "$$H" ] && G=$${RUNNER_GRACE_PERIOD:-60} || G=$${RUNNER_INITIAL_GRACE_PERIOD:-180}
277281R=$$(grep -l '"status":"running"' $$J/*.job 2>/dev/null | wc -l || echo 0)
282+
278283if [ $$R -eq 0 ] && [ $$I -gt $$G ]; then
279- echo "[$$(date)] Terminating: idle $$I > grace $$G"
280- [ -f "$$HOMEDIR/config.sh" ] && cd "$$HOMEDIR" && pkill -INT -f "Runner.Listener" 2>/dev/null || true
281- sleep 2
282- [ -f "$$HOMEDIR/config.sh" ] && RUNNER_ALLOW_RUNASROOT=1 ./config.sh remove --token $$TOKEN
284+ log "TERMINATING: idle $$I > grace $$G"
285+ if [ -f "$$D/config.sh" ]; then
286+ cd "$$D" && pkill -INT -f "Runner.Listener" 2>/dev/null || true
287+ sleep 2
288+ log "Deregistering runner..."
289+ RUNNER_ALLOW_RUNASROOT=1 ./config.sh remove --token $$T 2>&1
290+ log "Deregistration exit: $$?"
291+ else
292+ log "ERROR: config.sh not found at $$D"
293+ fi
283294 flush_cloudwatch_logs
295+ log "Shutting down"
284296 sudo shutdown -h now
285297else
286- [ $$R -gt 0 ] && echo "[$$(date)] $$ R job(s) running" || echo "[$$(date)] Idle $$I/$$G sec"
298+ [ $$R -gt 0 ] && log "$$ R job(s) running" || log " Idle $$I/$$G sec"
287299fi
288300EOFT
289301
@@ -298,10 +310,11 @@ echo "RUNNER_INITIAL_GRACE_PERIOD=$runner_initial_grace_period" >> .env
298310echo " RUNNER_POLL_INTERVAL=$runner_poll_interval " >> .env
299311
300312# Set up job tracking directory
301- mkdir -p /var/run/github-runner-jobs
313+ V=" /var/run/github-runner"
314+ mkdir -p $$ V-jobs
302315
303316# Create initial activity timestamp
304- touch /var/run/github-runner -last-activity
317+ touch $$ V -last-activity
305318
306319# Set up periodic termination check using systemd
307320cat > /etc/systemd/system/runner-termination-check.service << 'EOF '
0 commit comments