The Wayback Machine - https://web.archive.org/web/20210101135717/https://github.com/Genymobile/gm_pr
Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
bot
 
 
 
 
 
 
 
 
web
 
 
 
 
 
 
 
 
 
 
 
 

README.md

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

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 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 repos

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:

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!!

About

A multi project Github pull request viewer

Resources

License

Packages

No packages published
You can’t perform that action at this time.