External CI/CD Pipeline — branch-independent test runner
Go to file
Claude BM ab89dc05b2 Generate HTML failure report and attach to Telegram on CI fail
When tests fail, ci-runner.sh generates an HTML report with:
- Build metadata (branch, commit, actor, duration)
- Test stats (passed/failed/skipped/errors)
- Failed test table (file + test name)
- Failure detail output

ci-notify.sh sends the HTML as a document attachment alongside
the text notification in the CICD Pipeline topic.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-21 18:33:38 +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 Generate HTML failure report and attach to Telegram on CI fail 2026-04-21 18:33:38 +00:00
ci-runner.sh Generate HTML failure report and attach to Telegram on CI fail 2026-04-21 18:33:38 +00:00
ci-webhook.py Bind webhook server to 0.0.0.0 instead of 127.0.0.1 2026-04-21 16:47:25 +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