From 8c6d27b0145b70fe6a6ecb04c79c4950fcff15e1 Mon Sep 17 00:00:00 2001 From: "reviewpad-playground[bot]" <120566302+reviewpad-playground[bot]@users.noreply.github.com> Date: Wed, 4 Jan 2023 14:47:38 +0000 Subject: [PATCH 1/3] feat: add reviewpad.yml file --- reviewpad.yml | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 reviewpad.yml diff --git a/reviewpad.yml b/reviewpad.yml new file mode 100644 index 0000000..8bf1d96 --- /dev/null +++ b/reviewpad.yml @@ -0,0 +1,143 @@ +# 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 version of Reviewpad to be used. +api-version: reviewpad.com/v3.x +# 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-labeling + 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") + + # 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") From a2ce8e04859e32774b36b41a9d300bdf21b84dca Mon Sep 17 00:00:00 2001 From: "reviewpad-playground[bot]" <120566302+reviewpad-playground[bot]@users.noreply.github.com> Date: Wed, 4 Jan 2023 14:47:50 +0000 Subject: [PATCH 2/3] chore: update reviewpad.yml configuration file --- reviewpad.yml | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/reviewpad.yml b/reviewpad.yml index 8bf1d96..8ab2371 100644 --- a/reviewpad.yml +++ b/reviewpad.yml @@ -22,21 +22,6 @@ labels: # 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/. From b3dac26924b60b44c5d1b84218b45da0a3e15b42 Mon Sep 17 00:00:00 2001 From: Zelalem Mekonen Date: Wed, 4 Jan 2023 17:48:53 +0300 Subject: [PATCH 3/3] Update reviewpad.yml --- reviewpad.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/reviewpad.yml b/reviewpad.yml index 8ab2371..d1526c4 100644 --- a/reviewpad.yml +++ b/reviewpad.yml @@ -1,8 +1,3 @@ -# 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 version of Reviewpad to be used. api-version: reviewpad.com/v3.x # Define the list of labels to be used by Reviewpad.