mirror of
https://github.com/ruvnet/RuVector.git
synced 2026-05-22 19:56:25 +00:00
74 lines
2.9 KiB
Bash
Executable file
74 lines
2.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Deploy the Daily Discovery Brain Trainer to Cloud Run
|
|
# Created by rUv — altruistic knowledge enrichment for π.ruv.io
|
|
#
|
|
# Usage: ./scripts/deploy_trainer.sh [--schedule "CRON_EXPR"]
|
|
set -euo pipefail
|
|
|
|
PROJECT_ID="${GCP_PROJECT_ID:-ruv-dev}"
|
|
REGION="${GCP_REGION:-us-central1}"
|
|
JOB_NAME="ruvbrain-trainer"
|
|
IMAGE="gcr.io/${PROJECT_ID}/${JOB_NAME}:latest"
|
|
SCHEDULE="${1:-0 2 * * *}" # Default: daily at 02:00 UTC
|
|
|
|
echo "╔══════════════════════════════════════════════════════════════╗"
|
|
echo "║ π.ruv.io Daily Discovery Brain Trainer — Deployment ║"
|
|
echo "║ Altruistic Knowledge Enrichment ║"
|
|
echo "╚══════════════════════════════════════════════════════════════╝"
|
|
echo ""
|
|
|
|
# Step 1: Build the container image
|
|
echo "▸ Building trainer image..."
|
|
gcloud builds submit \
|
|
--config=crates/mcp-brain-server/cloudbuild-trainer.yaml \
|
|
--project="${PROJECT_ID}" \
|
|
.
|
|
|
|
# Step 2: Create or update the Cloud Run Job
|
|
echo "▸ Deploying Cloud Run Job: ${JOB_NAME}..."
|
|
gcloud run jobs create "${JOB_NAME}" \
|
|
--image="${IMAGE}" \
|
|
--region="${REGION}" \
|
|
--project="${PROJECT_ID}" \
|
|
--memory=512Mi \
|
|
--cpu=1 \
|
|
--max-retries=2 \
|
|
--task-timeout=1800s \
|
|
--set-env-vars="RUST_LOG=info,BRAIN_URL=https://pi.ruv.io" \
|
|
2>/dev/null || \
|
|
gcloud run jobs update "${JOB_NAME}" \
|
|
--image="${IMAGE}" \
|
|
--region="${REGION}" \
|
|
--project="${PROJECT_ID}" \
|
|
--memory=512Mi \
|
|
--cpu=1 \
|
|
--max-retries=2 \
|
|
--task-timeout=1800s \
|
|
--set-env-vars="RUST_LOG=info,BRAIN_URL=https://pi.ruv.io"
|
|
|
|
# Step 3: Create or update the Cloud Scheduler trigger
|
|
echo "▸ Setting schedule: ${SCHEDULE}..."
|
|
SCHEDULER_NAME="${JOB_NAME}-schedule"
|
|
gcloud scheduler jobs create http "${SCHEDULER_NAME}" \
|
|
--location="${REGION}" \
|
|
--project="${PROJECT_ID}" \
|
|
--schedule="${SCHEDULE}" \
|
|
--uri="https://${REGION}-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/${PROJECT_ID}/jobs/${JOB_NAME}:run" \
|
|
--http-method=POST \
|
|
--oauth-service-account-email="${PROJECT_ID}@appspot.gserviceaccount.com" \
|
|
--description="Daily discovery & brain training for π.ruv.io" \
|
|
2>/dev/null || \
|
|
gcloud scheduler jobs update http "${SCHEDULER_NAME}" \
|
|
--location="${REGION}" \
|
|
--project="${PROJECT_ID}" \
|
|
--schedule="${SCHEDULE}"
|
|
|
|
echo ""
|
|
echo "✓ Trainer deployed successfully!"
|
|
echo " Job: ${JOB_NAME}"
|
|
echo " Region: ${REGION}"
|
|
echo " Schedule: ${SCHEDULE}"
|
|
echo " Image: ${IMAGE}"
|
|
echo ""
|
|
echo " Manual run: gcloud run jobs execute ${JOB_NAME} --region=${REGION} --project=${PROJECT_ID}"
|
|
echo " View logs: gcloud run jobs executions list --job=${JOB_NAME} --region=${REGION} --project=${PROJECT_ID}"
|