Autopilot/README.md

146 lines
4.1 KiB
Markdown
Raw Normal View History

2026-06-30 07:26:45 +00:00
# AutoPilot — Distributed Web Test Automation Platform
AutoPilot is a full-stack, enterprise-grade distributed web browser automation platform. It consists of three components deployed together as a monorepo.
```
autopilot/
├── master/ # Cloud Coordinator — Spring Boot REST API + Scheduler + DB
├── worker/ # Execution Engine — Selenium WebDriver agent (polls master)
├── ui/ # Dashboard — React + Vite frontend (served via Nginx)
├── docker-compose.yml # Production: full stack with PostgreSQL
├── docker-compose.local.yml # Local dev: DB only (run services manually)
└── .env.example # Template for environment variables
```
---
## 🚀 Production Deployment (AWS / Any Linux Server)
### Prerequisites
- Docker & Docker Compose installed
- At least 2 CPU cores and 2GB RAM
### 1. Clone the repository
```bash
git clone https://repo.qruize.com/VithobaaSrinivasakumar/Autopilot.git
cd Autopilot
```
### 2. Configure environment variables
```bash
cp .env.example .env
nano .env # Fill in DB_PASS, JWT_SECRET, AWS keys, etc.
```
### 3. Deploy the full stack
```bash
docker-compose up -d --build
```
This starts:
- **PostgreSQL** (database, internal only)
- **AutoPilot Master** on port `9090`
- **AutoPilot UI** on port `80` (Nginx)
### 4. Verify deployment
```bash
docker-compose ps
curl http://localhost:9090/api/health
```
### 5. Updating to a new version
```bash
git pull origin main
docker-compose up -d --build
```
To connect to aws Server
Install mobax or ssh terminal application
create session with this ip address 13.232.42.59
give private key named mesibo (ask dhakshan).i cant give key here in this repo.
go to cd /home/ubuntu/Autopilot
give docker ps -a (To check if the containers are running well)
then go to http://13.232.42.59
that its.
---
## 🏗️ Local Development (No Docker for Services)
### 1. Start only the database
```bash
docker-compose -f docker-compose.local.yml up -d
```
### 2. Start the Master (Terminal 1)
```bash
cd master
./mvnw spring-boot:run
# Runs on http://localhost:9090
```
### 3. Start the UI (Terminal 2)
```bash
cd ui
npm install
npm run dev
# Runs on http://localhost:5173
```
### 4. Start the Worker (Terminal 3)
```bash
cd worker
./mvnw spring-boot:run
# Polls http://localhost:9090 for jobs
```
---
## 🔗 CI/CD Integration
AutoPilot can be triggered directly from your DevOps pipeline using an API key.
### Trigger a test suite
```bash
curl -X POST \
-H "Authorization: Bearer ap_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{"suiteName": "Smoke Tests", "browser": "chrome"}' \
https://your-domain.com/api/v1/suites/trigger-by-name
```
### Poll for results
```bash
curl -H "Authorization: Bearer ap_live_your_api_key" \
https://your-domain.com/api/v1/schedulers/{schedulerId}/execution-status
# exitCode: 0 = all passed, 1 = failures, 2 = still running
```
For full GitHub Actions, GitLab CI, and Jenkins snippets, see the **CI/CD Integration** page inside the dashboard.
---
## 🌐 Environment Variables Reference
| Variable | Description | Required |
|---|---|---|
| `DB_URL` | JDBC connection string to PostgreSQL | ✅ |
| `DB_USER` | Database username | ✅ |
| `DB_PASS` | Database password | ✅ |
| `JWT_SECRET` | Minimum 256-bit secret for signing tokens | ✅ |
| `AWS_REGION` | AWS region for S3 screenshot storage | Optional |
| `AWS_ACCESS_KEY_ID` | AWS access key | Optional |
| `AWS_SECRET_ACCESS_KEY` | AWS secret key | Optional |
| `S3_BUCKET_NAME` | S3 bucket for storing screenshots | Optional |
| `LOCALAGENT_CLOUD_URL` | URL the Worker uses to reach the Master | Worker only |
---
## 📖 API Reference
| Method | Endpoint | Description |
|---|---|---|
| `POST` | `/api/v1/suites/{id}/trigger` | Trigger suite by ID |
| `POST` | `/api/v1/suites/trigger-by-name` | Trigger suite by name |
| `GET` | `/api/v1/schedulers/{id}/execution-status` | Poll execution result |
| `GET` | `/api/v1/executions/{id}/status` | Get execution detail |