Jenkins on AWS
AWS Whitepaper

Jenkins on AWS

Publication date: May 2017 (Document Details)

Abstract

Although there are many ways to deploy the Jenkins open-source automation server on Amazon Web Services (AWS), this whitepaper focuses on two specific approaches. First, the traditional deployment on top of Amazon Elastic Compute Cloud (Amazon EC2). Second, the containerized deployment that leverages Amazon EC2 Container Service (Amazon ECS). These approaches enable customers to take advantage of the continuous integration/ continuous delivery (CI/CD) capabilities of Jenkins. Using an extensive plugin system, Jenkins offers options for integrating with many AWS services and can morph to fit most use cases (e.g., traditional development pipelines, mobile development, security requirements, etc.).

Introduction

Why CI/CD?

To understand the continuous integration/continuous delivery (CI/CD) model that Jenkins uses, let’s start with understanding its underlying drivers. Since the early 2000s, the advent of fast-paced, iterative methodologies such as agile has shifted the thinking about software development. In this new paradigm, product teams push their work to customers as quickly as possible so that they can collect feedback and improve upon the previous iteration of their products. Concepts such as minimum viable product (MVP), release candidate, velocity, etc. are all derived from these new approaches. In contrast, product teams using older paradigms like waterfall development might not hear back from customers for months and, quite often, not until the product is commercialized.

The following figure illustrates the high-level phases of product development:


          High-level product development phases

Figure: High-level product development phases

The order and length of these phases varies depending on which development models is used (e.g., waterfall, v-model, scrum, etc.).

Continuous Integration

Continuous integration (CI) is a software development practice in which developers regularly merge their code changes into a central repository, after which automated builds and tests are run. Continuous integration most often refers to the build or integration stage of the software release process and entails both an automation component (e.g., a CI or build service) and a cultural component (e.g., learning to integrate frequently). The key goals of continuous integration are to find and address bugs quicker, improve software quality, and reduce the time it takes to validate and release new software updates.

The basic challenges of continuous integration include maintaining a single source code repository, automating builds (and building fast), and automating testing. Additional challenges include testing on a clone of the production environment, providing visibility of the process to the team, and allowing developers to obtain the latest version easily. The goal of this whitepaper is to show you how using Jenkins on AWS is a strategy fit to address these CI challenges.

Continuous Delivery and Deployment

Continuous delivery (CD) is a software development practice where code changes are automatically built, tested, and prepared for production release. It expands upon continuous integration by deploying all code changes to a testing environment, a production environment, or both after the build stage has been completed. When continuous delivery is properly implemented, developers always have a deployment-ready build artifact that has passed through a standardized test process. With continuous deployment, revisions are deployed to a production environment automatically without explicit approval from a developer, making the entire software release process automated. This, in turn, allows for the product to be in front of its customers early on, and for feedback to start coming back to the development teams.

Why Use Jenkins?

Jenkins is a very popular product among AWS customers who want to automate their CI/CD pipelines.

  • It accomplishes all of the phases described in the previous section.

  • It integrates very well across languages, platforms, and operating systems.

  • It’s open-source software.

Jenkins works well on AWS and with AWS because it’s available on the AWS Marketplace, it’s widely documented, and it’s very well integrated. Additionally, Jenkins plugins are available for a number of AWS services. The rest of this whitepaper discusses some of those plugins and what they allow our customers to accomplish.

From the Jenkins official website:

"The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project."

https://jenkins.io/

On this page: