At Agira, mostly we work on service-based projects. To adequate this, we must be flexible with our working strategy to accommodate the needs of each project and clients but it implies a cost on team productivity. Each time we have to set our workflow, deployment process and other things related to work. We have had the chance to work with lot of tools and workflows which led us to found a great solution. So, here we like to share our best tactics to Improve your team productivity by automating things.
The problem We Faced
Initially, we manually logged into the sever using SSH and deployed the code by pulling from Github and will be running the build commands on the server. Like you think, it was not very productive at all. So we later moved to Travis CI, which is really great. So every time we create a PR Travis will run our tests, and once the tests are passed, we’ll merge the PR. Once a PR is merged Travis will again run the build, and it’ll deploy to whatever server you configure. We used AWS’s Elastic BeanStalk. But whenever someone created a PR or whenever a build is running we were in need of constantly monitoring or communicating about this to the team which was not a problem at first.
Once the team size started to grow up 5+ this manual watching made a situation that someone should constantly watch and update, because someone was always creating PRs, fixing issues, and so on. So it became clear that we have to automate this process and get notifications on each PR, merge and build status.
How We Found The Solution Just by Integrating Slack Into Our Continuous Integration Workflow
For the continuous integration, we’ve checked few tools and settled with Travis CI because we’ve already worked with it and it’s easy to set up. We started integrating it into our workflow, and the task of connecting to the server manually is eliminated, but that solved only a half of the problem. We still have a lot of other things go. We wanted to get notifications on the build process, PRs and ticket updates from trello as we’re using it for organizing our sprints.
We were using Skype as our internal communications tool, but once we think of notifications from third parties, Skype is ruled out. Skype doesn’t have much 3rd party integrations, so we decided to move into Slack which is excellent for teams.
Once we have Slack, Travis CI and Trello in place, we started to integrate them within our Slack channels. We’ll walk through each step of the integration so you can use the same for your team. First I’ll walk you through the process of setting up GitHub notifications on a channel in your Slack workspace. Kindly keep in mind that you have to be the admin of your workspace to set up this integration.
Step – 1 :
Open your Slack app or web Slack and go to Settings -> Administration -> Manage apps
It’ll take you to a web page where you can search and install the required apps to your Slack workspace.
Step – 2
Click on Browser the app Directory to search for apps.
Search for GitHub in the apps and when you found it install the top result. Don’t install the previous deprecated version as it won’t work for long.
Once you found Github click on it to get into its setup screen.
Step – 4
Click Install and then you’ll be redirected to you a screen where you have to give necessary permissions for GitHub app to access your Slack workspace.
This Github application is developed and maintained by Github, so we’re actually installing a third party application into our workspace which explains the need for the permissions. Click continue to authorize Github on your Slack.
Choose which channels the GitHub application can access, You can have the notifications either for you or for anyone or for any specific channel. Choose any one of the options based on your needs and click install. I choose general because I want everyone in my workspace to be notified of any PRs, changes.
Step – 7
Once Github is installed you’ll receive this message in your workspace, Click connect Github account to authorize the Github app to access your account on Github.com, You’ll be presented with normal Github integration permission setup and authorize it.
When authorized you will be asked to install the Slack app in your Github account, for some reasons I wasn’t asked. So when I tried to subscribe to a repository for changes, I received an error like below. Go ahead and install the Github app if you receive this error else you can ignore this step.
Step – 9
When you click on the install Github app, you’ll be redirected to the below page in which you have to install the Slack application in your Github account. Click authenticate to move into next step.
Step – 10
In this step choose access for the repositories you want to get notifications from, I have selected all because I may have to configure future repos for notifications. You can choose depends on your need and click install.
Step – 11
This is the last step to start receiving notification from your repository. In Slack go to the channel you want to receive the notifications from Github, and type /github subscribe owner/repository and press enter, if you have given proper permissions, you’ll receive a subscribed message like the one in below screenshot.
From now on you’ll receive notification from your Github repo activities into the Slack channel like below. One part of our productivity problem is solved. Whenever a PR is created, we don’t have to inform in the group, and it’s now automated so that someone will review.
Sometimes agreeing the notifications might be overwhelming or you may have to stop the notifications in one channel and move it to a different channel. On those times an unsubscribe command would be handy for you, I got you covered. The same way we subscribed, just change “subscribe” to “unsubscribe”, you’ll be unsubscribed and won’t receive any notifications.
We used almost the same steps like this to configure Trello and Travis CI notifications into our Slack channels. The Travis CI part is little complicated but ll write it up as a separate blog and post in our blog repository by perceiving on your interest on this blog. Other than this, if you have any doubts on setting this up then feel free to post us in comments. For any queries reach us via firstname.lastname@example.org