Giter Site home page Giter Site logo

godaddy / pullie Goto Github PK

View Code? Open in Web Editor NEW
19.0 11.0 4.0 4.53 MB

A GitHub bot that makes your PRs better

License: MIT License

JavaScript 88.20% Handlebars 11.80%
github pull-requests pull-request pullrequest githubapp github-app bot github-bot hacktoberfest

pullie's Introduction

Node.js CI Coverage Status

NPM

pullie

Pullie is a GitHub bot that makes your PRs better. It runs as a GitHub App and receives webhook calls whenever a pull request is made against a repo on which the app is installed. Plugins provide handy functionality like linking to Jira tickets, requesting reviews, and commenting about a missing required file change.

System requirements

Pullie runs on public GitHub or on GitHub Enterprise 2.14 or later. It requires Node.js 14 or later.

How to run/deploy

The easiest way to run Pullie is to clone this repo and run npm start. You can do so in a Docker container for easy deployment.

Configuration

You must specify configuration values via environment variables. You may do so using a .env file. See .env.example for a sample configuration with full documentation.

Setting up your GitHub App

Pullie runs as a GitHub App, so if you are installing it on your own GitHub Enterprise instance, you must register a GitHub App there first. Here's how:

  1. Browse to your GHE server homepage
  2. Go to your user icon in the top right and select Settings from the menu
  3. Select Developer Settings on the left side
  4. Select GitHub Apps on the left side
  5. Press the New GitHub App button on the top right
  6. Fill out the form as follows:
  • GitHub App name: Pullie

  • Description (optional): Pullie is a GitHub bot that makes your PRs better. It runs as a GitHub App and receives webhook calls whenever a pull request is made against a repo on which the app is installed. Plugins provide handy functionality like linking to Jira tickets, requesting reviews, and commenting about a missing required file change.

  • Homepage URL: The base URL of your Pullie deployment (e.g. https://pullie.example.com)

  • User authorization callback URL: Same URL as above

  • Setup URL (optional): Not needed -- leave this blank

  • Webhook URL: Your deployment's base URL (e.g. https://pullie.example.com/) (unless WEBHOOK_PATH is adjusted in config)

  • Webhook secret (optional): Choose a random string as your webhook secret (e.g. a random UUID perhaps)

  • Permissions: Leave all as No access except the following:

    • Repository administration: Read-only
    • Repository contents: Read-only
    • Repository metadata: Read-only
    • Pull requests: Read & write
    • Single file: Read-only for .pullierc
    • Organization members: Read-only
  • Subscribe to events: Leave all unchecked except Pull request

  • Where can this GitHub App be installed? This is up to you. If you choose Only on this account, other users in your GHE instance will not see your application.

  1. Press the Create GitHub App button
  2. Now you have a GitHub App, so we need to collect some information to use in our configuration file:
  • Scroll to the bottom of the configuration page for your new GitHub App
  • Copy the ID and use as your app's ID in the config file
  • Copy the Client ID and use as your app's client ID in the config file
  • Copy the Client secret and use as your app's client secret in the config file
  • Click the Generate private key button to create your app's private key file. Copy the file it downloads to your Pullie deployment in a secure place (e.g. by using Kubernetes Secrets)
  1. Upload a logo for Pullie. You can use one of the PNG files in the static folder of the Pullie npm package if you'd like.

Install your GitHub App on an org/user

Now, you can install your GitHub App on an org or user. Select Install App on the left side of the App's config page and then press the green Install button on any org(s) and/or user(s) you'd like Pullie to run on. Pullie will not do anything unless a repo has a .pullierc file, so it is safe to install across an org.

User documentation

User docs are available at the docs URL of your Pullie deployment (e.g https://pullie.example.com/docs). Just browse there and you'll see full documentation on installing the App and configuring a repo to work with it.

pullie's People

Contributors

decompil3d avatar dependabot[bot] avatar johnsanthosh avatar renovate-bot avatar renovate[bot] avatar shaun2d2 avatar snyk-bot avatar

Stargazers

 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  avatar  avatar  avatar

pullie's Issues

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Error type: undefined. Note: this is a nested preset so please contact the preset author if you are unable to fix it yourself.

Integrate pullie with the GitHub Checks API

The requiredFile plugin could be setup to work as a GitHub Check. This should be done as a platform change though:

  • Add a getter/method that tells the Processor that the plugin should respond to Check notifications
  • Add support to post Check results back
  • Setup the requiredFile plugin to post a check result and update it with each new commit to the PR.

Feature Request: parsing .github/CODEOWNERS for reviewers

Currently, relying on a package.json falls short in specifying maintainers / reviewers for 2 reasons.

  1. Repos that aren't .js focused are unlikely to have a package.json.
  2. Monorepos that encapsulate many other repos may have divergent skillsets needed for accurate PR reviews.

Turns out that Github already has a tool for this: .github/CODEOWNERS file. Pullie should support using that file, if present, in addition to package.json

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

This repository currently has no open or pending branches.

Detected dependencies

github-actions
.github/workflows/ci.yml
  • actions/checkout v3
  • actions/setup-node v3
.github/workflows/codeql-analysis.yml
  • actions/checkout v3
  • github/codeql-action v2
  • github/codeql-action v2
  • github/codeql-action v2
.github/workflows/release.yml
  • actions/checkout v3
  • actions/create-release v1
npm
package.json
  • array-shuffle ^3.0.0
  • clone-deep ^4.0.1
  • deepmerge ^4.2.2
  • diagnostics ^2.0.2
  • express ^4.18.2
  • handlebars ^4.7.7
  • node-fetch ^3.3.0
  • p-reduce ^3.0.0
  • prismjs ^1.29.0
  • probot ^12.3.0
  • resolve-cwd ^3.0.0
  • @babel/core ^7.17.5
  • @babel/eslint-parser ^7.17.0
  • @babel/preset-env ^7.16.11
  • @octokit/rest ^19.0.0
  • acorn ^8.7.0
  • assume ^2.3.0
  • assume-sinon ^1.1.0
  • c8 ^7.11.0
  • eslint ^8.9.0
  • eslint-config-godaddy ^7.0.0
  • eslint-plugin-import ^2.25.4
  • eslint-plugin-json ^3.1.0
  • eslint-plugin-mocha ^10.0.0
  • mocha ^10.0.0
  • nock ^13.2.4
  • nodemon ^2.0.12
  • sinon ^15.0.0
  • node >= 14

  • Check this box to trigger a request for Renovate to run again on this repository

Extract plugins into separate repos

Right now, pullie plugins are in the core repo. To allow better extensibility, pullie should load plugins from external repos (e.g. pullie-plugin-jira).

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.