TSHARPS-CI/README.md
Claude BM 9b7abec506 feat: TSHARPS-CI external runner — branch-independent CI pipeline
Complete CI system that lives outside TSHARPS branches:
- ci-webhook.py: HTTP server on port 9500, receives Gitea push webhooks
- ci-runner.sh: runs feature manifests, pytest, package checks (read-only)
- ci-notify.sh: sends results to Telegram CICD Pipeline topic (4706)
- ci-config.json: branch→worktree mapping, tokens, timeouts
- README.md: branch model, promotion workflow, switch-back plan

Same tests for ALL branches. No drift. Runner self-monitors for crashes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-21 03:25:31 +00:00

68 lines
2.0 KiB
Markdown

# 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
```bash
# 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