External CI/CD Pipeline — branch-independent test runner
Go to file
2026-04-21 05:18:26 +00:00
ci-config.json feat: TSHARPS-CI external runner — branch-independent CI pipeline 2026-04-21 03:25:31 +00:00
ci-notify.sh feat: tag @TSHARPSbm_bot in all CI notifications so Claude sees results 2026-04-21 05:18:26 +00:00
ci-runner.sh feat: TSHARPS-CI external runner — branch-independent CI pipeline 2026-04-21 03:25:31 +00:00
ci-webhook.py feat: TSHARPS-CI external runner — branch-independent CI pipeline 2026-04-21 03:25:31 +00:00
README.md feat: TSHARPS-CI external runner — branch-independent CI pipeline 2026-04-21 03:25:31 +00:00

TSHARPS-CI — External CI/CD Pipeline

Branch-independent CI runner for the TSHARPS flight training scheduler.

Branch Model

TestMain ──► TestStaging ──► TestProduction
  (dev)       (validate)      (live CI)
  • TestMain: Develop CI changes here
  • TestStaging: Validate before going live
  • TestProduction: Runs against ALL TSHARPS branches on every push

How It Works

  1. Developer pushes to any TSHARPS branch (mfg, rogue, spif, staging, main)
  2. Gitea webhook fires POST to http://127.0.0.1:9500/ci
  3. ci-webhook.py receives the event and spawns ci-runner.sh
  4. ci-runner.sh runs against the pushed branch's worktree:
    • Feature manifest verification
    • Test suite (with quarantine for known failures)
    • Package import check
  5. ci-notify.sh sends results to Telegram CICD Pipeline topic

Files

File Purpose
ci-webhook.py HTTP server listening for Gitea push webhooks
ci-runner.sh Main CI script — tests, features, packages
ci-notify.sh Telegram notification sender
ci-config.json Configuration (tokens, paths, timeouts)

Key Rules

  • Read-only: CI runner never writes to TSHARPS repos
  • Same tests for all branches: No branch-specific CI logic
  • No results stored here: Test results handled separately
  • Runner self-monitoring: Crashes send distinct alerts

Promoting CI Changes

# 1. Develop on TestMain
git checkout TestMain
# make changes
git commit -am "add new check"
git push origin TestMain

# 2. Promote to TestStaging
git checkout TestStaging && git merge TestMain && git push

# 3. Promote to live
git checkout TestProduction && git merge TestStaging && git push

# 4. Update server
ssh server "cd /srv/tsharps-ci && git pull origin TestProduction"

Switch-Back to Gitea Actions

If this doesn't work out:

  1. Re-enable Gitea Actions: TSHARPS repo → Settings → Actions → check "Active"
  2. Stop runner: sudo systemctl stop tsharps-ci
  3. Remove webhook: TSHARPS repo → Settings → Webhooks → Delete