A simplified integration robot.
Thumbs was created to help validate and merge pull requests. It was initially developed as a replacement for Bors.
Check out this pull request for an example.
The following wonderful companies have sponsored Thumbs:
Without the guidance, support and contributions of the following people, Thumbs would have not been possible.
- Paul Hagan @ooshlablu
- James Gorlick @paegun
How to setup Thumbs for your repo and how it works.
- Go to https://github.com/basho/YOUR-REPO/settings
- Click [Webhooks]
- Click [Add Webhook]
- Set Payload URL to: http://thumbs.cloud1.basho.com/webhook
- [checkbox] Send me everything
-
Create a .thumbs.yml configuration file in your repo:
minimum_reviewers: 2 # minimum code reviews required before auto merge build_steps: # your custom build steps - "make" - "make test" # optional merge: false # Set to true to enable automerging org_mode: true # Only count code reviews from org members. timeout: 1800 # Let builds run for 30 minutes delete_branch: true # Delete pr branch after a merge # Specify a kerl otp release to run each set of build steps in. build_steps_<KERLRELEASE> # R16B01 R16B02 R16B03-1 R16B03 R16B 17.0-rc1 17.0-rc2 17.0 17.1 17.3 17.4 17.5 18.0 18.1 18.2 18.2.1 18.3 19.0 19.1 build_steps_R16B03: - make test build_steps_18: - make test build_steps_19: - make pre_19test9-edgecase
-
Add config and create pr branch:
git add .thumbs.yml git commit -a -m"add .thumbs.yml" git checkout -b add_thumbs git push origin add_thumbs
-
Create pr at https://github.com/basho/YOUR-REPO/compare
-
Try to merge PR branch onto target branch
-
Try to run build steps defined in .thumbs.yml
-
Count the number of comments containing +1 by org members other than the PR author.
-
If minimum reviewers is met and build is valid, it will report reviewers count and attempt to merge.
Retry the tasks on the latest commit and rewrite its most recent PR comment to reflect the current status.
> git clone https://github.com/basho-labs/thumbs.git
> cd thumbs
> bundle exec rackup
> bundle exec ruby test/test.rb
In a separate window, start ngrok and collect the forwarding url
> ngrok http 4567
Forwarding http://699f13d5.ngrok.io -> localhost:4567