This is the new PullApprove v3! Completely redesigned and rebuilt. You can read more about it here or log in to v2 here.

Overview

PullApprove is configured by a .pullapprove.yml file, which is placed in the root of your repo.

The basic idea is to organize your reviews into review groups. Groups might be split by language or specific areas of your codebase, or instead might be different types of review that need to be done (e.g. "security" or "design").

However you decide to organize your groups, you can use the group conditions to determine when each group is asked to review a PR. When the conditions are met, the group is considered active.

When it is your turn to provide a review, we'll add you as a "requested reviewer" in GitHub. To review the PR, use the interface on github.com to approve or request changes.

A PR is considered approved when all active groups have submitted the required number of approvals. When this happens, we'll send a "success" status check to GitHub, which you can make a requirement of any protected branches.

Not using version 3 yet? It's easy to migrate! Or you can find the old version 2 docs here.
version: 3

extends: https://api.github.com/repos/example/pullapprove-config/contents/.pullapprove.yml

pullapprove_conditions:
- "'WIP' not in title"
- "base.ref == 'master'"
- "'hotfix' not in labels"
- "'*travis*' in statuses.succeeded"

notifications:
- when: pull_request.opened
  # only need to send this to external-contributors
  if: "author_assosciation in ['FIRST_TIMER', 'FIRST_TIME_CONTRIBUTOR', 'CONTRIBUTOR']"
  comment: >
    Hey @{{ author }}, please make sure your tests pass and you have looked everything over. Then we will review.

    Thanks for the PR!
- when: pullapprove.approved
  comment: "The review is completed. @exampleuser, please merge this in when ready."

groups:
  code:
    reviewers:
      users:
      - username
      teams:
      - org/team
    reviews:
      required: 2  # number of approvals required from this group
      request: 1  # number of review requests sent at a time
      request_order: random  # "random" or "given"

  database:
    conditions:
    - "'*migrations*' in files"  # only review if "migrations" files have been touched
    reviewers:
      teams:
      - database

  signoff:
    conditions:
    # only asked to review once the other 2 groups are finished (or not applicable)
    - "'code' in groups.passing"
    - "'database' in groups.passing"
    reviewers:
      teams:
      - admins