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
jq
command-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.json
Test the filtering logic with sample data:
# Test with existing data
cat sample-data.json | ./filter-data.sh
The main configuration file defines:
- Output format: JSON for web consumption
- GitHub repositories: List of repos to monitor
- Authentication: Uses
GITHUB_TOKEN
environment 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: github
To 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 here
The following team members are tracked for review assignments:
hbhati
johnbieren
mmalina
theflockers
davidmogar
FilipNikolovski
seanconroy2021
Paul123111
elenagerman
red-hat-konflux
jinqi7
To add a new team member to tracking:
- Edit
filter-data.sh
- Add the GitHub username to the
authors
array: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
authors
array 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 exceeded
Solution: Set your GitHub token environment variable
-
jq command not found:
./filter-data.sh: line X: jq: command not found
Solution: 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.