A tool for generating review-rot dashboard for the Konflux Release team, published at: https://redhat-appstudio.github.io/release-review-rot/
This repository tracks outstanding code reviews and pull requests across multiple Konflux repositories to ensure release-related work gets proper attention. The "review-rot" system helps prevent reviews from going stale and ensures nothing falls through the cracks during the release process.
- Monitors 9+ GitHub repositories in the Konflux ecosystem
- Tracks specific team members and their review assignments
- Filters for core release repositories (release-service, release-service-utils, release-service-catalog, internal-services)
- Generates JSON data for the dashboard website
- Publishes automatically to GitHub Pages
- review-rot tool installed
- GitHub Personal Access Token with repo access
jqcommand-line JSON processor- Bash shell
-
Install review-rot:
pip install reviewrot
-
Set up GitHub token:
export GITHUB_TOKEN="your_github_personal_access_token"
Or add to your shell profile (
~/.bashrc,~/.zshrc):echo 'export GITHUB_TOKEN="your_token_here"' >> ~/.zshrc
-
Install jq (if not already installed):
# macOS brew install jq # Ubuntu/Debian sudo apt-get install jq # RHEL/CentOS sudo yum install jq
Run the complete pipeline to generate filtered review data:
# Generate raw review data and filter it
reviewrot -c config.yaml | ./filter-data.sh > filtered-reviews.jsonTest the filtering logic with sample data:
# Test with existing data
cat sample-data.json | ./filter-data.shThe main configuration file defines:
- Output format: JSON for web consumption
- GitHub repositories: List of repos to monitor
- Authentication: Uses
GITHUB_TOKENenvironment variable
arguments:
format: json
git_services:
- host: github.com
repos:
- konflux-ci/release-service
- konflux-ci/release-service-utils
# ... more repos
token: "${GITHUB_TOKEN}"
type: githubTo monitor additional repositories, add them to the repos list in config.yaml:
git_services:
- host: github.com
repos:
- konflux-ci/existing-repo
- konflux-ci/new-repo-to-monitor # Add new repo hereThe following team members are tracked for review assignments:
hbhatijohnbierenmmalinatheflockersdavidmogarFilipNikolovskiseanconroy2021Paul123111elenagermanred-hat-konfluxjinqi7
To add a new team member to tracking:
- Edit
filter-data.sh - Add the GitHub username to the
authorsarray:authors='[ "hbhati", "johnbieren", "new-team-member", # Add here # ... existing members ]'
- Test the change locally
- Commit and push - GitHub Actions will automatically update the dashboard
To remove a team member:
- Remove their username from the
authorsarray infilter-data.sh - Test and commit the change
The filter-data.sh script filters reviews based on two criteria:
- Team Member Reviews: All PRs from tracked team members (any repository)
- Core Release Repository PRs: All PRs from anyone in critical release repositories
# The filter keeps reviews that match ANY of these conditions:
jq '[
.[] | select(
([.user] | inside($authors)) or # All PRs from team members
(.url | contains("release-service-catalog")) or # All PRs from catalog repo
(.url | contains("release-service-utils")) or # All PRs from utils repo
(.url | contains("/release-service/")) or # All PRs from main release service
(.url | contains("internal-services")) # All PRs from internal services
)
]'| Repository | Purpose |
|---|---|
konflux-ci/release-service |
Main release service |
konflux-ci/release-service-utils |
Release utilities |
konflux-ci/internal-services |
Internal services |
konflux-ci/release-service-catalog |
Release catalog |
konflux-ci/e2e-tests |
End-to-end tests |
konflux-ci/build-definitions |
Build definitions |
konflux-ci/build-trusted-artifacts |
Trusted artifacts |
konflux-ci/docs |
Documentation |
redhat-appstudio/infra-deployments |
Infrastructure deployments |
-
Generate sample data:
reviewrot -c config.yaml > sample-output.json -
Test your filter:
cat sample-output.json | ./filter-data.sh | jq '.'
-
Validate output:
# Check that output is valid JSON cat sample-output.json | ./filter-data.sh | jq 'length'
Enable verbose output to troubleshoot issues:
# Debug the shell script
bash -x ./filter-data.sh < sample-data.json
# Validate jq syntax
echo '[]' | jq --argjson authors '["test"]' '[.[] | select(([.user] | inside($authors)))]'- GitHub Actions automatically run on schedule and commits
- Results published to GitHub Pages at the URL above
- No manual intervention required for regular updates
-
Missing GITHUB_TOKEN:
Error: GitHub API rate limit exceededSolution: Set your GitHub token environment variable
-
jq command not found:
./filter-data.sh: line X: jq: command not foundSolution: Install jq using your package manager
-
Invalid JSON output: Solution: Check that reviewrot is producing valid JSON with
reviewrot -c config.yaml | jq '.'
- Check the review-rot documentation
- Review GitHub Actions logs for automation issues
- Test changes locally before committing
- Fork the repository
- Make changes locally and test thoroughly
- Update documentation if needed
- Submit pull request with clear description
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.