Continuous integration, continuous delivery, and continuous deployment (CI CD) have all existed in the developer community for many years. Some organizations have extended it for operations, but many haven’t. Many organizations have starting to leverage the power of CI CD for their Operations counterpart too.Some organizations have been using CI CD practices on infrastructure, with tools like Ansible, Chef, or Puppet, for many years. Other tools, like Test Kitchen, allow tests to be performed on infrastructure that will eventually host applications. In fact, those tests can even deploy the application into a production or production like environment and execute application-level tests with production test loads in more advanced and complex configurations. Terraform can also use Test Kitchen for even more ephemeral and idempotent infrastructure configurations than some of the original configuration-management tools.
Many organizations have started focusing on network configurations or database data definition language (DDL) files into version control and start running small CI/CD pipelines on them. Best practices, syntax checks seems to be the most common scenario.
Companies have started using a pipeline for even simple aspects such as Newsletter management, using version control using MJML. Pipeline will automatically generate PDF or HTML content and link each other. Content can be checked into GitLab, reviews can happen in Gitlab before the artifacts get published.
Some tools, like Spinnaker, focus only on the deployment component and offer some operational features that others don’t normally include. Jenkins has generally kept pipelines in an XML format and most interactions occur within the GUI, but more recent implementations have used a domain specific language (DSL) using Groovy. Further, Jenkins jobs normally execute on nodes with a special Java agent installed and consist of a mix of plugins and pre-installed components.
GoCD comes from Thoughtworks. GoCD offers Value Stream Map (VSM) feature. In fact, pipelines can be chained together with one pipeline providing the “material” for the next pipeline. This allows for increased independence for different teams with different responsibilities in the deployment process.
Travis CI was my first experience with a Software as a Service (SaaS) CI system, and it’s pretty awesome. The pipelines are stored as YAML with your source code, and it integrates seamlessly with tools like GitHub. I don’t remember the last time a pipeline failed because of Travis CI or the integration—Travis CI has a very high uptime.
Concourse system is made of microservices, and each job runs within a container. One of its most useful features that other tools don’t have is the ability to run a job from your local system with your local changes. This means you can develop locally (assuming you have a connection to the Concourse server) and run your builds just as they’ll run in the real build pipeline.
Spinnaker comes from Netflix and is more focused on continuous deployment than continuous integration. It can integrate with other tools, including Travis and Jenkins, to kick off test and deployment pipelines. It also has integrations with monitoring tools like Prometheus and Datadog to make decisions about deployments based on metrics provided by these systems.
Screwdriver is an impressively simple piece of engineering. It uses a microservices approach and relies on tools like Nomad, Kubernetes, and Docker to act as its execution engine. There is a pretty good deployment tutorial for deploying to AWS and Kubernetes, but it could be improved once the in-progress Helm chart is completed.
for more info, contact TeamITServe
if your company needs Experienced DevOps professionals please contact us at, firstname.lastname@example.org