Skip to content

Latest commit

 

History

History
46 lines (36 loc) · 3.54 KB

ci-servers.md

File metadata and controls

46 lines (36 loc) · 3.54 KB

CI Servers Deploy Code, Not Ops

Martin Fowler defines continuous integration as "a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day." This seminal article defines the key best practices as:

  • Maintain a single source repository.
  • Automate the build.
  • Make your build self-testing.
  • Everyone commits to the mainline every day.
  • Every commit should build the mainline on an integration machine.
  • Keep the build fast.
  • Test in a clone of the production environment.
  • Make it easy for anyone to get the latest executable.
  • Everyone can see what's happening.
  • Automate deployment.

The CI server executes a specific action on a repository when triggered by a commit hook. For example, if a developer makes a commit against a repository called foo, the CI server might:

  • Clone a local copy of foo.
  • Execute foo's test suites (see the section on application stacks for more about this).
  • If the tests fail, send an alert to the development team and halt the process.
  • If the test suite passes, deploy the code to a staging or even production server.

Tools

Here are a few of the CI servers you might encounter:

  • Hudson. Hudson is a CI server from Oracle written in Java.
  • Jenkins. Jenkins, a fork of Hudson, is one of the leading open source CI servers. It has a host of useful plug-ins for tasks like build tasks, error reporting, and repository management.
  • Buildbot. Buildbot is an open source CI server written in Python.
  • Travis. Travis is a hosted CI solution that is used primarily by the Ruby community, particularly Rails.
  • Hubot. Hubot is a chatbot from GitHub. It allows you to easily create scripts that you can use inside your chatroom (e.g., Campfire or HipChat) to deploy new code, receive messages from the build server, or get messages from your monitoring tools when things go wrong.
  • Shippable Shippable is a hosted CI solution built on Docker with Webhooks.
  • Wercker. Wercker is a hosted CI solution built on Docker with Webhooks.
  • Circle CI is a hosted Continuous Integration and Deployment with Docker support.
  • Drone is an open-source (and hosted ) Continuous Integration platform built on Docker
  • Bamboo Bamboo is an Atlassian CI/CD tool that integrates seamlessly with other Atlassian products such as JIRA, Confluence and Stash.
  • Codeship Codeship is a hosted CI/CD service. Codeship will run your project's unit tests, and can also deploy new code to your servers via Capistrano, Amazon EBS, Heroku, custom scripts, and many others.
  • DeployBot. DeployBot is a hosted service that provides many repository, environment and service integrations. It also features automated code compilation.

Continuous Deployment

  • Distelli. Deployment and process management.
  • Capistrano. Automation and deployment tool. Webistrano provides a web frontend to Capistrano.
  • GoCD is an open-source continuous delivery tool built around a pipeline model.