This tool automates distribution detection, configuration, patch application, and kernel build/test workflows across supported Linux distributions.
- Automatic detection of target distribution
- Distro-specific build scripts
- Patch management and Pre-PR CI integration
- Automated kernel boot testing on remote VMs
- Unified interface via
maketargets - Clean separation of logs, outputs, and patches
- Web dashboard with live logs, job history and an embedded terminal
- OpenAnolis
- OpenEuler
- OpenCloud (
🚧 Implementing...)
pip3 install --user -r web/requirements.txt
python3 web/server.py # then open http://server-ip:5000- Configure, build and test from the browser
- Live log streaming, job history that survives a restart, light/dark themes
- Everything is served locally, so it also works with no internet access
The server has no authentication and listens on every interface, and its terminal tab is a shell on the build machine. Run it only on a network you trust, or bind it to localhost and use an SSH tunnel:
python3 web/server.py --host 127.0.0.1thenssh -L 5000:127.0.0.1:5000 you@buildhost.
- Install Prerequisite packages (Check in DOCUMENT.md)
# The KABI tooling and the openEuler spec files are submodules, so clone
# with --recurse-submodules; check_kapi, check_kabi and rpm_build all fail
# with confusing errors if these directories are empty.
git clone --recurse-submodules https://github.com/SelamHemanth/pre-pr-ci.git
cd pre-pr-ci
# Already cloned without them?
git submodule update --init --recursivemake config- Configure target distributionmake prepare- Get the patches ready to testmake ready- Say whether the patches are ready to testmake test- Run distro-specific testsmake list-tests- List available tests for configured distromake anolis-test=<name>- Run specific OpenAnolis testmake euler-test=<name>- Run specific openEuler testmake clean- Remove logs/ and outputs/make reset- Reset git repo to saved HEADmake distclean- Remove all artifacts and configsmake update-tests- Change which tests are enabledmake update- Pull a newer version of this tool
Run the web interface as a system service:
sudo ./service.sh install- Install as systemd servicesudo ./service.sh start- Start servicesudo ./service.sh status- Check statussudo ./service.sh logs- View logssudo ./service.sh stop- Stop service
For detailed documentation, please refer to: DOCUMENT.md
Contributions are welcome! To contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Commit your changes (
git commit -am 'Add new feature') - Push to the branch (
git push origin feature/your-feature) - Open a Pull Request
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
Hemanth Selam
- GitHub: @SelamHemanth
- Email: Hemanth.Selam@amd.com