Ctrl K
ComunidadGuías…

scripts/butler-runtime-smoke.sh

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/usr/bin/env bash
# Runtime ops smoke — 灵文1号(默认)或 普通试点项目(轻量 jobs)
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"
PROJECT="${1:-灵文1号}"

if [[ -f .env ]]; then
  set -a
  set +u
  # shellcheck disable=SC1091
  source .env
  set -u
  set +a
fi
export PYTHONPATH="${PYTHONPATH:-.}:."
# 冒烟默认不推微信(避免 iLink 限流);真机推送验证用 butler-wechat-push-verify.sh
# 或 BUTLER_RUNTIME_SMOKE_PUSH=1
if [[ "${BUTLER_RUNTIME_SMOKE_PUSH:-0}" != "1" ]]; then
  export BUTLER_RUNTIME_PUSH=0
fi
export BUTLER_RUNTIME_PUSH_COOLDOWN_SECONDS="${BUTLER_RUNTIME_PUSH_COOLDOWN_SECONDS:-30}"
export WECHAT_SEND_CHUNK_RETRIES="${WECHAT_SEND_CHUNK_RETRIES:-6}"
export WECHAT_SEND_CHUNK_RETRY_DELAY_SECONDS="${WECHAT_SEND_CHUNK_RETRY_DELAY_SECONDS:-2}"

echo "== runtime unit tests (incl. mutating approval gate) =="
python3 -m pytest tests/test_runtime.py -q --tb=line

echo ""
echo "== list jobs ($PROJECT) =="
python3 -m butler.main runtime list --project "$PROJECT"

_run() {
  local id="$1"
  shift
  echo ""
  echo "== run $id =="
  python3 -m butler.main runtime run "$id" --project "$PROJECT" "$@"
}

if [[ "$PROJECT" == "普通试点项目" ]]; then
  _run pilot-heartbeat --no-notify
  _run test-unit-smoke --no-notify --force
else
  _run factory-status-daily --no-notify

  if [[ "${BUTLER_RUNTIME_PUSH:-0}" == "1" ]]; then
    echo ""
    echo "== cooldown before next runtime push =="
    sleep "${BUTLER_RUNTIME_PUSH_COOLDOWN_SECONDS}"
  else
    echo ""
    echo "== skip push cooldown (BUTLER_RUNTIME_PUSH=0) =="
  fi

  _run publish-preflight --no-notify

  echo ""
  echo "== agent runtime bridge (list_runtime_jobs / run_runtime_job) =="
  export BUTLER_RUNTIME_ENABLED=1
  python3 -m pytest tests/test_dev_ops_p2.py::TestRuntimeBridgeTools -q --tb=line

  if [[ "${BUTLER_RUNTIME_RUN_CONSISTENCY:-0}" == "1" ]]; then
    _run consistency-weekly --no-notify
  else
    echo ""
    echo "Skip consistency-weekly (set BUTLER_RUNTIME_RUN_CONSISTENCY=1 to run; may take several minutes)"
  fi
fi

echo ""
echo "== timer status =="
systemctl --user --no-pager list-timers 'butler-runtime*' 2>/dev/null || echo "(no user timer)"

echo ""
echo "Runtime smoke done."