Clearer name: TestDevelop is where CI changes are developed, not related to the main/production branch. Branch model: TestDevelop → TestStaging → TestProduction Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
68 lines
2.0 KiB
Markdown
68 lines
2.0 KiB
Markdown
# TSHARPS-CI — External CI/CD Pipeline
|
|
|
|
Branch-independent CI runner for the TSHARPS flight training scheduler.
|
|
|
|
## Branch Model
|
|
|
|
```
|
|
TestDevelop ──► TestStaging ──► TestProduction
|
|
(dev) (validate) (live CI)
|
|
```
|
|
|
|
- **TestDevelop**: 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 TestDevelop
|
|
git checkout TestDevelop
|
|
# make changes
|
|
git commit -am "add new check"
|
|
git push origin TestDevelop
|
|
|
|
# 2. Promote to TestStaging
|
|
git checkout TestStaging && git merge TestDevelop && 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
|