Oppiabot is a GitHub app built with probot. It acts as a helper for the Oppia code repository to maintain the development workflow. It is hosted on Heroku.
The bot currently performs the following functions:
-
Checks whether a contributor creating a pull request has signed the CLA. It adds a label
Needs CLAaccordingly. -
Checks merge conflict in a pull request and notifies the author of the pull request if there is a merge conflict.
-
Closes stale pull requests.
Please refer to the following instructions to setup Oppiabot for the first time on your machine:
-
Create a new, empty folder called
opensource/within your home folder. Navigate to it (cd opensource), then fork and clone the Oppiabot repo. This will create a new folder namedopensource/oppiabot. Navigate toopensource/oppiabot/. -
Install Node.Js and NPM on your machine using the following commands:
sudo apt-get install nodejs
sudo apt-get install npmFor MacOS, run sudo brew install node to install Node.Js and NPM.
- Setup probot and other dependencies by running the following command:
npm install-
The Oppiabot uses environment variables. These are configured in the server settings. To deploy the bot locally, create a
.envfile and copy the contents of.env.exampleto it. You will need to adjust these variables accordingly following the instructions in the subsequent steps. -
Go to smee.io and click Start a new channel. Set
WEBHOOK_PROXY_URLin.envto the URL that you are redirected to. -
Create a new GitHub App with:
- Webhook URL: Use your
WEBHOOK_PROXY_URLfrom the previous step. - Webhook Secret:
development - Permissions & events is located lower down the page and will depend on what data you want the bot to have access to. Currently, the bot requires read and write access to issues and pull requests and read-only access to the file in the path
.github/stale.yml.
If, for example, you only enable issue events, you will not be able to listen on pull request webhooks with the bot.
- Webhook URL: Use your
-
Download the private key. It will be a
.pemfile. Move it to the root directory of the project. As long as it's in the root directory, it will be automatically detected regardless of the filename. -
Edit
.envand setAPP_IDto the ID of the app you just created. The App ID can be found in your app settings page here.
You'll need to identify a target repository and install the bot by clicking the Install button on the settings page of your app, e.g https://github.com/apps/your-app-name
You are now ready to run the bot on your local machine. Run npm run dev to start the server.
The dev script will start the bot using nodemon, which will watch for any files changes in your local development environment and automatically restart the server.
$ npm start to start the bot without watching files.
Always run $ npm install and restart the server if package.json has changed.
To turn on verbose logging, start server by running: $ LOG_LEVEL=trace npm start.
If you have any feature requests or bug reports, please log them on our issue tracker.
Please report security issues directly to admin@oppia.org.
The Oppiabot code is released under the Apache v2 license.

