07/20/2016FeaturedCody Reichert

TL;DR: Continuous development workflows make developers more productive by providing constant feedback during the development cycle. These 5 services will improve your CI pipeline.

Continuous development

Continuous integration, delivery, and testing provide teams with a way to frequently build new code, deploy changes to applications, and run tests before and after each step.

There are a few stages to a good continuous development pipeline:

  1. Integration: Build code and run unit and integration tests
  2. Delivery: Deploy ('deliver') your new application
  3. Testing: Automated testing of staging and production environments

This post will go over what happens in every step of a good continuous workflow. Most of the tools and processes mentioned below are geared towards hosted services, particularly ones that integrate with a GitHub deployment pipeline.

Continuous integration

Continuous integration is a process for frequently building and testing new code changes. In most cases, a central repository (eg, git) will have a master branch where all changes are merged and picked up by the CI build system.

With most tools, you will have a configuration file (eg, .travis.yml) describing how to build the application and run unit tests. As you push changes to a repository, your CI will build the code from your config.

A good CI pipeline will ensure that all code can be built and run and that all unit tests are passing before being merged into the main branch for deployment.

Tools

There are many great hosted CI services that work with your existing GitHub repositories. It may take trying a few to see what works best for you. Two of the most widely used services are:

Circle CI

Free and paid plans available. Website

The modern continuous integration and delivery platform that software teams love to use. - CircleCI

Travis CI TravisCI Logo

Free and paid plans available. Website

Easily sync your GitHub projects with Travis CI and you’ll be testing your code in minutes! - Travis-CI

Continuous delivery

Continuous delivery is the process of deploying new versions of an application frequently, sometimes several times daily, to staging and production environments. An important part of continuous delivery is that it makes application changes more reliable by by providing a consistent, reproducable pipeline for pushing new changes.

Deploying an application into a staging or production environment can get hairy, but a good delivery system will have the automation to make it simple. Being confident about rapidly pushing code and having a good deployment process can greatly improve a product.

Tools

Like CI, there are a lot different tools for continuous delivery. One of the most powerful is Heroku Flow:

Heroku Flow Heroku logo

Free and paid plans available. Website

Heroku Flow brings together Heroku Pipelines, Review Apps and GitHub Integration into an easy to use structured workflow for continuous delivery, so you can test early and deploy often, with better results for your users. - Heroku

If you're team is already using GitHub to host code, the Heroku GitHub integration provides tools for setting up staging environments on pull requests ('Review Apps') and then deploying those to production.

Continuous testing

The next step in a solid continuous development pipeline is testing. Usually, new code will be deployed to a staging location where changes can be tested and approved before reaching production. At this point, automated tests are run against the web service to ensure all services are working correctly.

A lot of times these same tests will be run against the production environment as well. A dedicated staging or review area is not required, but it does provide huge benefits. Another common work-flow is that all changes merged into master will be immediately deployed to production. In these cases, your continuous testing should run as soon as a new application is deployed.

Tools

Tools for continuous testing can range from manual QA teams and custom scripts for monitoring or testing API endpoints. Assertible is one hosted service that can run post-deployment from your CI pipeline.

Assertible

Free and paid plans available. Sign up for a free account

Teams and individuals use Assertible to test and monitor production web services, create scheduled assertions, and gain confidence in crucial infrastructure. - Assertible

You are on the Assertible Blog so I might be a bit biased. Post deployment tests are, however, a crucial part of a good continuous development workflow that will enable you and your team to write more, better code.

Wrapping up

What tools does your continuous development pipeline consist of? Shoot us a message on Twitter and let us know!

The assertible/deployments contains more information on integrating continuous testing into your existing workflow. Check it out and sign up for a free Assertible account to start testing your deployments!


Assuredly yours,
Cody Reichert