At Six Feet Up, we use Python to connect the various services we use internally. Many of these involve the open source wiki and issue tracking system Trac. We use Trac to document, organize, prioritize, assign and follow components of our projects.
To keep the teams up-to-date on a project’s status, we are regularly posting links to Trac tickets into Slack. The standard link itself provides very minimal information from a glance. You can just see the client name and a ticket number - that’s it. To get more information, you have to click the link, which isn’t always convenient if you are on a mobile device and not logged into Trac.
This was hampering our development process, as we were not able to quickly review a Trac ticket and solve the problem without having to leave Slack. Having to take additional steps to investigate a question or issue costs clients in both time and money. We knew this was an automation problem that we could tackle with minimal resources, and could even help other teams simplify their process.
To get information as quick and simply as possible in Slack, we’ve made a Slackbot called Tracbot.
Tracbot makes use of Slack’s slackclient and events-api within a lightweight Flask app. Tracbot listens for a link_shared
event into Slack, which is configured to trigger on links from trac.sixfeetup.com. It’ll connect to the Trac instance via RPC to grab information from the ticket in the link, and posts the information as a reply in Slack:
This gives you a quick idea of the ticket in question, usually providing enough information that you don’t have to leave Slack.
Additionally, if you post a link pointing to a specific comment, Tracbot will show you that comment instead of the ticket’s summary:
Tracbot has not been distributed as a Slack app, but code is available at:
We encourage you to try it out in your Slack workspace and let us know how it is working. If you have any suggestions for improvement, contact us. This is the first of a series of posts on our Trac workflow. Stay up-to-date on our posts by subscribing here.
Additional Resources: