Installing Jenkins Opensource

Jenkins is an automation server written in "Java" and has an embedded servlet container/application server built-in "Jetty". Jetty is developed and maintained by eclipse.org. It Provides a web server and javax.servlet container. It has impressive support for HTTP/2, WebSocket, OSGi, JMX and many other integrations. It is also very simple to use Jetty alternatives like Apache Tomcat (or) Glassfish to host Jenkins.

System Requirements

Jenkins environment sizing depends on many factors. Sometimes achieve a correct configuration requires experimentation and experience. However below mentioned are some of the best practices to keep in mind for smart approximation of system requirements. As an organization matures from a continuous delivery standpoint, its Jenkins requirements will similarly grow. This growth is often reflected in the Jenkins controllers architecture, whether that be "vertical" or "horizontal" growth. Vertical scale is when a controllers load is increased by having more configured jobs or orchestrating more frequent builds. This may also mean that more teams are depending on that one controller. Horizontal scale is the creation of additional controllers within an organization to accommodate new teams or projects, rather than adding these things to an existing single controller. It is always highly recommended to follow horizontal growth and by enabling distributed builds architecture.

Resource requirements of Jenkins Controller

The amount of compute resource that controller needs depends on many factors. Memory sizing can vary from 1GB to 20+GB. In general, it is a bad practice to allocate executors on a controller, as builds can quickly consume the controllers compute resources causing you to loose the Build and have to redo it. Executing builds on the ontroller creates a single point of failure causing unnecessary downtime and disruption to your developers. Adding multiple agents to controller OnDemand is the recommend option to offload Jenkins controller with builds. Each build node connection will take 2-3 threads, which equals about 2 MB or more of memory. You will also need to factor in CPU overhead for Jenkins if there are users who will be accessing the Jenkins user interface.

Hidden Options

Before we proceed with installation, lets us talk about hidden features and how to enable to enable them with JAVA_OPTS. System properties are defined by passing `-Dproperty=value` to the java command line to start Jenkins. Change the URL in the footer

-Dhudson.footerURL=https://www.servanamanaged.com Set Content Security Policy header sent for static files served by Jenkins as false. -Dhudson.model.DirectoryBrowserSupport.CSP=

Set Time zone for Jenkins

-Duser.timezone=Europe/London

Enable Start-up performance logging

-Djenkins.model.Jenkins.logStartupPerformance=true

Enable Java Min and Max memory thresholds to Jenkins

'-Xms2048m -Xmx3000m'

Complete list of features controlled by system properties are available in link.

Jenkins System Properties Likewise some of the key plugins have hidden features that can be enabled through JAVA Options.

Over Provisioning of Jenkins agents

By default, Jenkins spawns agents conservatively. Say, if there are 2 builds in queue, it won't spawn 2 executors immediately. It will spawn one executor and wait for some time for the first executor to be freed before deciding to spawn the second executor. Jenkins makes sure every executor it spawns is utilized to the maximum. If you want to override this behaviour and spawn an executor for each build in queue immediately without waiting, you can use these flags during Jenkins start-up: -Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85

S3 Artifact manager - Delete artifacts

Only relevant if you use the AWS S3 Artifact Manager plugin but here are two config properties. Dio.jenkins.plugins.artifact_manager_jclouds.s3.S3BlobStoreConfig.deleteArtifacts=true

S3 Artifact manager - Delete stash

This one deletes stashes. Dio.jenkins.plugins.artifact_manager_jclouds.s3.S3BlobStoreConfig.deleteStashes=true

Prerequisites
Remove old versions of java installations and install [Java 1.8+](https://java.com/en/download/manual.jsp) Jenkins installation through war file:

Download the Web application Archive (WAR) file of the respective Jenkins version of interest from link for Jenkins stable war file. It is always recommended to download the latest version, as it has all the security fixes and newly released features. This installation steps work on any operating system or platform that supports Java 1.8+. 1. Open up a terminal/command prompt window to the download directory. 2. Run the command `java -jar jenkins.war`. 3. Browse to http://localhost:8080 and wait until the Unlock Jenkins page appears. 4. Continue with post installation steps. Step-2 in the above mentioned list is where you can pass the hidden features as java options.

Jenkins installation on Mac OS

Download the Mac archive (PKG) file of the respective Jenkins version of interest from [link to Jenkins for Mac OS](http://mirrors.jenkins.io/osx/). Open the file and proceed with installation wizard. (or) Installation through brew is as simple as below; ``` brew install jenkins-lts ```

Jenkins Installation on Debian/Ubuntu

On Debian-based distributions, such as Ubuntu, you can install Jenkins through apt. Recent versions are available in an apt repository. Older but stable LTS versions are in this apt repository.

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt-get update sudo apt-get install jenkins

Jenkins Installation on Windows

Download the zip file from [link to Jenkins for Windows](http://mirrors.jenkins.io/windows/) of the respective Jenkins version of interest and follow the package installation wizard.

Jenkins Installation on Docker

One command does everything. docker run --name jenkins -v $(pwd):/var/jenkins_home -p 8080:8080 -p 50000:50000 --env JAVA_OPTS=-Dhudson.footerURL=http://www.servanamanaged.com jenkins/jenkins:lts

Post-installation setup wizard

After downloading, installing and running Jenkins using one of the procedures above, the post-installation setup wizard begins.

This setup wizard takes you through are a few quick "one-off" steps to unlock Jenkins, customize it with plugins and create the first administrator user through which you can continue accessing Jenkins.

Unlocking Jenkins

When you first access a new Jenkins instance;

  1. Browse to http://localhost:8080 (or whichever port you configured for Jenkins when installing it) and wait until the Unlock Jenkins page appears.

  2. From the Jenkins console log output, copy the automatically-generated alphanumeric password (or) open the file located in; /var/Jenkins_home/secrets/initialAdminPassword

On the Unlock Jenkins page, paste this password into the Administrator password field and click Continue.

Customizing Jenkins with plugins

After unlocking Jenkins, the Customize Jenkins page appears. Here you can install any number of useful plugins as part of your initial setup. On the Jenkins install page select one of the following options;

To install the recommended set of plugins, which are based on most common use cases.

  1. Install suggested plugins

  2. Select plugins to install

To choose which set of plugins to initially install select;

When you first access the plugin selection page, the suggested plugins are selected by default. The setup wizard shows the progression of Jenkins being configured and your chosen set of Jenkins plugins being installed. This process may take a few minutes.

Creating the first administrator user

  1. When the Create First Admin User page appears, specify the details for your administrator user in the respective fields and click Save and Finish.

  2. When the Jenkins is ready page appears, click Start using Jenkins.

  3. If required, log in to Jenkins with the credentials of the user you just created and you are ready to start using Jenkins!

If you would rather leave managing Jenkins to the experts then check out our Managed Jenkin Service.

Testimonials

Our customers highly rate us.

© Copyright 2024 Servana Managed Services Ltd. All Rights Reserved. Servana Managed Services is a limited company registered in England and Wales with number #10551720 and VAT registered with number GB-284560287.