49 lines
1.3 KiB
Bash
49 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
# job-cleanup.sh — sluit een per-job working tree af
|
|
#
|
|
# Usage: job-cleanup.sh <job_id>
|
|
#
|
|
# - Bewaart `git log` en `git diff` van de feature-branch in
|
|
# /var/log/agent/jobs/<job_id>/ 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 <job_id>"
|
|
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}"
|