Set Up a Jenkins BuildServerOctober 2016

2016, Amazon Web Services, Inc. or its affiliates. All rights reserved.NoticesThis document is provided for informational purposes only. It represents AWS’scurrent product offerings and practices as of the date of issue of this document,which are subject to change without notice. Customers are responsible formaking their own independent assessment of the information in this documentand any use of AWS’s products or services, each of which is provided “as is”without warranty of any kind, whether express or implied. This document doesnot create any warranties, representations, contractual commitments,conditions or assurances from AWS, its affiliates, suppliers or licensors. Theresponsibilities and liabilities of AWS to its customers are controlled by AWSagreements, and this document is not part of, nor does it modify, any agreementbetween AWS and its customers.

ContentsIntroduction1Step 1: Set Up Prerequisites2Step 2: Launch an EC2 Instance2Create a Security Group for Your Amazon EC2 Instance2Launch Your EC2 Instance4Step 3: Install and Configure Jenkins5Connect to Your Linux Instance5Download and Install Jenkins8Configure Jenkins9Step 4: Clean UpDelete Your EC2 InstanceAdditional Resources101011

Amazon Web Services – Set Up a Jenkins Build ServerIntroductionJenkins is an open-source automation server that integrates with a number ofAWS Services, such as AWS CodeCommit, AWS CodeDeploy, Amazon EC2 Spot,and Amazon EC2 Fleet. You can use Amazon Elastic Compute Cloud (AmazonEC2) to deploy a Jenkins application on AWS in a matter of minutes.This tutorial walks you through the process of deploying a Jenkins application.You will launch an EC2 instance, install Jenkins on that instance, and configureJenkins to automatically spin up Jenkins build slave instances if build abilitiesneed to be augmented on the instance.In this tutorial, you will perform the following steps: Step 1: Set Up Prerequisites Step 2: Launch an EC2 Instance Step 3: Install and Configure Jenkins Step 4: Clean UpThis tutorial is not meant for production environments, and does not discussoptions in depth. After you complete the steps in this tutorial, you can find morein-depth information to create your own Jenkins application in the AdditionalResources section.Page 1

Amazon Web Services – Set Up a Jenkins Build ServerStep 1: Set Up PrerequisitesTo prepare for this tutorial, you will need an AWS account, an AWS Identity andAccess Management (IAM) user name and password, an Amazon EC2 key pair,and a configured Virtual Private Cloud (VPC). Detailed instructions can befound in Setting Up to Host a Web App on AWS. 1Important:For this tutorial, be sure that you are using the Amazon EC2 console (and not,for example, the Amazon VPC console). 2 Otherwise, the directions will notmatch what you see.Step 2: Launch an EC2 InstanceIn this step you will launch a virtual server to host Jenkins. These virtual serversare called EC2 instances. Typically, you start from a base image called anAmazon Machine Image (AMI).You will complete the following tasks: Create a Security Group for Your Amazon EC2 Instance Launch Your EC2 InstanceCreate a Security Group for Your Amazon EC2InstanceA security group acts as a firewall that controls the traffic allowed to reach oneor more EC2 instances. When you launch an instance, you can assign it one ormore security groups. You add rules to each security group that control thetraffic allowed to reach the instances to which the security group is assigned.Note that you can modify the rules for a security group at any time; the newrules take effect immediately.For this tutorial, you will create a security group and add the following rules: Page 2Allow inbound HTTP access from anywhere

Amazon Web Services – Set Up a Jenkins Build Server Allow inbound SSH traffic from your computer's public IP address sothat you can connect to your instanceTo create and configure your security group:1. Decide who may access your instance, for example, a single computer orall trusted computers on a network. For this tutorial, you can use thepublic IP address of your computer. To find your IP address, use thecheckip service from AWS 3 or search for the phrase "what is my IPaddress" in any Internet search engine.If you are connecting through an ISP or from behind your firewallwithout a static IP address, you will need to find the range of IPaddresses used by client computers. If you don't know this address range,you can use for this tutorial. However, this is unsafe forproduction environments because it allows everyone to access yourinstance using SSH.2. Open the Amazon EC2 console at In the navigation bar, verify that US West (Oregon) is the selectedregion.4. In the left-hand navigation bar, choose Security Groups, and then clickCreate Security Group.5. In Security group name enter WebServerSG and provide adescription.6. Choose your VPC from the list.7. On the Inbound tab, add the rules as follows:a. Click Add Rule, and then choose SSH from the Type list. UnderSource, select Custom and in the text box enter the public IPaddress range that you decided on in step 1.b. Click Add Rule, and then choose HTTP from the Type list.c. Click Add Rule, and then choose Custom TCP Rule from theType list. Under Port Range enter 8080.8. Click Create.For more information, see Security Groups in the Amazon EC2 User Guide forLinux Instances. 4Page 3

Amazon Web Services – Set Up a Jenkins Build ServerLaunch Your EC2 Instance1. In the left-hand navigation bar of the Amazon EC2 console, chooseInstances, and then click Launch Instance.2. On the Choose an Amazon Machine Image page, select Free tieronly, and then select an Amazon Linux AMI with the HVM virtualizationtype.3. On the Choose an Instance Type page, the t2.micro instance isselected by default. Keep this instance type to stay within the free tier.4. Click Next: Configure Instance Details.5. On the Configure Instance Details page, do the following:a. T2 instances must be launched into a subnet. From Network chooseyour VPC, and from Subnet choose one of your public subnets.b. For Auto-assign Public IP, ensure that Enable is selected from thelist. Otherwise, your instance will not get a public IP address or apublic DNS name.c. Click Review and Launch. If you are prompted to specify the typeof root volume, make your selection and then click Next.6. On the Review Instance Launch page, click Edit security groups.7. On the Configure Security Group page:d. Select Select an existing security group.e. Select the WebServerSG security group that you created.f. Click Review and Launch.8. On the Review Instance Launch page, click Launch.9. In the Select an existing key pair or create a new key pair dialogbox, select Choose an existing key pair, and then select the key pairyou created in Setting Up to Host Jenkins on AWS.10. Click the acknowledgement check box, and then click LaunchInstances.11. In the left-hand navigation bar, choose Instances to see the status ofyour instance. Initially, the status of your instance is pending. After thestatus changes to running, your instance is ready for use.Page 4

