DEV Community

Varun Gujarathi
Varun Gujarathi

Posted on • Updated on

Setting up CI pipeline with Jenkins, GitHub & Docker on Ubuntu (Linux) machine

Table of Contents

Pre-requisites

You should know Docker, basic CI-CD concept & basics of what Jenkins is used for

You should have Linux OS like Ubuntu, Java (OpenJDK 11) & Docker installed

Description

This project was created to install Jenkins on a local machine (Ubuntu 16.04) and create a basic pipeline with GitHub & Docker

We will be doing is

  • Installing Jenkins and running it, on a local machine
  • Creating a docker image
  • Pushing it to docker hub using Jenkins' pipeline

Installing Jenkins

  1. Add repository keystream
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
Enter fullscreen mode Exit fullscreen mode

You must get a response printed as OK

  1. Now add the Debian package to your sources.list
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
Enter fullscreen mode Exit fullscreen mode
  1. Now, update system
sudo apt update
Enter fullscreen mode Exit fullscreen mode
  1. Finally, install Jenkins
sudo apt install jenkins
Enter fullscreen mode Exit fullscreen mode

Now, Jenkins is installed in your system and is ready to run.

Start, stop, status of Jenkins service

We would be using standard systemctl commands

  • To start
sudo systemctl start jenkins
Enter fullscreen mode Exit fullscreen mode
  • To check status
sudo systemctl status jenkins
Enter fullscreen mode Exit fullscreen mode
  • To stop
sudo systemctl stop jenkins
Enter fullscreen mode Exit fullscreen mode
  • To start on boot
sudo systemctl enable jenkins
Enter fullscreen mode Exit fullscreen mode

First time login

  1. Go to <IP_ADDRESS>:8080

  2. Jenkins login page should appear asking you to enter the administrator password

  3. Now open a terminal and type

sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Enter fullscreen mode Exit fullscreen mode

A string printed on the console is the administrator password, enter this is on Jenkins login page

  1. Choose Install selected plugins (You may choose Select plugins to install)

    Now it will install plugins and show you the details, it takes some time

  2. It would ask you to create a new 'Admin User'.

Now, Jenkins is configured for the system

Integrating GitHub with Jenkins

  1. Go to Manage Jenkins from the menu on the left pane

  2. Click on Manage Plugins

  3. Go to Advance tab

  4. Search & install GitHub Integration, Pipeline, Docker & Docker Pipeline plugins
    a. Click on Download now and install after restart
    b. On the next window select the checkbox for Restart Jenkins when the installation is complete and no jobs are running at the bottom of the page. Jenkins will restart once the plugin is downloaded

  5. Now go to your GitHub repository, go to Settings, go to Webhooks, click on Add Webhook

  6. For the payload URL, provide your Jenkins URL and the GitHub webhook path at the end of the URL - https://<JENKINS_URL>/github-webhook/.

  7. Content-type should be JSON

  8. In Which events would you like to trigger this webhook? select Just the push event.

Now we are ready to integrate any GitHub repository with Jenkins

Creating Pipeline

  1. On the dashboard, click on Create Job option

  2. Give a name to your pipeline

  3. Choose Pipeline

  4. In Build Triggers select GitHub hook trigger for GITScm polling

  5. In the Pipeline section choose definition as Pipeline script from SCM

  6. In the SCM (Source Code Management ) tab, select Git enter GitHub repository URL, and save

  7. Now copy Jenkinsfile in your repository base path

  8. Add Docker credentials to Jenkins host
    a. On the top right of the home page, click on the dropdown next to the username
    b. Select Credentials
    c. Go to System OR Click on Global from anyone pre-existing credentials
    d. Click on Add Credentials
    e. Keep scope Global
    f. Enter Docker Hub username & password and set some ID in ID field

  9. Now in the Jenkinsfile in the environment set the ID

The pipeline is now created, push code to GitHub to see the pipeline run

GitHub Repo:

GitHub logo varungujarathi9 / Jenkins-Hello-World

Installing Jenkins and creating a basic pipeline

Top comments (0)