Git Product home page Git Product logo

github-owners-bot's Introduction

Github Owners Bot

A web service that suggests approvers for a GitHub pull request based on OWNERS files and enforces reviews by OWNERS as a GitHub status check.

Getting Started

  • Clone the github-owners-bot repository. git clone [email protected]:google/github-owners-bot.git ${directory}

  • Clone the target repository to be evaluated. The github-owners-bot app requires a local copy of the target repository that we evaluate. You will need to set the GITHUB_REPO_DIR environment variable to the path of that target repository. ex. git clone [email protected]:ampproject/amphtml.git ${target_directory}

  • Set the REPO_DIR environment variable to the target_repository path that was used in the step above.

  • Set the APP_ID environment variable to your GitHub probot application.

  • Set the NODE_ENV environment variable to "development".

  • Set the WEBHOOK_SECRET environment variable to match what you set up on your GitHub Webhook pages.

  • Install the amp-owners-bot GitHub on the remote target repository (This should be the same repository that you had closed for the local target repository)

  • Go back into the github-owners-bot directory and run yarn.

  • Run npm run dev to start the local server. You can also run LOG_LEVEL=trace npm run dev for maximum logging while developing the application.

github-owners-bot's People

Contributors

erwinmombay avatar fstanis avatar rsimha avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

github-owners-bot's Issues

tests are too slow

we're probably reaching out to actual github api's right now to make some calls. need to figure out which ones and mock them out

Is it possible to declare different owners for different lines in a file?

For example, package.json receives frequent updates from renovate-bot. Often times, the build cop needs to ask others for a review based on the actual dependency being upgraded (the line being changed).

I wonder if the owners bot can eventually figure this out and intelligently assign a reviewer based on which dependency (line) is upgraded (changed).

improve owners approval list algorithm

assuming only 1 file changed in a 3 level deep directory:

original algorithm was very simple:
look for the closest OWNER file for a file changed. The problem with this was that if you were a root owner and the file changed was in a directory 3 levels deep you would be given the owners list of that directory and not be approved right away.

current algorithm:
look for ALL the OWNER files starting from the current directory of the file and its ancestor up to the root accumulating all usernames as possible approvers. This solves the problem of the original algorithm but also is very verbose in its owner listing (even with removing dupes etc).

possible future algorithm:
look for the closest OWNER for a file changed and choose that as a candidate (possibly to post as a comment) but ALSO traverse the ancestor hierarchy in case the current PR author is an ancestor owner and approve the PR right away.

/to @cramforce for comments and suggestions

Automatically assign incoming renovate PRs to the current build cop

Incoming renovate PRs tend to get ignored by most build cops. The owners bot is in a good position to assign each incoming PR to the current build cop for prompt attention.

We can do two things when a renovate PR is initially created, or a new commit is pushed:

  • Assign (or reassign) the PR to the current build cop
  • Add the current build cop as reviewer

/cc @danielrozenberg who is working on an API to return the github ID of the current build cop
/cc @mrjoro

FR: auto comment on 3P PRs

Trigger criteria:

  • Author is not from AMP team
  • All changed files are under ads/

Actions:

To accelerate the review process, please make sure you read the guidelines and test the ad locally before sending out the PR. @lannka

Provide a comment with instructions at the top of every `OWNERS.yaml` file

When someone new to the codebase wants to edit an OWNERS.yaml file, it's hard to find the format for declaring owners for individual files / directories, and for declaring a working group as an owner.

A single line comment that points to the OWNERS.yaml spec would be useful.

I'm happy to write up a PR if a link exists.

/cc @mrjoro

Ampprojectbot should consider the .protoascii and .out files owned by people working on the validator

For the validator, we sync changes developed in Google's internal repo up into Github (we also sync the other direction sometimes, but that's not affected here). This is such a change:
ampproject/amphtml#8134

Ampprojectbot assignes the .protoascii (validator specification files) and .out files (validator test files) to owners of the extensions. This means that getting such a sync requires many approvals, likely slowing down our process.

The solution is probably to patternmatch the protoascii and html and out files for the validator so that we can commit them even if they're in some extension directory. Thanks much for considering.

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.