TL;DR: A good continuous development workflow makes developers more
productive by providing constant feedback during the build, deploy,
and test cycle. These 5 services will complete your CI pipeline.

Continuous development

Continuous development is a process software development teams use to
increase developer productivity, build and deploy code more
frequently, and continuously test an application to get immediate
feedback on new releases.

Delivery: Deploy your application
to a staging or production environment.

Testing: Run automated QA tests to
validate new releases and deployments.

This post will discuss each phase of continuous development workflow
and provide some tools and examples for each step. Most services
mentioned below are hosted servces with free plans, particularly
ones that integrate with a GitHub deployment
pipeline.

Continuous integration

Continuous integration is
a process for frequently building and testing new code
changes. Generally, code is hosted on a central repository, like
Git, that is monitoring by a CI service. When changes are detected,
the CI service will pull and build the new code.

Most CI services allow you to have a configuration file checked into
your repository (eg, a .travis.yml) that describes how to build your
application and run the test suite. A good CI service provides several
benefits:

Ensures that code can be built and executed

Requires that all unit tests are passing

Immediately alerts developers of build failures.

Tools

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

Travis CI

Continuous delivery

Continuous delivery is
the process of deploying new versions of an application
frequently, sometimes several times daily, to testing, 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
features to your users.

Deploying an application to a staging or production environment
can get hairy, but a good delivery system will provide you with the
tools and 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 tools, there are a lot different services for setting up
continuous delivery. One of the most powerful and widely used
is
Heroku Flow.

Heroku Flow

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 your team is already using GitHub to host code,
the
Heroku GitHub integration provides
a way to automatically deploy every pull request to a staging
environment
via
Review Apps.

Continuous testing

The final step in a solid continuous development pipeline is
automated testing and
QA. Continuous testing is
the process of running automated integration tests against new
deployments. This gives teams and developers a way to immediately
test and validate every deployment.

Take the Heroku Review App example -- when a pull
request is opened on your repo, and the code is deployed to a review
environment, and your automated QA tests are run against the live
application to ensure the web service is working as expected.

When your application is deployed to a production environment, these
same tests are run against the new release. Although a dedicated
staging or testing environment is not required, it does provide
huge benefits to teams who have many developers pushing to the same
repo. In either case, a good continuous testing service will allow
you to run post-deploy smoke tests immediately after every
deployment.

Tools

Tools for continuous testing can range from manual QA teams and custom
scripts for monitoring and testing API endpoints. Assertible
is one hosted service that let's you create a post-deployment
testing pipeline.

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

Wrapping up

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