blob: db3eedb627bca7bb386c5325879029b305aa4b34 [file] [log] [blame] [view]
# Gerrit Integration Guide
Staff AI Agent System now supports Gerrit as an alternative to GitHub for pull request management. This guide explains how to configure and use Gerrit with Staff.
## Overview
Gerrit integration provides the same capabilities as GitHub:
- Create changes (Gerrit's equivalent of pull requests)
- List and manage changes
- Update change descriptions
- Close (abandon) changes
- Submit (merge) changes
- Structured logging for all operations
## Configuration
### YAML Configuration
Add Gerrit configuration to your `config.yaml`:
```yaml
# Either GitHub OR Gerrit is required
gerrit:
username: "your-gerrit-username"
password: "your-gerrit-http-password-or-token"
base_url: "https://gerrit.example.com"
project: "your-project-name"
```
### Environment Variables
You can also configure Gerrit using environment variables:
```bash
export GERRIT_USERNAME="your-username"
export GERRIT_PASSWORD="your-password-or-token"
export GERRIT_BASE_URL="https://gerrit.example.com"
export GERRIT_PROJECT="your-project"
```
## Provider Priority
When both GitHub and Gerrit are configured, GitHub takes precedence for backward compatibility. To use Gerrit when both are configured, remove the GitHub configuration.
## Authentication
Gerrit integration supports:
- **HTTP Password**: Traditional Gerrit HTTP password
- **HTTP Token**: Generate from Gerrit Settings → HTTP Credentials
## URL Format
Generated change URLs follow Gerrit's standard format:
```
https://gerrit.example.com/c/project-name/+/12345
```
## Agent Behavior
Agents work identically with Gerrit:
1. Process assigned tasks
2. Generate solutions using LLM
3. Create Git branches and commits
4. Create Gerrit changes for review
5. Update task status with change URL
## Configuration Validation
Use the config check command to verify your Gerrit setup:
```bash
./staff config-check
```
This will show:
- Which Git provider is configured (GitHub/Gerrit)
- Validation of all required fields
- Connection status
## Example Configuration
See `config-gerrit-example.yaml` for a complete example configuration using Gerrit instead of GitHub.
## Structured Logging
All Gerrit operations include structured logging:
```
INFO Creating Gerrit change url=https://gerrit.example.com/a/changes/ project=my-project subject="Task ABC-123: Implement feature" branch=main topic=task/ABC-123-implement-feature
```
## Comparison with GitHub
| Feature | GitHub | Gerrit |
|---------|--------|--------|
| Changes/PRs | Pull Requests | Changes |
| Review System | GitHub Reviews | Gerrit Code Review |
| Merge | Merge PR | Submit Change |
| Close | Close PR | Abandon Change |
| URL Format | `/pull/123` | `/c/project/+/123` |
| Authentication | Token | Username + Password/Token |
## Migration
To migrate from GitHub to Gerrit:
1. Update configuration file or environment variables
2. Remove GitHub configuration
3. Restart the Staff system
4. All new agent operations will use Gerrit
Existing GitHub pull requests are not affected and remain accessible.
## Troubleshooting
### Common Issues
1. **Authentication Failed**
- Verify username and password/token
- Check Gerrit HTTP credentials settings
- Ensure HTTP authentication is enabled
2. **Project Not Found**
- Verify project name matches exactly
- Check user has access to the project
- Ensure project exists in Gerrit
3. **Network Issues**
- Verify base URL is correct and accessible
- Check firewall/proxy settings
- Test connectivity to Gerrit server
### Debug Logging
Enable debug logging to troubleshoot issues:
```yaml
# Add to your configuration
logging:
level: debug
```
This will show detailed HTTP requests and responses for Gerrit operations.