In this guide we are going to explore how to install and set up jenkins in Ubuntu 20.04 server.
Jenkins is an open source automation server which enables developers around the world to reliably build, test, and deploy their software. It is a popular open source automation tool to perform continuous integration and build automation. Jenkins allows to execute a predefined list of steps, e.g. to compile golang source code to build build binary file. The trigger for this execution can be time or event based.
Possible steps executed by Jenkins are for example:
- Cloning the code from source control system.
- execute a command to install dependencies required for the code to run
- Run tests for the software
- build the software to get an executable
- Publish test results
- publish the resulting binary code
Jenkins monitors the execution of the steps and allows to stop the process, if one of the steps fails. Jenkins can also send out notifications in case of a build success or failure.
Jenkins can be extended by additional plug-ins. For example, you can install plug-ins to support building and testing Android applications.
Related Content
- How to install and Configure Jenkins in Ubuntu 22.04
- How to install and set up Jenkins in FreeBSD 13
- How to install and set up Jenkins in Fedora 35
- How to install and set up Jenkins in Rocky Linux/Centos 8
Requirements
- A Linux system with Ubuntu 20.04 server (At least 2GB of Ram)
- A user account with sudo or root privileges
- Access to a terminal window/command line
- Recent Java version installed
Table of content
- Ensuring that the system is up to date
- Install Java
- Install Jenkins
- Starting and enabling jenkins
- Accessing Jenkins
- Optional: Accessing jenkins using a domain
1. Ensuring that the system is up to date
Before proceeding, ensure that your system has updated packages. Use this command to achieve this:
sudo apt update
sudo apt upgrade -y
2. Install Java
Ensure that java is working as expected. Type this command to check the java version
java -version
If that command results in an error, you need to install java runtime env.
sudo apt install -y default-jre
3. Install Jenkins
First add the key to your system:
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
Then add the following entry in your /etc/apt/sources.list
:
deb https://pkg.jenkins.io/debian-stable binary/
Update your local package index, then finally install Jenkins:
sudo apt-get update
sudo apt-get install jenkins
4. Starting and enabling jenkins
Ensure that jenkins is tunning as extected by checking the systemd service status
sudo systemctl status jenkins
You should see something like this:
● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: active (exited) since Sat 2021-07-31 17:22:57 UTC; 5s ago
Docs: man:systemd-sysv-generator(8)
Process: 18175 ExecStart=/etc/init.d/jenkins start (code=exited, status=0/SUCCESS)
Jul 31 17:22:55 frhb64566ds systemd[1]: Starting LSB: Start Jenkins at boot time...
Jul 31 17:22:55 frhb64566ds jenkins[18175]: Correct java version found
Jul 31 17:22:55 frhb64566ds jenkins[18175]: * Starting Jenkins Automation Server jenkins
Jul 31 17:22:55 frhb64566ds su[18214]: (to jenkins) root on none
Jul 31 17:22:55 frhb64566ds su[18214]: pam_unix(su-l:session): session opened for user jenkins by (uid=0)
Jul 31 17:22:56 frhb64566ds su[18214]: pam_unix(su-l:session): session closed for user jenkins
Jul 31 17:22:57 frhb64566ds jenkins[18175]: ...done.
Jul 31 17:22:57 frhb64566ds systemd[1]: Started LSB: Start Jenkins at boot time.
5. Accessing Jenkins
Access the jenkins server using the public ip on port 8080. If you are accessing the jenkins server locally, use
http://localhost:8080
Get the jenkins public ip
curl -4 icanhazip.com
You can then navigate to http://public_ip:8080
6. Optional: Accessing jenkins using a domain name
If you want to access jenkins using a domain name, you can use something like nginx to proxy traffic. Nginx allows you to proxy the traffic and terminate ssl if need be.
Install nginx
sudo apt install -y nginx
Ensure that nginx is running
sudo systemctl status nginx
Create an nginx server for jenkins in /etc/nginx/conf.d
with the content to serve:
File /etc/nginx/conf.d/jenkins.conf
server {
listen 80;
listen [::]:80;
server_tokens off;
server_name your.domain.com;
## Deny illegal Host headers
if ($host !~* ^(your.domain.com)$ ) {
return 444;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}
Restart nginx:
sudo systemctl restart nginx
Map the A
record of the domain your.domain.com
to the IP address of your server and you should be able to access it using http://your.domain.com
7. Configuring jenkins
The first time you access the jenkins server using the domain, you will be greeted with a getting started screen asking you to Unlock jenkins with an admin password from this path /var/lib/jenkins/secrets/initialAdminPassword
in the server.
Get the pasword by typing this
cat /var/lib/jenkins/secrets/initialAdminPassword
Upon entering the password, you will be taken to plugin install page. You have an option of installing common plugins or choosing what plugins to install.
I always prefer to custom pick plugins I want installed so I have control on what plugins are installed and what not.
Once the plugin installation is done, you will be redirected to a page to create Jenkins First User. I always create an Admin user then choose a strong password.
After that Ensure the correct URL is set in the last page of the instance configuration page. After this you will be redirected to the jenkins dashboard page.
From here you can Create jenkins jobs and use jenkins as you would wat.