Q: What is Jenkins?

Jenkins is an open-source continuous integration tool written in Java. It provides custom integration services for software development. It is a server-based system used by many development teams.

Q: Why should I use Jenkins?

You should use Jenkins if you are looking to accelerate your Software Development Lifecycle (SDLC). Jenkins allows you to integrate building, deploying and testing onto various environments, while reducing wait times for your development teams. Finally, because it allows you to continuously integrate, Jenkins is well-suited for DevOps and agile methodologies that use quick iteration cycles.

Q: Why should I run Jenkins on AWS?

AWS provides reliable, scalable, and secure infrastructure resources that are ideal for running applications such as Jenkins. By running Jenkins on AWS compute, you only pay for what you use and you can scale capacity up or down to match your specific needs.

Q: Will I own my Jenkins environment?

Yes - all of the resources created when executing this Getting Started guide remain yours and will live within your account. They will exist until you decide to terminate the Amazon EC2 instance.

Q: What is the cost of Jenkins?

Jenkins is open-source, free software. Your only cost is the underlying infrastructure on which Jenkins runs. For more information about cost, see Services Used and Cost.

Q: How can I secure Jenkins on AWS?

You should utilize Security Groups and use strong passwords. You should also make sure that your EC2 instance and Jenkins installation are up-to-date with the latest security patches. Security Groups act as virtual, stateful firewalls that control the traffic for one or more instances. If possible, narrow the IP range to only the relevant source IP addresses. Do not open any extraneous TCP or UDP ports (TCP 80 and 8080 are sufficient). When setting up passwords for Jenkins, follow usual password best practices and use lowercase and uppercase alphanumerical characters in addition to symbols (e.g. /, ., !, *…). You can ensure that your Amazon Linux instance has the latest packages installed by running yum update. This will also update Jenkins if you’ve installed it using yum, as per this guide’s instructions.

Q: Can I run Jenkins in a private subnet?

You can install Jenkins on an EC2 instance that is part of a public or a private subnet. If you want to place the instance in a private subnet you will need to make sure that you can access Jenkins’ front-end. If you are connecting through the internet you can opt to create a Jenkins target group and use an Application Load Balancer to create a public endpoint for your privately-hosted instance. If you are connecting from your own data center you will want to establish a VPN or connect to Jenkins through Direct Connect.

Q: How can I scale Jenkins?

There are a few ways you can ensure that Jenkins is going to keep up with your CI/CD needs. One straightforward way is to vertically scale the EC2 instance by changing the instance size. Another way would be to configure the Jenkins Amazon EC2 Container Service Plugin so as to farm out build jobs to Jenkins slave tasks on an ECS cluster.