statusbot is a chat bot built on the Probot framework. A wiki is available here.
This README will help you get started. It will be updated and improved to discuss user-specific instances, usage and deployment, the functionality available, and more!
Pipeline for QA
project board (REVIEW
column).Pipeline for QA
project board column (REVIEW
/IN TEST
), depending on whether or not the required conditions are met: is mergeable, at least two reviewers have approved it, and there is no request for changes.bounty-awaiting-approval
to the Status SOB Swarm
project board (bounty-awaiting-approval
column).bounty-awaiting-approval
label.automated-tests/kickoff-column-name
and the build has passed successfully, the bot will kick a test automation build in Jenkins (retry periodically if the PR build is still running).The project board's names, column names, welcome message, and other values are stored in the .github/github-bot.yml
file. It can be overriden for each specific repository by adding a file in the same path on the respective repository (see probot-config).
To get your environment set up, go through the following steps:
yarn install
.Populate .env
.
cp .env.example .env213804
# edit .env file to contain proper config
After this, you can start the bot by running the following:
yarn start
xoxb-
, and put it into .env
.This bot is meant to be packaged as a GitHub App. There are two steps to it: creating the app, and installing the app. The app needs to be created only once and can be made public and reused for any number of repositories and organizations.
See the official docs for deployment.
Settings/Developer settings/GitHub Apps
and click on New GitHub App
GitHub App name
, e.g. Status GitHub Bot
Homepage URL
, enter the /ping
endpoint of the service, e.g. https://5e63b0ab.ngrok.io/pingWebhook URL
, enter the root endpoint of the service, e.g. https://5e63b0ab.ngrok.io/Webhook secret (optional)
, enter a string of characters that matches the value passed in the in the WEBHOOK_SECRET
environment variable..github/github-bot.yml
APP_ID
environment variable to value reported when the GitHub App was created.WEBHOOK_SECRET
environment variable to the value configured in the GitHub App.PRIVATE_KEY
environment variable to the contents of the .pem
file.SLACK_BOT_TOKEN
environment variable to the value reported for the bot in Slack.status-react
).The bot gets its settings from a per-repo file located at .github/github-bot.yml
. That file extends the base file at the status-im/probot-settings repo.
Examples of settings that can be configured:
github-team/slug
: Slug of the team that owns the respective repository
welcome-bot/message-template
: First time contributor welcome message template. Examples of template values allowed:
{user}
: Replaced by the PR submitter's user name{repo-name}
: Replaced by the PR's target repository name{pr-number}
: Replaced by the PR numberslack/notification/room
: Slack room used for notifications (e.g. status-probot
)
Repository project board settings:
project-board/name
: Name of the QA pipeline project boardproject-board/contributor-column-name
: Name of the column in the project board to group issues that are being worked on by a contributorproject-board/review-column-name
: Name of the column in the project board to group issues that are up for reviewproject-board/test-column-name
: Name of the column in the project board to group issues that up for testing by QABounty project board settings:
bounty-project-board/name
: Name of the bounty project board in GitHubbounty-project-board/owner
: GitHub username of the maintainer of the bounty project board (used to e.g. send Slack notifications)bounty-project-board/awaiting-approval-column-name
: Name of the column in the bounty project board to group issues that are awaiting for bounty approvalbounty-project-board/awaiting-approval-label-name
: Name of the label used in issues to declare that an issue is awaiting approval to become a bountybounty-project-board/bounty-label-name
: Name of the label used in issues to declare that an issue is a bountybounty-project-board/bounty-size-label-name-regex
: Regular expression that matches the bounty size label and returns a group containing the size itselfbounty-project-board/post-approved-bounties-to-slack-room
: Name of the Slack room where to cross-post approved bountiesAutomated tests settings:
automated-tests/repo-full-name
: Full name of the repo to watch in project cards in order to automatically run automated tests CI job (e.g. status-im/status-react
)automated-tests/job-full-name
: Full name of the CI job to run automated tests (e.g. end-to-end-tests/status-app-end-to-end-tests
)You may want to get comfortable with heroku logs
and heroku restart
if
you're having issues.