Jenkins Installation and Configuration on Ubuntu

JenkinsUbuntu

Jenkins is a well-known CI environment. This technical note introduces how to install, config and run Jenkins based on Ubuntu System. All operations are validated on Ubuntu 16.04. For other Ubuntu release, please do related change if necessary.

Step 0: Install Java Environment

sudo apt install default-jre

Step 1: Install Jenkins

Firstly, add key and source list to system apt. Run below commands

wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | apt-key add -
echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list
sudo apt-get update

Run below command to install Jenkins.

sudo apt-get install jenkins

Step 2: Config Jenkins

By default, Jenkins is running on port 8080. Access link http://[SERVER_IP]:8080 with your browser, and filled out user name, password and install plugins according to the page instructions.

Step 3: Add job

Now, Jenkins is running. You can add jobs according to your requirement.

TIPS: All parameters of a Jenkins Job should be in upper case. Those parameters can be passed to shell script in format of $PARA.

Step 4: Change Jenkins port to 80(optional)

Usually it will be convenient to access Jenkins via port (such as via a domain name). There are 2 ways.

The 1st method is implemented via configuration file of Jenkins, i.e. parameter HTTP_PORT in file /etc/default/jenkins. Restart Jenkins service to make the change work (sudo service jenkins restart)

Another way is redirect all traffic of port 80 to 8080 via iptables.

Following is the Iptables rule.

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Reload iptables after above changes.

sudo service iptables save
sudo service iptables restart

Step 5: Apache reserve proxy(optional)

It is easy to config Apache as a reserve proxy, and access Jenkins with a domain. After configuration, you can sethttpListenAddress=127.0.0.1 to forbidden external access, all traffic will be routed via Apache reserve proxy and safety improvment

Firstly, enable proxy modules of Apache.

a2enmod proxy
a2enmod proxy_http

Config virtual Host,and restart Apache (sudo service apache2 restart)

<VirtualHost *:443>
  ServerName jenkins.domain
  ServerAlias www.jenkins.domain

  SSLEngine On
  SSLCertificateFile    /etc/apache2/ssl/crt/jenkins.domain.crt
  SSLCertificateKeyFile /etc/apache2/ssl/key/jenkins.domain.key

  ProxyRequests     Off
  ProxyPass         /  http://127.0.0.1:8080/
  ProxyPassReverse  /  http://127.0.0.1:8080/
  <Proxy http://127.0.0.1:8080/*>
    Order allow,deny
    Allow from all
  </Proxy>
  ProxyPreserveHost on
</VirtualHost>

About SSL configuration, please refer to this article.

Step 6: Install more plugins(Optinal)

Jenkins provides lots of useful plugins, you can install according to your requirements.