Curry checks that committers in a GitHub Pull Request have signed Chef's CLA in Super Market.
The general goal of curry is to verify that committer(s) opening a pull request in a Chef Inc. repo have signed a CLA. If they have signed a CLA, Super Market will leave a comment letting Chef Inc. know that the user has signed a CLA. If they have not, Super Market will leave a comment letting Chef Inc. and the committer(s) know they have not signed a CLA, while instructing the committer(s) to sign a CLA. When the Pull Request is opened, a ticket is opened in the ticket tracking system being used (in Chef's case, JIRA).
Major parts of Curry include:
- Ability for Chef Admins to specify the repositories (and projects in corresponding ticket tracking system) that notify Super Market when a Pull Request was opened and updated. This let's GitHub know what repositories it should be the hub for when sending POSTs to Super Market via PubSubHubbub.
- Handling POSTs to the Super Market API end point from GitHub when a Pull Request is opened and updated.
- Commenting on Pull Requests based upon the committer(s) CLA verification status.
- Opening a ticket in the ticket tracking system with the information surrounding the Pull Request.
- If committer(s) had not signed a CLA when the Pull Request was opened but sign a CLA, Super Market will leave another comment in the Pull Request letting Chef Inc. know that a committer has signed a CLA (and what committers still need to sign a CLA).
- Super Market will subscribe to a GitHub repository Hub to receive POST requests at Super Market API end point when a Pull Request is created or updated in the GitHub repository. This will be using the PubSubHubbub protocol (Hubbub for short).
- There will be an interface for managing what GitHub repositories Super Market is subscribed to.
- Interfacing with JIRA (the current issue tracker) with the Jira Ruby gem to open issues when a Pull Request is opened on a subscribed repository.
- Leaving comments on subscribed GitHub repositories with the Octokit.rb gem.
- Use Sidekiq to process background jobs.
- Spec out and develop interface for managing GitHub repository subscriptions.
- Create API endpoint to receive Hubbub updates from the GitHub repository.
- Handle checking committers in the Pull Request to see if they have signed a CLA.
- Use Octokit to leave a comment on the Pull Request based upon their CLA signing status.
- Handle when committers have not signed a CLA but then sign a CLA.
- Use the JIRA Ruby gem to open an issue in the corresponding project.
Also, we probably want a batch job that goes through existing PRs and "rechecks" the status. Maybe that's a v2 though