63 lines
2.3 KiB
YAML
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
|