Skip to content

A tool for automatically managing priorities across multiple GitHub repositories

License

Notifications You must be signed in to change notification settings

af4ro/dx-automator

 
 

Repository files navigation

SendGrid Logo

Travis Badge

The Developer Experience Automator

This tool was built by @thinkingserious and @mbernier at SendGrid in order to help scale the Developer Experience Team. We needed to spend less time tracking every single data point so that we could spend more time with our community.

Since 2015, we have learned that the methods (FIFO and/or gut-based-prioritization) we were using to manage the work we need to do would not work with our small team or for our open source community.

Intercom's RICE formula for prioritization totally changed our workflow. We implemented this as our prioritization scheme for or backlog within a Google Doc and it served us very well until Hacktoberfest 2017. All of a sudden, our "magic spreadsheet" fell over. Our automations were not keeping up and we were spending as much time manually pushing GitHub Webhooks as we were manipulating our spreadsheet and merging pull requests. It was a mess.

We found pain points with our spreadsheet, our automations, and our backlog. This project is the culmination of what we learned over the past couple years and it is helping us to be sgnificantly more effective.

What this tool does

This tool connects actions on GitHub to a priority based kanban to-do list.

The priorities are calculated using RICE as well as other possible controls, that are completely customizable by the user or team. For example, we use due dates and item status to effect the prioritization calculation.

The tool also allows you to set rules for what happens when specific actions are triggered. One of the default actions that is setup in the tool is to create an item from a pull request. From the pull request trigger, you could also set the automator to post a comment to the pull request with a thank you message, check whether a CLA needs to be signed, send an email, or any other number of actions.

Another example would be a comment trigger on a task marked as "Waiting for feedback". If a comment comes in, and the task was waiting for feedback, the status could be updated to "Feedback received" which should bump the task up in priority.

Ultimately, the hope is to build multiple plugins, similar to the GitHub plugin. These plugins will add actions that can be used when triggers happen. This will allow the automator to do more of the menial work and allow teams to spend more time directly on coding or working with their community.

Getting the Tool

To get the basic tool and all the plugins you can use:

git clone https://github.com/sendgrid/dx-automator .

Installation

This project is built on Python, flask, and PostgreSQL. It can be deployed as a Docker Container or on a standalone server.

Docker Install

Clone the repo

git clone https://github.com/sendgrid/dx-automator.git
cd dx-automator

Create the docker machine

docker-machine create -d virtualbox dx
eval "$(docker-machine env dx)"

Build the docker container

docker-compose -f docker-compose-dev.yml build
docker-compose -f docker-compose-dev.yml up -d

Get the IP of your docker container and curl to make sure it's running

DX_IP="$(docker-machine ip dx)"
curl http://$DX_IP:5001/ping

Set up the database

docker-compose run -f docker-compose-dev.yml dx-service python3 manage.py recreate_db
docker-compose run -f docker-compose-dev.yml dx-service python3 manage.py seed_db

Validate that the items are seeded into the database

curl http://$DX_IP:5001/items

Run the tests to make sure everything is working!

docker-compose -f docker-compose-dev.yml run dx-service python3 manage.py test

Your Server or On your machine

Clone the repo

git clone https://github.com/sendgrid/dx-automator.git
cd dx-automator

Create a virtual environment and activate it

python3.6 -m venv env
source env/bin/activate

Install the python dependencies

pip install -r requirements.txt

Set up the database and seed it

python manage.py recreate_db
python manage.py seed_db

Start up the flask server and get your IP

python manage.py runserver

Go to http://Your_IP:5001/items in your browser or via curl to verify the items in the database

curl http://$DX_IP:5001/items

Run the tests to make sure everything is working!

python manage.py test

Troubleshooting

For any issue, comment, or suggestion - please make an issue in the GitHub repo. We want everything out in the open, so that if someone finds the same issue they can find the answer easily! This also makes it easy for us to track all our conversations. Yes, we have this system hooked up to this repo!

Docker Machine is not working properly

If you have already installed and can't get the eval statement to work, try this to restart your machine:

docker-machine start dx

Then try from this step from install again:

eval "$(docker-machine env dx)"

Contributing

Everyone who participates in our repo is expected to comply with our Code of Conduct.

We welcome contributions in the form of issues, pull requests and code reviews. Or you can simply shoot us an email.

Attributions

We believe in open source and want to give credit where it's due. We used the amazing tutorial at testdriven.io to guide us in setting a solid foundation using flask, docker, and (eventually) node and react. From this tutorial, we began to build and iterate.

About

A tool for automatically managing priorities across multiple GitHub repositories

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.4%
  • Dockerfile 1.6%