Wednesday, April 22, 2020

Continuous Integration with Jenkins and Spring Boot App

Jenkins can be used for multiple purposes like whenever any developer commits any code changes to SCM, Jenkins triggers job which can Checkout the code, build it, run JUnit test case, run tools like sonar or checkmarx and if everything works properly then deploy it to some instance.

In this tutorial, I’ll share my knowledge on how can we automate our test process by introducing CI like Jenkins. We will configure Jenkins such that it should trigger it whenever any code commits by any developer to SCM, pull out the code from GIT, run maven to build and test the code.

  • Code upload on GIT (or use this link)
  • Jenkins up and running. Refer here for installation.
  Once your Jenkins is up and running then you will see below screen

  Configuration Steps:
·       Install the required plugin.
o   Make sure all the required plugins like GIT, Maven are already present
o   Goto Manage Jenkins -> manage plugins -> Installed tab

o   In case, if you don’t find the required plugin then search under the Available tab. E.g. to install the Maven Integration plugin.
o   Select plugin and click on Download now and install after restart.

o   It will take some time to download and install the plugin as per your network bandwidth.

     Set Java and Maven Path
o   by default, Jenkins pick up the JAVA and Maven path running on Ubuntu instance but if you have any specific java or maven directory then you can configure those as well.
o   Goto Manage Jenkins -> Global tool configuration

      Generate SSH keygen for Jenkins user
o   If you want to access a private Git repo, for example at GitHub, you need to generate an ssh key-pair. Create a SSH key with the following command.

o   The public-key must be uploaded to the service you are using, e.g., GitHub.

·       Setting up Jenkins job
o   The build of a project is handled via jobs in Jenkins. Click New Item. Afterward, enter a name for the job and select the Freestyle Project and press OK.

o   Add description of the job
o   Check Discard old builds. It will help you in cleaning the stale log. You can choose the log rotation based on the number of builds or days. Always enable and choose this option to make sure you are not running out of memory of Jenkins log.

o   Under Source code Management choose Git as we are going to checkout the code from GIT.SET git url ( and no need of credential as my repo is public and set branch as master.

o   Under Build triggers, choose poll SCM so that it should run this job whenever someone commit the code to the master branch.
o   Schedule value in * which defines the time.

o   Which means pull the SCM every day of every month and every minute of every hour.
o   Select top-level maven targets under Build and set Goals as clean package.

o   Apply and save the configuration.

·       Run the build
o   Job is created as jenkins-demo.

o   Click on jenkins-demo and then Build now to run the newly created job.

·       Congratulation! Your first job is created successfully and the blue circle under Build history means there was no issue during job execution and it ran successfully.

Tuesday, April 21, 2020

Jenkins Installation on Ubuntu

Jenkins is an open source Continuous Integration server capable of orchestrating a chain of actions that help to achieve the Continuous Integration process (and not only) in an automated fashion.

Jenkins is free and is entirely written in Java. Jenkins is a widely used application around the world that has around 300k installations and growing day by day.

It is a server-based application and requires a web server like Apache Tomcat. The reason Jenkins became so popular is that of its monitoring of repeated tasks which arise during the development of a project. For example, if your team is developing a project, Jenkins will continuously test your project builds and show you the errors in early stages of your development.

By using Jenkins, software companies can accelerate their software development process, as Jenkins can automate build and test at a rapid rate. Jenkins supports the complete development lifecycle of software from building, testing, documenting the software, deploying and other stages of a software development lifecycle.


  • Make sure you are logged in as a user with sudo privileges
  • Java 8 or later version up and running
    • sudo apt-get update
    • sudo apt-get install default-jdk
    • sudo java –version
  • Maven is up & running
    • Sudo apt-get install maven
    • Sudo mvn --version

Installation steps:
  • Add repository key to System
    •  wget -q -O - | sudo apt-key add -
  • Append the Debian package repository address to the server’s sources.list:
    •  sudo sh -c 'echo deb binary/ > /etc/apt/sources.list.d/jenkins.list'
  • sudo apt-get update
  • sudo apt-get install Jenkins
  • Start the Jenkins
    • sudo service jenkins start

By default, Jenkins will start on port 8080, find the IP address of your ubuntu using ifconfig command and try hitting http://ip:8080 from your browser to view the Jenkins dashboard.

Above screen is asking for Jenkins initial password which can be retrieved from initialAdminPassword file.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

From the next screen, click on install suggested plugin which will immediately begin the installation process:

Once done with the installation, you will be asked to set up the first administrative user. You can skip this step and continue as admin using the initial password we used above or we can create the Jenkins user.

Update all the fields and click on save and continue button. The next screen will be instance Configuration page that will ask to confirm the preferred URL for your Jenkins instance. Click Save and Finish.

Click Start using Jenkins to visit the main Jenkins dashboard:

Congratulation! your Jenkins is up and running on your Ubuntu instance.

How TOPT Works: Generating OTPs Without Internet Connection

Introduction Have you ever wondered how authentication apps like RSA Authenticator generate One-Time Passwords (OTPs) without requiring an i...