GithubHelp home page GithubHelp logo

eodmsabc / pull-request-stats Goto Github PK

View Code? Open in Web Editor NEW

This project forked from flowwer-dev/pull-request-stats

0.0 0.0 0.0 1012 KB

Github action to print relevant stats about Pull Request reviewers

License: MIT License

JavaScript 100.00%

pull-request-stats's Introduction

Pull Request Stats

CI GitHub Marketplace

Github action to print relevant stats about Pull Request reviewers.

The objective of this action is to:

  • Reduce the time taken to review the pull requests.
  • Encourage quality on reviews.
  • Help to decide which people to assign as reviewers.

Running this action will add a section at the bottom of your pull requests description:

Each reviewer has a link pointing to their historical behavior of each reviewer:

Or send the data to your favorite tools by using the integrations available:


Slack

MS Teams

Webhooks

Privacy

  • No repository data is collected, stored or distributed by this GitHub action. This action is state-less.
  • Charts data is send over the URL, and never stored or transmitted anywhere else.
  • Minimal data is send to Mixpanel in order to improve this action. However, you can opt-out using telemetry option.

Usage

Just add this action to one of your workflow files:

      - name: Run pull request stats
        uses: flowwer-dev/pull-request-stats@master

Action inputs

The possible inputs for this action are:

Parameter Description Default
token A Personal Access Token with repo permissions. Required to calculate stats for an organization or multiple repos. GITHUB_TOKEN
repositories A comma separated list of github repositories to calculate the stats, eg. username/repo1,username/repo2. When specifying other repo(s) it is mandatory to pass a Personal Access Token in the token parameter. Current repository
organization If you prefer, you may specify the name of your organization to calculate the stats across all of its repos. When specifying an organization it is mandatory to pass a Personal Access Token in the token parameter. null
period The length of the period used to calculate the stats, expressed in days. 30
limit The maximum number of rows to display in the table. A value of 0 means unlimited. 0
charts Whether to add a chart to the start or not. Possible values: true or false. false
disable-links If true, removes the links to the detailed charts. Possible values: true or false. false
sort-by The column used to sort the data. Possible values: REVIEWS, TIME, COMMENTS. REVIEWS
publish-as Where to publish the results. Possible values: as a COMMENT, on the pull request DESCRIPTION. COMMENT
telemetry Indicates if the action is allowed to send monitoring data to the developer. This data is minimal and helps me improve this action. This option is a premium feature reserved for sponsors. true
slack-webhook ๐Ÿ”ฅ New. A Slack webhook URL to post resulting stats. This option is a premium feature reserved for sponsors. See full documentation here. null
slack-channel The Slack channel where stats will be posted. Include the # character (eg. #mychannel). Required when a slack-webhook is configured. null
teams-webhook ๐Ÿ”ฅ New. A Microsoft Teams webhook URL to post resulting stats. This option is a premium feature reserved for sponsors. See full documentation here. null
webhook ๐Ÿ”ฅ New. A webhook URL to send the resulting stats as JSON (integrate with Zapier, IFTTT...). See full documentation here. null

Examples

Minimal config

Add this to the file .github/workflows/stats.yml in your repo:

name: Pull Request Stats

on:
  pull_request:
    types: [opened]

jobs:
  stats:
    runs-on: ubuntu-latest
    steps:
      - name: Run pull request stats
        uses: flowwer-dev/pull-request-stats@master

This config will:

  • Calculate the reviewer stats for the current repo in the lasts 30 days
  • Add links to the historial data
  • Sort results by the "total reviews" column by default

and print a table like this:

User Total reviews Median time to review Total comments
jartmez 37 22m 13
manuelmhtr 35 48m 96
ernestognw 25 1h 27m 63
javierbyte 12 30m 0
Phaze1D 4 34m 1

Visual config

Add this to the file .github/workflows/stats.yml:

name: Pull Request Stats

on:
  pull_request:
    types: [opened]

jobs:
  stats:
    runs-on: ubuntu-latest
    steps:
      - name: Run pull request stats
        uses: flowwer-dev/pull-request-stats@master
        with:
          token: ${{ secrets.ADD_A_PERSONAL_ACCESS_TOKEN }}
          organization: 'piedpiper'
          period: 7
          charts: true
          disable-links: true
          sort-by: 'COMMENTS'

This config will:

  • Calculate the reviewer stats for all the repos in the "piedpiper" organization in the lasts 7 days
  • Display charts for the metrics
  • Remove the links to detailed charts
  • Sort results by the "comments" column

and print a table like this:

User Total comments Total reviews Median time to review
manuelmhtr
๐Ÿฅ‡
12
โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€
8
โ–€โ–€โ–€โ–€
53m
jartmez
๐Ÿฅˆ
3
โ–€โ–€
4
โ–€โ–€
58m
JohanAlvarado
๐Ÿฅ‰
1
โ–€
2
โ–€
1d 16h 18m
โ–€โ–€โ–€โ–€โ–€โ–€
Estebes10
1
โ–€
1
19m
ernestognw
0
2
โ–€
2h 15m
Phaze1D
0
3
โ–€
1h 28m
javierbyte
0
1
21h 24m
โ–€โ–€โ–€

Stats

The stats are calculated as following:

  • Time to review: It is the time taken by a reviewer from the Pull Request publication or the last Commit push (whatever happens last) to the first time the pull request is reviewed.
  • Time to review: It is the median of the times to review of all Pull Requests reviewed by a person in the period.
  • Total reviews: It is the count of all Pull Requests reviewed by a person in the period.
  • Total comments: It is the count of all the comments while reviewing other user's Pull Requests in the period (comments in own PRs don't count).

Integrations ๐Ÿ”Œ

Check the guide for the tool you want to integrate:

Troubleshooting

The action is printing an empty table.
  1. Make sure the repositories have pull request reviews during the configured period.
  2. When specifying repositories or organization paramaters, a Personal Access Token is required in the token parameter.
  3. If providing a Personal Access Token, make sure it has the repo permission for the projects you want.
I'm a sponsor but still getting the error "...is a premium feature, available to sponsors".
  1. Check the sponsorship comes from the account that owns the configured repos (usually an organization).
  2. Make sure the sponsorship is configured as public, otherwhise the action cannot access the sponsorship information. If you prefer to keep it private, please reach me out to make it works for you that way ๐Ÿ˜‰.

Premium features โœจ

This action offers some premium features only for sponsors:

  • Disabling telemetry.
  • Slack integration.
  • Microsoft Teams integration.
  • Comming soon: Discord integration, web version.

No minimum amount is required for now. In the future, a minimum monthly sponsorship will be inforced to access premium features.

The minimum suggested sponsorship is $20 usd / month. Thanks for your support! ๐Ÿ’™

Used by

Used by hundreds of successful teams:


Sixt

Lululemon

Delivery H

JOKR

Lego

LOOP

Hatch

Zenfi

Trivago

Discovery

Addition

Fauna

CDC

Wecasa

Bolt

Republic

Author

@manuelmhtr
๐Ÿ‡ฒ๐Ÿ‡ฝ Guadalajara, MX

Help

This project is maintained by a single person, considering supporting the project by:

License

MIT

pull-request-stats's People

Contributors

manuelmhtr avatar nbrugger-tgm avatar badenh avatar ctjhoa avatar escudero89 avatar eodmsabc avatar dantehemerson avatar derek-young avatar marcocrasso avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.