# gm_pr **Repository Path**: mirrors_Genymobile/gm_pr ## Basic Information - **Project Name**: gm_pr - **Description**: A multi project Github pull request viewer - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-08 - **Last Updated**: 2026-06-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gm_pr: A multi project GitHub pull request viewer If your project is spread over multiple git repositories, it can be hard to keep track of all the open pull requests. The gm_pr project gives you a simple web page where you can see all the open pull requests with the number of reviews, labels, milestones, etc. ![screenshot](screenshot.png) As a bonus, we also have a Slack bot :-) ## Installation The recommended method to run gm_pr is to use the docker image. A [Dockerfile](Dockerfile) is available. Building and running the image can be done in a few lines: ``` docker build -t gm_pr . docker volume create --name gmpr # mount the volume in /var/www/gm_pr/rw for log and sqlite db docker run -v gmpr:/var/www/gm_pr/rw -e GM_PR_ORG=MyOrg -e GM_PR_GITHUB_OAUTHTOKEN=xxxx -e GM_PR_ADMIN_LOGIN="admin" -e GM_PR_ADMIN_PASSWORD="admin" --name gm_pr -p 8000:80 -d gm_pr ``` * GM_PR_ORG: Your GitHub organisation * GM_PR_GITHUB_OAUTHTOKEN: oauth token for your GitHub account, see https://github.com/settings/tokens * GM_PR_ADMIN_LOGIN and GM_PR_ADMIN_PASSWORD configure a login/password for gm_pr administration Now, you can simply point your browser to http://localhost:8000. ## Configuration The prefered way to configure gm_pr is to set environment variables for docker. Alternatively, you can modify 2 files: * gm_pr/settings.py: this is the standard Django configuration file * gm_pr/settings_projects.py: configure your GitHub and Slack organization and authentication here. ### Django configuration Refer to the Django project if you want to change the configuration. Normally you should only need to adjust a few settings: **ALLOWED_HOSTS** list the hosts allowed to connect to this app. Use "*" to allow everything. This is the first thing to check if you see a "Bad Request (400)" This parameter is configurable with environment variable `GM_PR_ALLOWED_HOSTS` **STATIC_URL** Add the full URL to your static directory ### Gm_pr configuration Open **gm_pr/settings_projects.py** and read the comments. You should be able to customize your installation by setting environment variables. ### add projects To add projects, visit the "admin/" page. Add a *project* then add all the related GitHub *repo*s You can also have some initial projects when starting docker with the environment variable `GM_PR_INITIAL_PROJECTS` eg: `GM_PR_INITIAL_PROJECTS="Material design repos=material-design-lite,material-design-icons;GCM repos=gcm,go-gcm"` ### Slack configuration You can see your pull requests from Slack. You need to add a "slash command" in Slack settings: * Open https://my.slack.com/services/new/slash-commands * Choose a command name, for eg: "/pr" * For the URL, append "/bot/" to your gm_pr URL. * In order to make things easy with the Django CSRF protection, you have to choose the GET method. * Copy the token and add it in **settings_project.py** (**SLACK_TOKEN**) * click on "Save Integration" Then you need to add an incoming-webhook to let the bot send messages to Slack: * Open https://my.slack.com/services/new/incoming-webhook * Choose a channel (the bot will be able to override it, so it doesn't really matter what you enter) * Copy the webhook URL in **setting_project.py** (**SLACK_URL**) Now, go to the channel related to your project and type "/pr". After a few seconds the list of pull requests should appear in your channel. ### Environment variables * `GM_PR_ALLOWED_HOSTS`: list of host allowed to connect on the app (default "*") * `GM_PR_GITHUB_OAUTHTOKEN`: GitHub oauth token * `GM_PR_ORG`: GitHub organisation * `GM_PR_LAST_ACTIVITY_FILTER`: Info in the activity column (see settings_project.py) * `GM_PR_WEB_URL`: used by Slack bot, link to the web version * `GM_PR_SLACK_TOKEN`: Slack token * `GM_PR_SLACK_URL`: Slack hook URL * `GM_PR_OLD_PERIOD`: number of days before a PR is marked as old * `GM_PR_ADMIN_LOGIN`: Django admin login * `GM_PR_ADMIN_EMAIL`: Django admin email * `GM_PR_ADMIN_PASSWORD`: Django admin password * `GM_PR_INITIAL_PROJECTS`: comma-separated initial projects "project1=repo1,repo2;project2=repo3" * `GM_PR_DEFAULT_COLUMNS`: comma-separated list of columns to display (see settings_project.py) ## Hacking You need to install Django for Python 3, Celery and RabbitMQ. Here is the command line for macOS, using Homebrew: ``` brew doctor brew update brew install python3 rabbitmq-server pip3 install -r requirements/commons.txt ``` On Debian-like systems: ``` sudo apt-get install python3 celeryd rabbitmq-server sudo pip3 install -r requirements/commons.txt ``` Create a user and vhost for RabbitMQ: ``` sudo rabbitmqctl add_user gm_pr gm_pr sudo rabbitmqctl add_vhost gm_pr sudo rabbitmqctl set_permissions -p gm_pr gm_pr ".*" ".*" ".*" ``` Run the following commands to start the server: ``` python3 manage.py migrate env GM_PR_ORG=MyOrg GM_PR_ALLOWED_HOSTS="10.0.0.2,10.0.0.3" python3 manage.py runserver ``` Run the following command in a new terminal: ``` env GM_PR_GITHUB_OAUTHTOKEN=xxxx python3 manage.py celeryd ``` Open the web page at http://localhost:8000 # About gm_pr Gm_pr is an open-source project distributed under the Apache license version 2 If you like this project, click on the star button on GitHub :-) Feel free to send us issues, and of course PRs!!