Some checks failed
Tests / Build and Push CICD Base Image (push) Successful in 2h48m44s
Tests / Build and Push CICD Complete Image (push) Failing after 22m47s
Tests / Trailing Whitespace Check (push) Has been skipped
Tests / End of File Check (push) Has been skipped
Tests / YAML Syntax Check (push) Has been skipped
Tests / TOML Syntax Check (push) Has been skipped
Tests / Mixed Line Ending Check (push) Has been skipped
Tests / TOML Formatting Check (push) Has been skipped
Tests / Ruff Linting (push) Has been skipped
Tests / Ruff Format Check (push) Has been skipped
Tests / Pyright Type Check (push) Has been skipped
Tests / Darglint Docstring Check (push) Has been skipped
Tests / ESLint Check (push) Has been skipped
Tests / No Docstring Types Check (push) Has been skipped
Tests / Prettier Format Check (push) Has been skipped
Tests / TypeScript Type Check (push) Has been skipped
Tests / TSDoc Lint Check (push) Has been skipped
Tests / Backend Tests (push) Has been skipped
Tests / Frontend Tests (push) Has been skipped
Tests / Backend Doctests (push) Has been skipped
Tests / Integration Tests (push) Has been skipped
Tests / End-to-End Tests (push) Has been skipped
271 lines
7.4 KiB
Markdown
271 lines
7.4 KiB
Markdown
# Renovate Bot Setup Guide
|
|
|
|
## Overview
|
|
|
|
Renovate is an automated dependency update tool that creates pull requests to keep your project dependencies up to date. This guide covers setting up Renovate for the plex-playlist project with optimal configuration.
|
|
|
|
## Setup Options
|
|
|
|
### Option 1: GitHub App (Recommended for GitHub)
|
|
|
|
1. **Install Renovate App**:
|
|
- Go to [Renovate GitHub App](https://github.com/apps/renovate)
|
|
- Click "Install" and select your repository
|
|
- Choose repository access (single repo or organization-wide)
|
|
|
|
2. **Configure Repository Access**:
|
|
- Select the `plex-playlist` repository
|
|
- Grant necessary permissions (read/write to repository, pull requests, issues)
|
|
|
|
3. **Initial Configuration**:
|
|
- Renovate will automatically detect the `renovate.json` file
|
|
- Creates an onboarding PR to explain the configuration
|
|
- Review and merge the onboarding PR to activate
|
|
|
|
### Option 2: Self-Hosted (For Gitea/Custom Git Servers)
|
|
|
|
Since your project uses `dogar.darkhelm.org` (Gitea), you'll need to run Renovate as a service:
|
|
|
|
#### Docker-based Self-Hosted Setup
|
|
|
|
1. **Create Renovate Configuration**:
|
|
|
|
```bash
|
|
# Create renovate directory
|
|
mkdir -p ~/.config/renovate
|
|
```
|
|
|
|
2. **Create Renovate Bot Token**:
|
|
- **For Organization Repositories**: See detailed guide → **[Gitea Token Setup](GITEA_TOKEN_SETUP.md)**
|
|
- Required permissions: `repository` (Read/Write), `issue` (Read/Write), `organization` (Read), `user` (Read)
|
|
- Save token securely for next step
|
|
|
|
3. **Create Environment Configuration**:
|
|
|
|
```bash
|
|
# ~/.config/renovate/config.js
|
|
module.exports = {
|
|
platform: 'gitea',
|
|
endpoint: 'https://dogar.darkhelm.org/api/v1',
|
|
token: process.env.RENOVATE_TOKEN,
|
|
gitAuthor: 'Renovate Bot <renovate@darkhelm.org>',
|
|
repositories: ['DarkHelm.org/plex-playlist'],
|
|
onboarding: false, // Skip onboarding PR
|
|
requireConfig: 'required' // Use existing renovate.json
|
|
};
|
|
```
|
|
|
|
4. **Run with Docker**:
|
|
|
|
```bash
|
|
# Run Renovate Bot
|
|
docker run --rm \
|
|
-e RENOVATE_TOKEN="your_gitea_token_here" \
|
|
-v ~/.config/renovate/config.js:/usr/src/app/config.js \
|
|
renovate/renovate:latest
|
|
```
|
|
|
|
#### Scheduled Automation
|
|
|
|
Create a systemd timer or cron job to run Renovate periodically:
|
|
|
|
```bash
|
|
# /etc/cron.d/renovate-bot
|
|
# Run Renovate every Monday at 8 AM
|
|
0 8 * * 1 root docker run --rm -e RENOVATE_TOKEN="$RENOVATE_TOKEN" -v ~/.config/renovate/config.js:/usr/src/app/config.js renovate/renovate:latest
|
|
```
|
|
|
|
### Option 3: CI/CD Integration
|
|
|
|
Add Renovate to your existing Gitea Actions workflow:
|
|
|
|
```yaml
|
|
# .gitea/workflows/renovate.yml
|
|
name: Renovate
|
|
on:
|
|
schedule:
|
|
- cron: '0 8 * * 1' # Monday 8 AM
|
|
workflow_dispatch: # Manual trigger
|
|
|
|
jobs:
|
|
renovate:
|
|
runs-on: ubuntu-act
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Run Renovate
|
|
uses: renovatebot/github-action@v40.3.2
|
|
with:
|
|
configurationFile: renovate.json
|
|
token: ${{ secrets.RENOVATE_TOKEN }}
|
|
env:
|
|
RENOVATE_PLATFORM: gitea
|
|
RENOVATE_ENDPOINT: https://dogar.darkhelm.org/api/v1
|
|
```
|
|
|
|
## Configuration Explanation
|
|
|
|
### Key Features of Our Configuration
|
|
|
|
1. **Smart Scheduling**:
|
|
- Regular updates: Weekday mornings before 9 AM
|
|
- Security updates: Any time
|
|
- Grouped updates: Monday mornings
|
|
|
|
2. **Automerge Strategy**:
|
|
- **Auto**: Minor/patch updates for trusted packages (types, linting tools)
|
|
- **Manual**: Major updates, Docker base images, security fixes
|
|
|
|
3. **Grouping**:
|
|
- **Python dev tools**: ruff, pytest, mypy, etc.
|
|
- **Frontend dev tools**: eslint, prettier, typescript, etc.
|
|
- **Docker base images**: ubuntu, python, node versions
|
|
|
|
4. **Custom Managers**:
|
|
- Detects Python/Node versions in Dockerfiles
|
|
- Updates base image versions automatically
|
|
|
|
### Package Manager Support
|
|
|
|
Our configuration handles:
|
|
|
|
- **Python (uv)**: `backend/pyproject.toml`
|
|
- **Node.js (Yarn)**: `frontend/package.json` + `frontend/yarn.lock`
|
|
- **Docker**: All `Dockerfile.*` files
|
|
- **GitHub Actions**: `.gitea/workflows/*.yml` (if using actions)
|
|
|
|
## Testing the Configuration
|
|
|
|
### 1. Validate Configuration
|
|
|
|
```bash
|
|
# Install Renovate CLI for testing
|
|
npm install -g renovate
|
|
|
|
# Validate configuration
|
|
renovate-config-validator renovate.json
|
|
|
|
# Dry run (shows what would be updated)
|
|
renovate --dry-run --log-level=debug DarkHelm.org/plex-playlist
|
|
```
|
|
|
|
### 2. Expected Behavior
|
|
|
|
Once active, Renovate will:
|
|
|
|
1. **Scan Dependencies**: Daily check for updates
|
|
2. **Create PRs**: Individual PRs for each update group
|
|
3. **Auto-merge**: Safe updates (minor/patch) merge automatically
|
|
4. **Security Alerts**: Immediate PRs for vulnerability fixes
|
|
5. **Dependency Dashboard**: Issue with update status overview
|
|
|
|
### 3. Integration with CI/CD
|
|
|
|
Renovate PRs will trigger your existing CI/CD pipeline:
|
|
- Build and test in Docker containers
|
|
- Run full quality gates (linting, type checking, tests)
|
|
- Only merge if all checks pass
|
|
|
|
## Monitoring and Maintenance
|
|
|
|
### Dashboard
|
|
|
|
Renovate creates a "Dependency Dashboard" issue showing:
|
|
- Pending updates
|
|
- Failed PRs
|
|
- Ignored dependencies
|
|
- Configuration errors
|
|
|
|
### Logs and Debugging
|
|
|
|
For self-hosted setup:
|
|
```bash
|
|
# Run with debug logging
|
|
docker run --rm \
|
|
-e LOG_LEVEL=debug \
|
|
-e RENOVATE_TOKEN="your_token" \
|
|
-v ~/.config/renovate/config.js:/usr/src/app/config.js \
|
|
renovate/renovate:latest
|
|
```
|
|
|
|
### Common Issues
|
|
|
|
1. **Node.js Version Compatibility**:
|
|
- Renovate 41+ requires Node.js 24.10.0+ or 22.13.0+
|
|
- Use `renovate@40.3.2` for older Node.js versions
|
|
- Our CI workflow automatically handles this
|
|
|
|
2. **Token Permissions**: Ensure Gitea token has repo write access
|
|
3. **Rate Limiting**: Adjust `prHourlyLimit` if hitting API limits
|
|
4. **Large Updates**: Major version updates may need manual review
|
|
5. **Docker Registry**: Ensure base image updates don't break builds
|
|
|
|
### Quick Validation
|
|
|
|
For basic JSON validation without installing Renovate:
|
|
```bash
|
|
# Quick syntax check (no Renovate installation needed)
|
|
./scripts/quick-renovate-check.sh
|
|
|
|
# Full validation (requires Renovate installation)
|
|
./scripts/validate-renovate.sh
|
|
```
|
|
|
|
## Security Considerations
|
|
|
|
1. **Token Security**: Store Renovate token in secrets management
|
|
2. **Branch Protection**: Ensure main branch requires PR reviews
|
|
3. **Automerge Limits**: Only automerge trusted, low-risk updates
|
|
4. **Vulnerability Alerts**: Enable immediate security update PRs
|
|
|
|
## Advanced Configuration
|
|
|
|
### Custom Rules Example
|
|
|
|
```json
|
|
{
|
|
"packageRules": [
|
|
{
|
|
"description": "Pin exact versions for critical packages",
|
|
"matchPackageNames": ["fastapi", "@types/node"],
|
|
"rangeStrategy": "pin"
|
|
},
|
|
{
|
|
"description": "Ignore beta/alpha releases",
|
|
"matchPackagePatterns": [".*"],
|
|
"ignoreUnstable": true
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Notification Integration
|
|
|
|
```json
|
|
{
|
|
"notifications": [
|
|
{
|
|
"platform": "slack",
|
|
"endpoint": "https://hooks.slack.com/services/...",
|
|
"channels": ["#dev-notifications"]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Next Steps
|
|
|
|
1. **Choose Setup Method**: GitHub App (if on GitHub) or self-hosted (for Gitea)
|
|
2. **Generate API Token**: Create token with appropriate permissions
|
|
3. **Test Configuration**: Run dry-run to verify setup
|
|
4. **Monitor First Updates**: Review initial PRs to ensure proper operation
|
|
5. **Adjust Settings**: Fine-tune automerge rules based on project needs
|
|
|
|
---
|
|
|
|
**Related Documentation**:
|
|
- [Renovate Official Docs](https://docs.renovatebot.com/)
|
|
- [Configuration Options](https://docs.renovatebot.com/configuration-options/)
|
|
- [Package Rules](https://docs.renovatebot.com/configuration-options/#packagerules)
|