run.sh (2323B)
1 #!/bin/bash 2 set -euo pipefail 3 4 # ── Auto-Update Dependencies ───────────────────────────────────────── 5 # Scheduled at midnight via .jci/crontab. 6 # Updates all pip packages, runs the test suite, and reports results. 7 # ───────────────────────────────────────────────────────────────────── 8 9 cd "$JCI_REPO_ROOT" 10 11 echo "==> Snapshot current dependency versions" 12 pip3 freeze 2>/dev/null > "$JCI_OUTPUT_DIR/before-update.txt" 13 14 echo "==> Upgrading packages from requirements.txt" 15 pip3 install --break-system-packages --upgrade -r requirements.txt 2>&1 | tee "$JCI_OUTPUT_DIR/upgrade-log.txt" || true 16 17 echo "==> Snapshot new dependency versions" 18 pip3 freeze 2>/dev/null > "$JCI_OUTPUT_DIR/after-update.txt" 19 20 echo "==> Dependency diff" 21 if diff "$JCI_OUTPUT_DIR/before-update.txt" "$JCI_OUTPUT_DIR/after-update.txt" \ 22 > "$JCI_OUTPUT_DIR/dep-diff.txt" 2>&1; then 23 echo "No dependency changes." 24 else 25 echo "Changed packages:" 26 cat "$JCI_OUTPUT_DIR/dep-diff.txt" 27 fi 28 29 echo "==> Running test suite" 30 if python3 manage.py test core --no-input 2>&1 | tee "$JCI_OUTPUT_DIR/test-results.txt"; then 31 echo "==> Tests passed after update" 32 33 # Freeze the verified versions back into requirements.txt 34 # In a real setup, you'd commit updated requirements: 35 # pip3 freeze > requirements.txt && git add requirements.txt && git commit -m "chore: auto-update deps" 36 echo "Dependencies verified — would commit in a real workflow" 37 38 echo "SUCCESS" > "$JCI_OUTPUT_DIR/status.txt" 39 else 40 echo "==> Tests FAILED after update" 41 echo "The following packages were updated:" > "$JCI_OUTPUT_DIR/failure-report.txt" 42 cat "$JCI_OUTPUT_DIR/dep-diff.txt" >> "$JCI_OUTPUT_DIR/failure-report.txt" 43 echo "" >> "$JCI_OUTPUT_DIR/failure-report.txt" 44 echo "Test output:" >> "$JCI_OUTPUT_DIR/failure-report.txt" 45 cat "$JCI_OUTPUT_DIR/test-results.txt" >> "$JCI_OUTPUT_DIR/failure-report.txt" 46 47 echo "Failure report:" 48 cat "$JCI_OUTPUT_DIR/failure-report.txt" 49 50 echo "FAILURE" > "$JCI_OUTPUT_DIR/status.txt" 51 exit 1 52 fi