Files
aitbc/.windsurf/plans/deployment-automation-plan.md
aitbc eeed0c61a3
Some checks failed
Cross-Node Transaction Testing / transaction-test (push) Successful in 14s
Deploy to Testnet / deploy-testnet (push) Successful in 1m41s
Multi-Node Stress Testing / stress-test (push) Successful in 3s
Node Failover Simulation / failover-test (push) Failing after 2s
docs: make deployment SSL handling manual
2026-05-11 08:12:30 +02:00

154 lines
4.8 KiB
Markdown

---
description: Deployment Automation Workflow for AITBC Services
---
# Deployment Automation Workflow
This workflow covers the automation of AITBC service deployment with one-command setup.
## Prerequisites
- Linux server with systemd support
- Python 3.13+ installed
- SSH access to target servers
- Domain name configured (for SSL certificates)
## Steps
### 1. System Service One-Command Setup (systemd)
1. **Create systemd service templates**
- Create service files for each AITBC component:
- `aitbc-coordinator-api.service`
- `aitbc-blockchain-node.service`
- `aitbc-wallet.service`
- `aitbc-gpu-miner.service`
- `aitbc-agent-daemon.service`
- Store templates in `systemd/` directory
- Include proper dependencies and restart policies
2. **Configure service dependencies**
- Define startup order (blockchain → coordinator → wallet → miners)
- Add `After=` and `Requires=` directives
- Configure automatic restart on failure
- Set resource limits (CPU, memory)
3. **Create service management script**
- Script: `scripts/service/manage-services.sh`
- Commands: start, stop, restart, status, logs
- Handle multiple services with dependency ordering
- Include health checks before starting dependent services
### 2. One-Command Deployment Script (`./deploy.sh`)
1. **Create main deployment script**
- Script: `scripts/deploy/deploy.sh`
- Make executable: `chmod +x scripts/deploy/deploy.sh`
- Include error handling and rollback capability
2. **Deployment script functionality**
```bash
# Main deployment steps
- Check system prerequisites
- Install dependencies (Python, system packages)
- Clone or update repository
- Create virtual environment
- Install Python dependencies
- Configure environment variables
- Initialize databases
- Start systemd services
- Run health checks
- Display deployment status
```
3. **Add rollback capability**
- Backup previous deployment
- Rollback on failure
- Restore previous configuration
- Restart services with old version
### 3. Environment Configuration Templates (.env.example)
1. **Create .env.example template**
- File: `.env.example` at project root
- Include all required environment variables
- Add comments explaining each variable
- Group variables by service/component
2. **Template sections**
```bash
# Blockchain Configuration
CHAIN_ID=ait-mainnet
BLOCKCHAIN_RPC_PORT=8006
# Coordinator API
COORDINATOR_API_PORT=8001
COORDINATOR_API_HOST=0.0.0.0
DATABASE_URL=postgresql://user:pass@localhost/aitbc
# Wallet
WALLET_DAEMON_PORT=8000
WALLET_PASSWORD=your_secure_password
# GPU Miner
MINER_API_KEY=your_api_key
MINER_GPU_DEVICE=0
```
3. **Create validation script**
- Script: `scripts/deploy/validate-env.sh`
- Check all required variables are set
- Validate variable formats (ports, URLs)
- Test database connectivity
- Verify API keys are valid format
### 4. Service Health Checks and Monitoring
1. **Create health check endpoints**
- Add `/health/live` endpoint to each service
- Add `/health/ready` endpoint for readiness checks
- Return JSON with service status and dependencies
2. **Create monitoring script**
- Script: `scripts/monitoring/health-check.sh`
- Check all service health endpoints
- Monitor service resource usage (CPU, memory, disk)
- Alert on service failures
- Log health check results
3. **Integrate with systemd**
- Add `ExecStartPost=` for health checks
- Configure restart on health check failure
- Use systemd notify for service readiness
### 5. Manual SSL Certificate Handling
- SSL certificate provisioning and renewal are handled manually outside this workflow.
- Configure nginx with manually issued certificates as needed.
## Verification
- [ ] All systemd services start in correct order
- [ ] Deployment script completes successfully
- [ ] .env.example template is complete
- [ ] Health checks pass for all services
- [ ] SSL certificates are configured manually and services are accessible via HTTPS
- [ ] Rollback capability tested
## Troubleshooting
- **Service fails to start**: Check logs with `journalctl -u service-name`, verify dependencies
- **Deployment script fails**: Check error logs, verify prerequisites, test individual steps
- **Health checks fail**: Verify service is running, check endpoint configuration
- **SSL configuration fails**: Check domain DNS, verify nginx config, and confirm the manually issued certificate paths
- **Environment validation fails**: Verify all required variables are set, check formats
## Related Files
- `systemd/*.service`
- `scripts/deploy/deploy.sh`
- `.env.example`
- `scripts/deploy/validate-env.sh`
- `scripts/monitoring/health-check.sh`
- `nginx/nginx.conf`