TOTAL: 3524 → 924 lines (74% reduction) Per-file changes: - api-endpoint-tests.yml: 548 → 63 lines (-88%) - package-tests.yml: 1014 → 149 lines (-85%) - integration-tests.yml: 561 → 100 lines (-82%) - python-tests.yml: 290 → 77 lines (-73%) - smart-contract-tests.yml: 290 → 105 lines (-64%) - systemd-sync.yml: 192 → 86 lines (-55%) - cli-level1-tests.yml: 180 → 66 lines (-63%) - security-scanning.yml: 137 → 72 lines (-47%) - rust-zk-tests.yml: 112 → 69 lines (-38%) - docs-validation.yml: 104 → 72 lines (-31%) - js-sdk-tests.yml: 97 → 65 lines (-33%) Fixes applied: 1. Concurrency groups: all 7 workflows shared 'ci-workflows' group (they cancelled each other). Now each has unique group. 2. Removed all actions/checkout@v4 usage (not available on Gitea runner) → replaced with git clone http://gitea.bubuit.net:3000/oib/aitbc.git 3. Removed all sudo usage (Debian root environment) 4. Fixed wrong ports: wallet 8002→8003, RPC 8545→8006 5. External workspaces: /opt/aitbc/*-workspace → /var/lib/aitbc-workspaces/ 6. Extracted 274 echo'd Python lines → scripts/ci/test_api_endpoints.py 7. Removed dead CLI test code (tests were skipped entirely) 8. Moved aitbc.code-workspace out of workflows directory 9. Added --depth 1 to all git clones for speed 10. Added cleanup steps to all workflows New files: - scripts/ci/clone-repo.sh: reusable clone helper - scripts/ci/test_api_endpoints.py: extracted API test script
AITBC Development Environment Scripts
This directory contains scripts for managing the AITBC development environment, including incus containers and systemd services.
📋 Available Scripts
🔧 start-aitbc-dev.sh
Starts incus containers and AITBC systemd services on localhost.
Features:
- Starts incus containers:
aitbcandaitbc1 - Starts all local systemd services matching
aitbc-* - Checks service health and port status
- Tests health endpoints
- Provides colored output and status reporting
Usage:
./scripts/start-aitbc-dev.sh
🛑 stop-aitbc-dev.sh
Stops incus containers and AITBC systemd services on localhost.
Features:
- Stops incus containers:
aitbcandaitbc1 - Stops all local systemd services matching
aitbc-* - Verifies services are stopped
- Provides colored output and status reporting
Usage:
./scripts/stop-aitbc-dev.sh
🚀 start-aitbc-full.sh
Comprehensive startup script for the complete AITBC development environment.
Features:
- Starts incus containers:
aitbcandaitbc1 - Starts services inside containers
- Starts all local systemd services matching
aitbc-* - Tests connectivity to container services
- Provides detailed status reporting
- Shows container IP addresses
- Tests health endpoints
Services Started:
- Local Services: All
aitbc-*systemd services - Container Services:
aitbc-coordinator-apiaitbc-wallet-daemonaitbc-blockchain-node
Usage:
./scripts/start-aitbc-full.sh
🎯 Prerequisites
Required Commands:
incus- Container managementsystemctl- Systemd service managementcurl- Health endpoint testingnetstat- Port checking
Required Containers:
The scripts expect these incus containers to exist:
aitbcaitbc1
Required Services:
The scripts look for systemd services matching the pattern aitbc-*.
📊 Service Ports
| Port | Service | Description |
|---|---|---|
| 8001 | Coordinator API | Main API service |
| 8002 | Wallet Daemon | Wallet management |
| 8003 | Blockchain RPC | Blockchain node RPC |
| 8000 | Coordinator API (alt) | Alternative API |
| 8081 | Blockchain Node 1 | Blockchain instance |
| 8082 | Blockchain Node 2 | Blockchain instance |
| 8006 | Coordinator API (dev) | Development API |
🔍 Health Endpoints
The scripts test these health endpoints:
http://localhost:8001/health- Coordinator APIhttp://localhost:8002/health- Wallet Daemonhttp://localhost:8003/health- Blockchain RPC
📝 Output Examples
Success Output:
[INFO] Starting AITBC Development Environment...
[INFO] Starting incus containers...
[SUCCESS] Container aitbc started successfully
[SUCCESS] Container aitbc1 started successfully
[INFO] Starting AITBC systemd services on localhost...
[SUCCESS] Service aitbc-coordinator-api started successfully
[SUCCESS] Service aitbc-wallet-daemon started successfully
[INFO] Checking service status...
[SUCCESS] aitbc-coordinator-api: RUNNING
[SUCCESS] aitbc-wallet-daemon: RUNNING
[SUCCESS] AITBC Development Environment startup complete!
Service Status:
[INFO] Checking AITBC service ports...
[SUCCESS] Coordinator API (port 8001): RUNNING
[SUCCESS] Wallet Daemon (port 8002): RUNNING
[WARNING] Blockchain RPC (port 8003): NOT RUNNING
🛠️ Troubleshooting
Common Issues:
-
Container not found:
[ERROR] Container aitbc not found. Please create it first.Solution: Create the incus containers first:
incus launch images:ubuntu/22.04 aitbc incus launch images:ubuntu/22.04 aitbc1 -
Service not found:
[WARNING] No AITBC services found on localhostSolution: Install AITBC services or check if they're named correctly.
-
Port already in use:
[WARNING] Service aitbc-coordinator-api is already runningSolution: This is normal - the script detects already running services.
-
Permission denied:
[ERROR] Failed to start service aitbc-coordinator-apiSolution: Run with sudo or check user permissions.
Debug Commands:
# Check all AITBC services
systemctl list-units | grep aitbc-
# Check container status
incus list
# View service logs
journalctl -f -u aitbc-coordinator-api
# View container logs
incus exec aitbc -- journalctl -f -u aitbc-coordinator-api
# Check port usage
netstat -tlnp | grep :800
🔄 Workflow
Development Setup:
- Create incus containers (if not exists)
- Install AITBC services in containers
- Install AITBC systemd services locally
- Run
./scripts/start-aitbc-full.sh
Daily Development:
./scripts/start-aitbc-full.sh- Start everything- Work on AITBC development
./scripts/stop-aitbc-dev.sh- Stop when done
Testing:
- Start services with scripts
- Test health endpoints
- Check logs for issues
- Stop services when finished
📚 Additional Information
- Container IPs: Scripts show container IP addresses for direct access
- Health Checks: Automatic health endpoint testing
- Service Status: Real-time status reporting
- Error Handling: Graceful error handling with informative messages
🎯 Best Practices
- Use the full script for complete environment setup
- Check the output for any warnings or errors
- Monitor logs when troubleshooting issues
- Stop services when not in use to conserve resources
- Run scripts from the project root for proper path resolution