Jenkins is a free to use and open source automation server written in Java. It is created to enable developers around the world to reliably build, test, and deploy their software of any kind. Jenkins is designed to be modular and you can easily extend its functionality by developing your own Jenkins plugins.
This guide will cover all the steps required to install and run Jenkins Server on Amazon Linux 2 and secure it with Let’s Encrypt SSL certificate. By the end of this article you should have a working Jenkins server and ready to automate all sorts of tasks related to building, testing, and delivering or deploying software.
As there are many ways of installing Jenkins, mainly native system packages, Docker, or running is a standalone on any machine with a Java Runtime Environment (JRE) installed. We will be focusing on the package installation method as it is the easiest and most convenient method.
These are the minimum hardware requirements for installing Jenkins on Amazon Linux 2 server.
- 256 MB of RAM, 1 GB+ recommended
- 1 CPU core at minimum
- 1 GB of drive space (although 10 GB is a recommended minimum if running Jenkins as a Docker container)
Step 1: Update Amazon Linux 2 server
Start an SSH session to your Amazon Linux 2 server.
$ ssh [email protected]
Warning: Permanently added '104.236.4.70' (ECDSA) to the list of known hosts.
Enter passphrase for key '/Users/jkmutai/.ssh/id_rsa':
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
10 package(s) needed for security, out of 24 available
Run "sudo yum update" to apply all updates.
[[email protected] ~]$
Let’s make sure our Amazon Linux 2 server is up-to-date.
sudo yum -y update
Perform a system reboot after the upgrade is done.
sudo systemctl reboot
Step 2: Install Java on Amazon Linux 2
Jenkins main requirement is Java runtime environment. Java packages are available in the system upstream repositories.
We will install OpenJDK 11 in the server.
sudo amazon-linux-extras install java-openjdk11
Hit the y key in your keyboard when asked before installation commences.
...
Transaction Summary
==================================================================================================================================================================
Install 1 Package (+31 Dependent packages)
Total download size: 46 M
Installed size: 183 M
Is this ok [y/d/N]: y
Confirm installation by checking the Java version.
$ java --version
openjdk 11.0.7 2020-04-14 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.7+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.7+10-LTS, mixed mode, sharing)
Step 3: Add Jenkins repository to Amazon Linux 2 server
I had stated earlier that we’ll use the package installation method. In this method a package repository is required which can be added by running the following command in the terminal.
sudo tee /etc/yum.repos.d/jenkins.repo<
Import GPG repository key.
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
Update the list of repositories to confirm it is working.
$ sudo yum repolist
Loaded plugins: langpacks, priorities, update-motd
jenkins | 2.9 kB 00:00:00
jenkins/primary_db | 161 kB 00:00:00
repo id repo name status
amzn2-core/2/x86_64 Amazon Linux 2 core repository 22,852
amzn2extra-docker/2/x86_64 Amazon Extras repo for docker 36
amzn2extra-java-openjdk11/2/x86_64 Amazon Extras repo for java-openjdk11 64
jenkins Jenkins 596
Step 4: Install Jenkins Server on Amazon Linux 2 server
The final step is the actual installation of Jenkins Server in Amazon Linux 2 system.
sudo yum install jenkins
Accept to start the installation of Jenkins on Amazon Linux 2 server.
...
Dependencies Resolved
==================================================================================================================================================================
Package Arch Version Repository Size
==================================================================================================================================================================
Installing:
jenkins noarch 2.270-1.1 jenkins 67 M
Transaction Summary
==================================================================================================================================================================
Install 1 Package
Total size: 67 M
Installed size: 68 M
Is this ok [y/d/N]: y
Start and enable the jenkins service to start at the OS boot.
$ sudo systemctl start jenkins
$ sudo systemctl enable jenkins
jenkins.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig jenkins on
Confirm the service is running and set to autostart.
$ systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
Active: active (running) since Wed 2020-12-09 17:52:04 UTC; 9s ago
Docs: man:systemd-sysv-generator(8)
Process: 2911 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/jenkins.service
└─2932 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenki...
Dec 09 17:52:03 amazon-linux systemd[1]: Starting LSB: Jenkins Automation Server...
Dec 09 17:52:03 amazon-linux runuser[2916]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)
Dec 09 17:52:04 amazon-linux jenkins[2911]: Starting Jenkins [ OK ]
Dec 09 17:52:04 amazon-linux systemd[1]: Started LSB: Jenkins Automation Server.
$ systemctl is-enabled jenkins
jenkins.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig jenkins --level=5
enabled
The Jenkins service will bind to port 8080 by default.
$ sudo ss -tunelp | grep 8080
tcp LISTEN 0 50 *:8080 *:* users:(("java",pid=2932,fd=139)) uid:996 ino:26048 sk:f v6only:0 <->
Step 5: Access Jenkins Server on Amazon Linux 2
If the service was started successfully the Web console can be accessed on:
http://[serverip_ip_or_hostname]:8080
The default login password is store in this file:
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
7c893b9829dd4ba08244ad77fae9fe4f
Copy the password from the said location and paste it in the box.
Agree to install suggested Plugins which extends Jenkins with additional features to support many different needs.
Once the plugins are installed create first admin user.
Jenkins Instance access URL will be printed in the screen that follows. This can be changed with a valid DNS name.
Finish the setup to start using Jenkins. For more reading on configurations refer to official Jenkins Documentation