

Ask HN: How does your continuous integration process looks like? - andavid

How big is your team and how do you manage/what kind of policies are in place for: committing to the source repository, automate the build, build self-testing, automate deployment etc.?
======
pbiggar
We (Circle - <https://circleci.com>) make continuous integration as-a-service,
so I can talk about what we do, and what a lot of customers do.

So we and all our customers build all branches on every push, connected to
GitHub. That's how we work and what nearly all of our customers want.

We run all tests on every push, including javascript and selenium tests. Tests
always run on a clean environment, so we install dependencies, create a fresh
database each time, etc.

At the end, if tests have passed, many customers do continuous deployment by
pushing to Heroku, or running Fabric/Capistrano scripts (Circle has special
SSH key management so that you can keep this secret from your team without
putting it in your repository).

Our code base uses a slightly different form of continuous deployment. When
tests pass, we merge the code into the production branch, and our auto-scaling
infrastructure just starts new boxes with the latest commit from the
production branch.

We've talked to others about their procedure. One that comes up a bit is
people who package up their code upon successfully testing it via CI, and then
download it and deploy it whenever they scale.

Hope that helps, happy to go into more detail.

------
dylanhassinger
My co-founder and I looked at systems like Chef or Puppet, but decided instead
to build our own using command line actions triggered by Fabric scripts (it's
like a Python version of Bash). These scripts can build us a new sandbox (or
our entire server) on demand. We have a simple web interface to trigger them.
We use Github post-update hooks deploy code to the server after every change
to the master branch.

Later we'll probably integrate a Travis CI server and other fancy tools, but
for now this simple setup works.

