# 🚀 Gitea Webhook Ambassador Usage Guide ## 📋 Table of Contents 1. [Quick Start](#quick-start) 2. [Configuration](#configuration) 3. [API Endpoints](#api-endpoints) 4. [Database Management](#database-management) 5. [Monitoring and Logs](#monitoring-and-logs) 6. [Troubleshooting](#troubleshooting) ## 🚀 Quick Start ### 1. Environment Preparation ```bash # Clone the project git clone https://your.repo.url/gitea-webhook-ambassador-python.git cd gitea-webhook-ambassador-python # Run quick setup script ./devbox install ``` ### 2. Configure Environment Edit the `.env` file to set required parameters: ```bash # Edit configuration file cp .env.example .env vim .env ``` **Required configuration:** ```bash # Jenkins configuration JENKINS_USERNAME=your_jenkins_username JENKINS_TOKEN=your_jenkins_token # Security configuration SECURITY_SECRET_KEY=your_secret_key ``` ### 3. Start Service ```bash # Method 1: Use the startup script ./devbox start # Method 2: Manual startup # Start Redis docker run -d -p 6379:6379 redis:alpine # Activate virtual environment source venv/bin/activate # Start API service python -m uvicorn app.main_enhanced:app --host 0.0.0.0 --port 8000 # Start Celery worker in a new terminal celery -A app.tasks.jenkins_tasks worker --loglevel=info # Start scheduled tasks in a new terminal celery -A app.tasks.jenkins_tasks beat --loglevel=info ``` ### 4. Verify Installation Visit the following addresses to verify the service: - **API Docs**: http://localhost:8000/docs - **Health Check**: http://localhost:8000/health - **Metrics**: http://localhost:8000/metrics ## ⚙️ Configuration ### Environment Dispatch Configuration Edit the `config/environments.yaml` file: ```yaml environments: dev: branches: ["dev", "develop", "development", "feature/*"] jenkins_job: "alpha-build" jenkins_url: "https://jenkins-alpha.freeleaps.com" priority: 2 prod: branches: ["prod", "production", "main", "master", "release/*"] jenkins_job: "production-build" jenkins_url: "https://jenkins-prod.freeleaps.com" priority: 1 staging: branches: ["staging", "stage", "pre-prod"] jenkins_job: "staging-build" jenkins_url: "https://jenkins-staging.freeleaps.com" priority: 3 default: branches: ["*"] jenkins_job: "default-build" jenkins_url: "https://jenkins-default.freeleaps.com" priority: 4 ``` ### Deduplication Configuration ```yaml deduplication: enabled: true window_seconds: 300 # 5-minute deduplication window strategy: "commit_branch" cache_ttl: 3600 # Cache for 1 hour ``` ## 🔧 API Endpoints ### Webhook Endpoint Receive Gitea webhook events: ```http POST /webhook/gitea ``` ### Health Check ```http GET /health GET /health/queue GET /health/jenkins ``` Example response: ```json { "status": "healthy", "service": "Gitea Webhook Ambassador", "version": "1.0.0", "timestamp": "2023-01-01T00:00:00Z", "jenkins": {"status": "connected"}, "worker_pool": {"active_workers": 2, "queue_size": 0, "total_processed": 10, "total_failed": 1}, "database": {"status": "connected"} } ``` ### Queue Status ```http GET /admin/queue/status ``` Example response: ```json { "active_tasks": 1, "queued_tasks": 2, "worker_count": 2, "queue_length": 3 } ``` ### Monitoring Metrics Returns Prometheus-formatted monitoring metrics. ## 🗄️ Database Management ### Create Project Mapping Use a Python script to create a project mapping: ```python from app.services.database_service import get_database_service import asyncio db_service = get_database_service() mapping_data = { "repository_name": "freeleaps/test-project", "default_job": "test-project-build", "branch_jobs": [ {"branch_name": "dev", "job_name": "test-project-dev"}, {"branch_name": "staging", "job_name": "test-project-staging"} ], "branch_patterns": [ {"pattern": "feature/*", "job_name": "test-project-feature"}, {"pattern": "hotfix/*", "job_name": "test-project-hotfix"} ] } success = asyncio.run(db_service.create_project_mapping(mapping_data)) print(f"Mapping created: {'Success' if success else 'Failed'}") ``` Run the script: ```bash python create_mapping.py ``` ### View Trigger Logs Refer to the API documentation for log query endpoints. ## 📊 Monitoring and Logs ### View Logs ```bash # View application logs tail -n 50 logs/service.log # View Celery logs tail -n 50 logs/celery.log ``` ### Monitoring Dashboard Use Grafana to create a monitoring dashboard: 1. Visit http://localhost:3000 (Grafana) 2. Username: `admin`, Password: `admin` 3. Add Prometheus data source: http://prometheus:9090 4. Import monitoring dashboard ### Key Metrics - **webhook_requests_total**: Total webhook requests - **webhook_request_duration_seconds**: Request response time - **queue_size**: Queue length - **dedup_hits_total**: Deduplication hit count ## 🔧 Troubleshooting ### Common Issues #### 1. Redis Connection Failure ```bash # Check Redis status docker ps | grep redis # Restart Redis docker restart webhook-ambassador-redis ``` #### 2. Celery Worker Fails to Start ```bash # Check Celery configuration cat .env # Restart Worker celery -A app.tasks.jenkins_tasks worker --loglevel=info ``` #### 3. Jenkins Connection Failure Check Jenkins URL, username, and token in the configuration file.