feat: add runner conversion scripts and strengthen cutover automation
This commit is contained in:
102
runners-conversion/periodVault/ci-local.sh
Executable file
102
runners-conversion/periodVault/ci-local.sh
Executable file
@@ -0,0 +1,102 @@
|
||||
#!/usr/bin/env bash
|
||||
# ci-local.sh
|
||||
# Local equivalent of CI checks for self-hosted runner validation.
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
cd "$PROJECT_ROOT"
|
||||
|
||||
RUN_CONTRACTS=0
|
||||
RUN_BACKEND=0
|
||||
RUN_ANDROID=0
|
||||
RUN_IOS=0
|
||||
SKIP_INSTALL=0
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Usage: ./scripts/ci-local.sh [options]
|
||||
|
||||
Options:
|
||||
--contracts Run process/SDD/TDD gate scripts.
|
||||
--backend Run lint + shared/android unit tests.
|
||||
--android Run Android emulator UI tests.
|
||||
--ios Run iOS simulator UI tests.
|
||||
--all Run contracts + backend + android + ios.
|
||||
--skip-install Skip setup bootstrap check.
|
||||
--help Show this help.
|
||||
|
||||
If no test scope flags are provided, defaults to: --contracts --backend
|
||||
EOF
|
||||
}
|
||||
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--contracts) RUN_CONTRACTS=1 ;;
|
||||
--backend) RUN_BACKEND=1 ;;
|
||||
--android) RUN_ANDROID=1 ;;
|
||||
--ios) RUN_IOS=1 ;;
|
||||
--all)
|
||||
RUN_CONTRACTS=1
|
||||
RUN_BACKEND=1
|
||||
RUN_ANDROID=1
|
||||
RUN_IOS=1
|
||||
;;
|
||||
--skip-install) SKIP_INSTALL=1 ;;
|
||||
--help|-h) usage; exit 0 ;;
|
||||
*)
|
||||
echo "[ci-local] Unknown option: $arg"
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ $RUN_CONTRACTS -eq 0 && $RUN_BACKEND -eq 0 && $RUN_ANDROID -eq 0 && $RUN_IOS -eq 0 ]]; then
|
||||
RUN_CONTRACTS=1
|
||||
RUN_BACKEND=1
|
||||
fi
|
||||
|
||||
if [[ $SKIP_INSTALL -eq 0 ]]; then
|
||||
"$SCRIPT_DIR/setup-dev-environment.sh" --verify
|
||||
fi
|
||||
|
||||
TIMESTAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG_DIR="$PROJECT_ROOT/build/local-ci"
|
||||
LOG_FILE="$LOG_DIR/local-ci-$TIMESTAMP.log"
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
run_step() {
|
||||
local step_name="$1"
|
||||
shift
|
||||
echo ""
|
||||
echo "================================================"
|
||||
echo "[ci-local] $step_name"
|
||||
echo "================================================"
|
||||
"$@" 2>&1 | tee -a "$LOG_FILE"
|
||||
}
|
||||
|
||||
echo "[ci-local] Writing log to $LOG_FILE"
|
||||
echo "[ci-local] Starting local CI run at $(date -u '+%Y-%m-%dT%H:%M:%SZ')" | tee -a "$LOG_FILE"
|
||||
|
||||
if [[ $RUN_CONTRACTS -eq 1 ]]; then
|
||||
run_step "check-process" "$SCRIPT_DIR/check-process.sh" origin/main
|
||||
run_step "validate-sdd" "$SCRIPT_DIR/validate-sdd.sh" origin/main
|
||||
run_step "validate-tdd" env FORCE_AUDIT_GATES=1 "$SCRIPT_DIR/validate-tdd.sh" origin/main
|
||||
fi
|
||||
|
||||
if [[ $RUN_BACKEND -eq 1 ]]; then
|
||||
run_step "ktlint+unit-tests" ./gradlew ktlintCheck shared:jvmTest androidApp:testDebugUnitTest
|
||||
fi
|
||||
|
||||
if [[ $RUN_ANDROID -eq 1 ]]; then
|
||||
run_step "android-ui-tests" "$SCRIPT_DIR/run-emulator-tests.sh" android
|
||||
fi
|
||||
|
||||
if [[ $RUN_IOS -eq 1 ]]; then
|
||||
run_step "ios-ui-tests" "$SCRIPT_DIR/run-emulator-tests.sh" ios
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "[ci-local] PASS"
|
||||
echo "[ci-local] Log: $LOG_FILE"
|
||||
Reference in New Issue
Block a user