Files
compose-anything/src/renovate/README.md
2026-01-20 13:10:28 +08:00

228 lines
6.2 KiB
Markdown

# Renovate - Automated Dependency Updates
[中文文档](README.zh.md)
Renovate is an automated dependency update tool that keeps your project dependencies up-to-date by creating pull requests when new versions are available.
## Features
- 🤖 Automated dependency updates across multiple platforms
- 🔄 Support for GitHub, GitLab, Gitea, Bitbucket, Azure DevOps, and more
- 📦 Multi-language support: JavaScript, Python, Go, Docker, and many more
- 🎯 Highly configurable with smart defaults
- 🔒 Security-focused with vulnerability scanning
- 📊 Detailed update summaries and changelogs
- ⚙️ Flexible scheduling and auto-merge options
## Quick Start
1. **Copy the example environment file:**
```bash
cp .env.example .env
```
2. **Configure authentication:**
Edit `.env` and set:
- `RENOVATE_PLATFORM`: Your platform (e.g., `github`, `gitlab`, `gitea`)
- `RENOVATE_TOKEN`: Your authentication token (required)
- `RENOVATE_REPOSITORIES`: Repositories to process (e.g., `myorg/repo1,myorg/repo2`)
3. **Get authentication token:**
- **GitHub**: Create a Personal Access Token at <https://github.com/settings/tokens>
- Required scopes: `repo`, `workflow`
- **GitLab**: Create a Personal Access Token at <https://gitlab.com/-/profile/personal_access_tokens>
- Required scopes: `api`, `write_repository`
4. **Run Renovate:**
```bash
# One-time execution
docker compose run --rm renovate
# Or set up a cron job for periodic runs
# Example: Run daily at 2 AM
0 2 * * * cd /path/to/renovate && docker compose run --rm renovate
```
## Configuration
### Environment Variables
Key environment variables in `.env`:
| Variable | Description | Default |
| ----------------------- | ----------------------- | -------------- |
| `RENOVATE_VERSION` | Renovate image version | `42.85.4-full` |
| `RENOVATE_PLATFORM` | Platform type | `github` |
| `RENOVATE_TOKEN` | Authentication token | **(required)** |
| `RENOVATE_REPOSITORIES` | Repositories to process | `''` |
| `RENOVATE_ONBOARDING` | Create onboarding PR | `true` |
| `RENOVATE_DRY_RUN` | Dry run mode | `false` |
| `RENOVATE_LOG_LEVEL` | Log level | `info` |
### Advanced Configuration
For advanced configuration, edit `config.js`:
```javascript
module.exports = {
platform: 'github',
repositories: ['myorg/repo1', 'myorg/repo2'],
// Schedule (cron format)
schedule: ['before 5am on monday'],
// Auto-merge settings
automerge: true,
automergeType: 'pr',
// Package rules
packageRules: [
{
matchUpdateTypes: ['minor', 'patch'],
automerge: true,
},
],
};
```
## Usage Examples
### Run on Specific Repositories
```bash
# Using environment variable
RENOVATE_REPOSITORIES=myorg/repo1,myorg/repo2 docker compose run --rm renovate
# Using config.js - edit the file first
docker compose run --rm renovate
```
### Dry Run Mode
Test configuration without creating actual PRs:
```bash
RENOVATE_DRY_RUN=full docker compose run --rm renovate
```
### Debug Mode
Enable detailed logging for troubleshooting:
```bash
RENOVATE_LOG_LEVEL=debug docker compose run --rm renovate
```
### Scheduled Execution
Create a systemd timer or cron job:
```bash
# Cron example (run daily at 2 AM)
0 2 * * * cd /path/to/renovate && docker compose run --rm renovate >> /var/log/renovate.log 2>&1
```
## How It Works
1. **Onboarding**: On first run, Renovate creates an onboarding PR with a `renovate.json` configuration file
2. **Scanning**: Renovate scans your repository for dependency files (package.json, requirements.txt, Dockerfile, etc.)
3. **Detection**: Checks for available updates across all detected dependencies
4. **PRs**: Creates pull requests for updates based on your configuration
5. **Scheduling**: Can be configured to run on a schedule (daily, weekly, etc.)
## Repository Configuration
After onboarding, configure Renovate behavior in your repository's `renovate.json`:
```json
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:base"],
"schedule": ["after 10pm every weekday", "before 5am every weekday", "every weekend"],
"packageRules": [
{
"matchUpdateTypes": ["minor", "patch"],
"automerge": true
}
]
}
```
## Supported Platforms
- GitHub (github.com and Enterprise Server)
- GitLab (gitlab.com and Self-Managed)
- Gitea
- Bitbucket Cloud and Server
- Azure DevOps
- And more...
## Supported Languages & Managers
Renovate supports 100+ package managers including:
- **JavaScript/Node.js**: npm, yarn, pnpm
- **Python**: pip, poetry, pipenv
- **Go**: go modules
- **Java**: maven, gradle
- **PHP**: composer
- **Ruby**: bundler
- **Rust**: cargo
- **Docker**: Dockerfile, docker-compose
- And many more...
## Security
- Runs as non-root user (configurable via `PUID`/`PGID`)
- Minimal capabilities with security hardening
- Token-based authentication (never expose tokens in logs)
- Support for vulnerability scanning and security updates
## Resources
Resource limits can be adjusted in `.env`:
- **CPU**: 2.0 cores limit, 0.5 cores reserved
- **Memory**: 2GB limit, 512MB reserved
## Troubleshooting
### No repositories found
Ensure `RENOVATE_TOKEN` has proper permissions and `RENOVATE_REPOSITORIES` is set correctly.
### Authentication errors
Verify token scopes:
- GitHub: `repo`, `workflow`
- GitLab: `api`, `write_repository`
### Rate limiting
Configure rate limits in `config.js`:
```javascript
prConcurrentLimit: 10,
prHourlyLimit: 2,
```
## Documentation
- Official Documentation: <https://docs.renovatebot.com/>
- Configuration Options: <https://docs.renovatebot.com/configuration-options/>
- GitHub Repository: <https://github.com/renovatebot/renovate>
## License
Renovate is licensed under the AGPL-3.0 license. See the [Renovate repository](https://github.com/renovatebot/renovate) for details.
## Notes
- Renovate is designed to run as a scheduled job, not a continuous service
- First run will create an onboarding PR in each repository
- Consider setting up a cron job or CI/CD pipeline for regular execution
- Monitor logs to ensure updates are being processed correctly