/pastamaker

pastamaker is a Github App to automatically manage Pull Requests "branch update" and "merge"

Primary LanguagePythonApache License 2.0Apache-2.0

pastamaker

Build Status

pastamaker is a Github App to automatically manage Pull Requests "branch update" and "merge" when this one have 2 reviewer approvals

It's currently used by gnocchixyz projects, the app name is 'pastamaker'.

Github App Settings

You should obviously replace https://<app-name>.herokuapp.com by the url where you host the application.

General

  • Homepage URL: https://<app-name>.herokuapp.com
  • User authorization callback URL: https://<app-name>.herokuapp.com/auth
  • Setup URL: None
  • Webhook URL: https://<app-name>.herokuapp.com/event
  • Webhook secret: <webhook_secret>
  • Generate the private key: # Click on the button #

Pick the ID on the right, you will need it later.

Permissions

Commit statuses - ReadWrite

  [x] Status

Pull requests - ReadWrite

  [x] Pull request
  [x] Pull request review
  [x] Pull request review comment

Repository contents - ReadWrite

  No webook

Heroku Setup

heroku apps:create <app-name>
heroku addons:create redistogo:nano
heroku addons:create scheduler:standard

heroku config:set -a <app-name> \
    PASTAMAKER_INTEGRATION_ID=XXXX \
    PASTAMAKER_WEBHOOK_SECRET="<webhook_secret>" \
    PASTAMAKER_PRIVATE_KEY="$(cat <path to the private key>)" \
    PASTAMAKER_BASE_URL="https://<app-name>.herokuapp.com" \
    PASTAMAKER_WEBHACK_USERNAME="<app-name>-bot" \
    PASTAMAKER_WEBHACK_PASSWORD="<password>"

git push -f heroku master

heroku ps:scale worker=1

heroku addons:open scheduler:standard
# trigger refresh manually or to configure the scheduler
heroku run python pastamaker/refresher.py

Dashboard

Pastamaker offers a dashboard that you can access using a Web browser. Just point to the URL where your WSGI service runs.

dashboard.jpg

Github Projects Branch protections setuped by pastamaker

{
    'required_pull_request_reviews': {
        "dismiss_stale_reviews": True,
        "require_core_owner_reviews": True,
    },
    'required_status_checks': {
        'strict': True,
        'contexts': ['continuous-integration/travis-ci'],
    },
    'enforce_admins': {
        "enabled": True
    }
}