#!/usr/bin/env bash # job-cleanup.sh — sluit een per-job working tree af # # Usage: job-cleanup.sh # # - Bewaart `git log` en `git diff` van de feature-branch in # /var/log/agent/jobs// zodat je achteraf kunt zien wat de # agent heeft gedaan zonder de NAS-share met clones te vervuilen. # - Verwijdert de working tree. set -uo pipefail source /opt/agent/bin/_lib.sh : "${AGENT_JOB_ROOT:=/tmp}" : "${AGENT_LOG_DIR:=/var/log/agent}" JOB_ID="${1:-}" if [[ -z "$JOB_ID" ]]; then log "usage: $0 " exit 2 fi WORK_DIR="${AGENT_JOB_ROOT}/job-${JOB_ID}" ARCHIVE_DIR="${AGENT_LOG_DIR}/jobs/${JOB_ID}" mkdir -p "$ARCHIVE_DIR" if [[ -d "$WORK_DIR/.git" ]]; then log "archiving git artifacts to ${ARCHIVE_DIR}" ( cd "$WORK_DIR" git log --oneline --decorate -n 50 origin/main..HEAD \ > "$ARCHIVE_DIR/commits.txt" 2>/dev/null || true git diff origin/main..HEAD \ > "$ARCHIVE_DIR/diff.patch" 2>/dev/null || true git rev-parse HEAD \ > "$ARCHIVE_DIR/HEAD" 2>/dev/null || true git branch --show-current \ > "$ARCHIVE_DIR/branch" 2>/dev/null || true ) fi if [[ -d "$WORK_DIR" ]]; then log "removing ${WORK_DIR}" rm -rf "$WORK_DIR" fi log "cleanup complete for job ${JOB_ID}"