Skip to main content
Version: v4

Configuration

info

If you have selected the option Only select repositories during the installation you don't need to follow this guide.

Reviewpad will automatically create a pull request in the select repositories with the configuration file.

You will need to merge the pull requests to start using Reviewpad.

Now that you have installed Reviewpad it's time to configure it.

The Reviewpad configuration is a YAML file that defines the workflows that automate your pull request process.

In this example, we will add a configuration with some of the best practices for pull request reviews.

Add reviewpad.yml to the root of your repository

caution

Please note that you will need to add a reviewpad.yml file to each repository where you wish to use Reviewpad.

Reviewpad will look for a reviewpad.yml file in the root of your repository and follow the workflows defined in it.

Create a file called reviewpad.yml in the root of your repository and add the following content:

reviewpad.yml
# This file is used to configure Reviewpad.
# The configuration is a proposal to help you get started.
# You can use it as a starting point and customize it to your needs.
# For more details see https://docs.reviewpad.com/guides/syntax.

# Define the list of labels to be used by Reviewpad.
# For more details see https://docs.reviewpad.com/guides/syntax#label.
labels:
small:
description: Pull request is small
color: "#76dbbe"
medium:
description: Pull request is medium
color: "#2986cc"
large:
description: Pull request is large
color: "#c90076"

# Define the list of workflows to be run by Reviewpad.
# A workflow is a list of actions that will be executed based on the defined rules.
# For more details see https://docs.reviewpad.com/guides/syntax#workflow.
workflows:
# This workflow praises contributors on their pull request contributions.
# This helps contributors feel appreciated.
- name: praise-contributors-on-milestones
description: Praise contributors based on their contributions
always-run: true
if:
# Praise contributors on their first pull request.
- rule: $pullRequestCountBy($author()) == 1
extra-actions:
- $commentOnce($sprintf("Thank you @%s for this first contribution!", [$author()]))
# Praise contributors on their 100th pull request.
- rule: $pullRequestCountBy($author()) == 100
extra-actions:
- $commentOnce($sprintf("Way to go 🎉 This is your 100th pull request!", [$author()]))

# This workflow validates that pull requests follow the conventional commits specification.
# This helps developers automatically generate changelogs.
# For more details, see https://www.conventionalcommits.org/en/v1.0.0/.
- name: check-conventional-commits
description: Validate that pull requests follow the conventional commits
always-run: true
if:
- rule: $isDraft() == false
then:
# Check commits messages against the conventional commits specification
- $commitLint()
# Check pull request title against the conventional commits specification.
- $titleLint()

# This workflow validates best practices for pull request management.
# This helps developers follow best practices.
- name: best-practices
description: Validate best practices for pull request management
always-run: true
if:
# Warn pull requests that do not have an associated GitHub issue.
- rule: $hasLinkedIssues() == false
extra-actions:
- $warn("Please link an issue to the pull request")
# Warn pull requests if their description is empty.
- rule: $description() == ""
extra-actions:
- $warn("Please provide a description for the pull request")
# Warn pull request do not have a clean linear history.
- rule: $hasLinearHistory() == false
extra-actions:
- $warn("Please rebase your pull request on the latest changes")

# This workflow labels pull requests based on the total number of lines changed.
# This helps pick pull requests based on their size and to incentivize small pull requests.
- name: size-labelling
description: Label pull request based on the number of lines changed
always-run: true
if:
- rule: $size() < 100
extra-actions:
- $removeLabels(["medium", "large"])
- $addLabel("small")
- rule: $size() >= 100 && $size() < 300
extra-actions:
- $removeLabels(["small", "large"])
- $addLabel("medium")
- rule: $size() >= 300
extra-actions:
- $removeLabels(["small", "medium"])
- $addLabel("large")

# This workflow assigns a random reviewer to pull requests.
# This helps guarantee that most pull requests are reviewed by at least one person.
- name: reviewer-assignment
description: Assign a reviewer to pull requests
always-run: true
if:
# Automatically assign a random reviewer when the pull request is ready for review;
- rule: $isDraft() == false
extra-actions:
- $assignRandomReviewer()

# This workflow signals pull requests waiting for reviews.
# This helps guarantee that pull requests are reviewed and approved by at least one person.
- name: check-approvals
description: Check that pull requests have the required number of approvals
always-run: true
if:
# Label pull requests with `waiting-for-review` if there are no approvals;
- rule: $isDraft() == false && $approvalsCount() < 1
extra-actions:
- $addLabel("waiting-for-review")
- rule: $isDraft() == false && $approvalsCount() > 0
extra-actions:
- $removeLabel("waiting-for-review")

# This workflow labels pull requests based on the pull request change type.
# This helps pick pull requests based on their change type.
- name: change-type-labelling
description: Label pull requests based on the type of changes
always-run: true
if:
# Label pull requests with `docs` if they only modify Markdown or txt files.
- rule: $hasFileExtensions([".md", ".txt"])
extra-actions:
- $addLabel("docs")
# Label pull requests with `infra` if they modify Terraform files.
- rule: $hasFileExtensions([".tf"])
extra-actions:
- $addLabel("infra")
# Label pull requests with `dependencies` if they only modify `package.json` and `package.lock` files.
- rule: $hasFileExtensions(["package.json", "package-lock.json"])
extra-actions:
- $addLabel("dependencies")

# This workflow validates that pull requests do not contain changes to the license.
# This helps avoid unwanted license modifications.
- name: license-validation
description: Validate that licenses are not modified
always-run: true
if:
# Fail Reviewpad check on pull requests that modify any LICENSE;
- rule: $hasFilePattern("**/LICENSE*")
extra-actions:
- $fail("License files cannot be modified")

Reviewpad Installation - Step 3

That's it! 🎉

Reviewpad will run on every pull request and follow the workflows defined in the reviewpad.yml configuration file.

👉 Don't forget to commit and push the reviewpad.yml file to your repository.

Next steps

Now that you have configured Reviewpad you can start using it to automate your pull request process.

Have a look at the use cases to see how Reviewpad can help you.

Terms and Conditions

By running Reviewpad, you are agreeing with Reviewpad's Terms and Conditions.