Services and tools to automatize development for the remote teams
Tags: Automation, Continuous Delivery, Agile, Workflow, Software Development

Delivery

Version Control by GitHub

To effectively work on a project, we need a service that allows us to store code, connect various services to automate the development process, and provides a convenient environment for project management. GitHub is the most suitable for us.

Creating and viewing pull requests, review code, viewing the history of changes; all this greatly enhances the convenience of team development.

To generate pull request from the issue we use the Hub command-line utility: Convert GitHub Issue to Pull request

Photo by airfocus on Unsplash

Kanban board by GitHub Projects

To provide a “flexible” approach to software development, we follow the Agile methodology. To monitor the current progress and see the tasks for the near future, we have chosen the implementation of the Kanban board inside the GitHub (GitHub Projects). Delivery Flow for Distributed Remote Teams.

Continuous Integration by CircleCI

To avoid bugs on production, and ensure the code compliance with the requirements set in our team, we use the CircleCI. It allows us to set up verification and code deploying flexibly.

Due to close integration with GitHub, we can see the results of the tasks right on the Pull Request page. See more: Deploying Jekyll to GitHub Pages with CircleCI 2.0

Infrastructure by Heroku

From hosting, we wanted to get: simple environment setup, integration with GitHub, the ability to install libraries that are used in gems quickly, the ability to scale.

Heroku meets all our requirements: How to Setup a Project That Can Host Up to 1000 Users for Free.

Using Heroku, we also solve the problem of isolated verification. It is essential to be able to test the functionality before it gets to production. Heroku uses the Heroku App Review for these purposes. Read here: Heroku Reviews Apps prevent delivering bugs on production.

Monitoring code quality

Photo by Stephen Dawson on Unsplash

Tests coverage by Codecov

Following our workflow, we forbid the merging code that is not covered by tests. To automate these checks, we use Codecov. For each branch, it measures test coverage, and if the percentage of code covered has decreased, then the branch will not be merged.

The Сodecov also generates reports on which we can see the most vulnerable parts of the system for changes. It allows measure even JavaScript code coverage: Collecting JavaScript code coverage with Capybara in Ruby on Rails application.

Updating 3rd party dependencies by Dependabot

To save developers from routine tasks, such as updating libraries to recent versions, we use Dependabot.

This tool allows you to update libraries automatically and thus keep the application secure since new versions of libraries often contain security patches.

The update looks like a regular Pull Request. The developer is only required to accept the Pull Request or reject it if the tests failed.

Static code analysis by Pronto

Another routine task that we automate is static code analysis. Pronto helps us with this. This tool allows you to connect various linters and ensure that all the code is written according to the rules set in the company.

Rubocop is the most popular linter we use in conjunction with Pronto. Out of the box, it enforces many of the guidelines outlined in the community Ruby Style Guide.

Collaboration

Photo by Dylan Gillis on Unsplash

Team chat by Discord

Since our team is remote, we need a chat with configurable channels, and there are no restrictions for storing message history. For this purpose, we have chosen Discord. It also supports group calls, which we use for meetings and retrospectives.

Optional for Video-calls by Whereby

Sometimes there are situations when you need videoconference, but there is no access to the Discord, or this is a one-time call, for the sake of which there is no sense in adding a person to the Discord.

For these cases, we use Whereby. Registration is necessary only to the creator of the conference. Other participants can go to the meeting by reference. The free version supports up to 4 participants.

Providing feedback by Loom

If you want to share any knowledge between the team, but it is not possible to gather everyone for a conference, you can record a screencast. Sometimes it is easier to record a screencast to describe a task or annotate code.

The most convenient screencast tool for us is Loom. We also use it to show the client all the new features at the end of the sprint.

Setup all in one click

We developed a gem jt_tools that will help you integrate most of these tools to your project in one “click”.

You will have everything pre-setup and ready for use.