Files
jobtrackingapp/.gitea/workflows/maintenance.yml
T
cesnimda de85492373
CI and Deploy / test (push) Successful in 6m47s
CI and Deploy / deploy (push) Failing after 25s
feat(ops): automate backups and private CV benchmarks
2026-09-02 00:49:06 +02:00

63 lines
2.3 KiB
YAML

name: Maintenance jobs
on:
workflow_dispatch:
inputs:
job:
description: Allowlisted maintenance job
required: true
type: choice
options:
- cv-benchmark
jobs:
cv-benchmark:
if: inputs.job == 'cv-benchmark'
runs-on: ubuntu-latest
steps:
- name: Run private corpus benchmark on production
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.PROD_HOST }}
username: ${{ secrets.PROD_USER }}
key: ${{ secrets.PROD_SSH_KEY }}
command_timeout: 30m
script: |
set -euo pipefail
cd /opt/job-tracker/app
corpus_dir=/home/pi/cvs
approved_dir="$corpus_dir/approved-jsons"
output_dir="$(mktemp -d)/latest"
cleanup() { rm -rf "$(dirname "$output_dir")"; }
trap cleanup EXIT
AI_SERVICE_TOKEN="$(sed -n 's/^AI_SERVICE_TOKEN=//p' /opt/job-tracker/shared/.env | tail -n 1)"
if [ -z "$AI_SERVICE_TOKEN" ]; then
echo "AI_SERVICE_TOKEN is not configured." >&2
exit 1
fi
ai_id="$(docker compose -f docker-compose.yml ps -q ai-service)"
ai_ip="$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$ai_id")"
if [ -z "$ai_ip" ]; then
echo "The AI extraction service is not running." >&2
exit 1
fi
chmod +x scripts/run-cv-benchmark.sh
CV_BENCHMARK_CORPUS_DIR="$corpus_dir" \
CV_BENCHMARK_OUTPUT_DIR="$output_dir" \
CV_BENCHMARK_APPROVED_DIR="$approved_dir" \
CV_AI_BASE_URL="http://$ai_ip:8001" \
CV_AI_SERVICE_TOKEN="$AI_SERVICE_TOKEN" \
scripts/run-cv-benchmark.sh
backend_id="$(docker compose -f docker-compose.yml ps -q backend)"
if [ -z "$backend_id" ]; then
echo "The backend container is not running." >&2
exit 1
fi
docker exec "$backend_id" sh -c 'mkdir -p /data/CvBenchmarks'
docker cp "$output_dir/." "$backend_id:/data/CvBenchmarks/"
docker exec "$backend_id" test -s /data/CvBenchmarks/index.json
docker exec "$backend_id" test -s /data/CvBenchmarks/report.md