Amazon Web Services – Set Up a Jenkins Build ServerStep 3: Install and Configure JenkinsIn this step you will deploy Jenkins on your EC2 instance by completing thefollowing tasks: Connect to Your Linux Instance Download and Install Jenkins Configure JenkinsConnect to Your Linux InstanceAfter you launch your instance, you can connect to it and use it the way that youwould use a computer sitting in front of you.Before you connect to your instance, get the public DNS name of the instanceusing the Amazon EC2 console. Select the instance and locate Public DNS onthe Description tab.Tip:If your instance doesn't have a public DNS name, open the VPC console, selectthe VPC, and check the Summary tab. If either DNS resolution or DNShostnames is no, click Edit and change the value to yes.PrerequisitesThe tool that you use to connect to your Linux instance depends on theoperating system running on your computer. If your computer runs Windows,you will connect using PuTTY. If your computer runs Linux or Mac OS X, youwill connect using the SSH client. These tools require the use of your key pair.Be sure that you created your key pair as described in Create a Key Pair.To Connect to Your Linux Instance from Windows Using PuTTY1. From the Start menu, choose All Programs PuTTY PuTTY.2. In the Category pane, select Session, and complete the following fields:a. In Host Name, enter [email protected] dns name.Page 5

Amazon Web Services – Set Up a Jenkins Build Serverb. Ensure that Port is 22.3. In the Category pane, expand Connection, expand SSH, and thenselect Auth. Complete the following:a. Click Browse.b. Select the .ppk file that you generated for your key pair, asdescribed in Create a Key Pair, 5 and then click Open.c. Click Open to start the PuTTY session.Page 6

Amazon Web Services – Set Up a Jenkins Build Server4. If this is the first time you have connected to this instance, PuTTYdisplays a security alert dialog box that asks whether you trust the hostyou are connecting to. Click Yes. A window opens and you are connectedto your instance.To Connect to Your Instance from Linux or Mac OS X Using SSH1. Use the ssh command to connect to the instance. You will specify theprivate key (.pem) file and [email protected] dns name. ssh -i /path/my-key-pair.pem u will see a response like the following:The authenticity of host ' (' can't beestablished.Page 7

Amazon Web Services – Set Up a Jenkins Build ServerRSA key fingerprint 9f:f5:f1:6f.Are you sure you want to continue connecting(yes/no)?2. Enter yes.You will see a response like the following:Warning: Permanently added '' (RSA) to the list of known hosts.Download and Install JenkinsTo download and install Jenkins:1. To ensure that your software packages are up to date on your instance,use the following command to perform a quick software update:[ec2-user ] sudo yum update –y2. Add the Jenkins repo using the following command:[ec2-user ] sudo wget -O/etc/yum.repos.d/jenkins.repo Import a key file from Jenkins-CI to enable installation from thepackage:[ec2-user ] sudo rpm ey4. Install Jenkins:[ec2-user ] sudo yum install jenkins -y5. Start Jenkins as a service:[ec2-user ] sudo service jenkins startPage 8

Amazon Web Services – Set Up a Jenkins Build ServerConfigure JenkinsJenkins is now installed and running on your EC2 instance. To configureJenkins:1. Connect to http:// your server public DNS :8080 from your favoritebrowser. You will be able to access Jenkins through its managementinterface:2. As prompted, enter the password found in/var/lib/jenkins/secrets/initialAdminPassword. Use the followingcommand to display this password:[ec2-user ] sudo cat/var/lib/jenkins/secrets/initialAdminPassword3. The Jenkins installation script directs you to the Customize Jenkins page.Click Install suggested plugins.4. Once the installation is complete, enter Administrator Credentials, clickSave Credentials, and then click Start Using Jenkins.Page 9

Amazon Web Services – Set Up a Jenkins Build Server5. On the left-hand side, click Manage Jenkins, and then click ManagePlugins.6. Click on the Available tab, and then enter Amazon EC2 plugin at the topright.7. Select the checkbox next to Amazon EC2 plugin, and then click Installwithout restart.8. Once the installation is done, click Go back to the top page.9. Click on Manage Jenkins, and then Configure System.10. Scroll all the way down to the section that says Cloud.11. Click Add a new cloud, and select Amazon EC2. A collection of newfields appears.12. Fill out all the fields. (Note: You will have to Add Credentials of the kindAWS Credentials.)You are now ready to use EC2 instances as Jenkins build slaves.Step 4: Clean UpAfter completing this tutorial, be sure to delete the AWS resources that youcreated so that you do not continue to accrue charges.Delete Your EC2 Instance1. In the left-hand navigation bar of the Amazon EC2 console, chooseInstances.2. Right-click on the instance you created earlier and select InstanceState Terminate.Page 10

Amazon Web Services – Set Up a Jenkins Build ServerAdditional ResourcesWe recommend that you continue to learn more about the concepts introducedin this guide with the following resources: Jenkins on AWS DevOps/Jenkins on AWS.pdf DevOps and AWS: ml#create-a-key-pairPage 11

Step 3: Install and Configure Jenkins Step 4: Clean Up This tutorial is not meant for production environments, and does not discuss options in depth. After you complete the steps in this tutorial, you can find more in-depth information to crea