Jenkins OnPrem Project Architectural Diagram


Jenkins Server & Worker Commands


Pipeline

pipeline {

  environment {
    dockerimagename = "thakishore/nodeapp"
    dockerImage = ""
  }

  agent {
        label 'qa' // Ensure the node has Docker installed
    }

  stages {

    stage('Checkout Source') {
      steps {
        git credentialsId: 'github-credentials', 
            url: 'https://github.com/thakishorekumar/nodeapp.git',
            branch: 'master'  // or 'main' - check your default branch
      }
    }

    stage('Building image') {
      steps{
        script {
          dockerImage = docker.build dockerimagename
        }
      }
    }

    stage('Pushing Image') {
      environment {
               registryCredential = 'dockerhublogin'
           }
      steps{
        script {
          docker.withRegistry( 'https://registry.hub.docker.com', registryCredential ) {
            dockerImage.push("v1.2")
          }
        }
      }
    }

    stage('Deploying App to Kubernetes') {
      steps {
        script {
          kubernetesDeploy(configs: "deploymentservice.yml", kubeconfigId: "kubernetes")
        }
      }
    }

  }

}

deploymentservice.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nodeapp-deployment
  labels:
    app: nodeapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nodeapp
  template:
    metadata:
      labels:
        app: nodeapp 
    spec:
      containers:
      - name: nodeserver
        image: thakishore/nodeapp:v1.2
        ports:
        - containerPort: 3000


---

apiVersion: v1
kind: Service
metadata:
  name: nodeapp-service
spec:
  selector:
    app: nodeapp 
  type: ClusterIP
  ports:
  - protocol: TCP
    port: 5000
    targetPort: 3000

dockerfile
FROM node:latest

WORKDIR /usr/src/app

COPY package.json ./

RUN npm install

COPY . .

EXPOSE 4000
CMD [ "node", "index.js" ]

index.js
var express = require('express');
var app = express();

app.get('/', function (req, res) {
    res.send('{ "response": "Hello From Rajkumar and This is Node App!" }');
});

app.get('/will', function (req, res) {
    res.send('{ "response": "Hello World" }');
});
app.get('/ready', function (req, res) {
    res.send('{ "response": " Great!, It works!" }');
});
app.listen(process.env.PORT || 3000);
module.exports = app;

Execute shell

#!/bin/bash
            echo "Hello from Jenkins!"
            DATE=$(date)
            echo "Today is: $DATE"
            ls -l
            hostname
            cd /var/www/html/
            rm *.html
            pwd
            wget https://github.com/thakishorekumar/jenkinsdemo/blob/main/index.nginx-debian.html

Jenkins Server Setup Commands
    1  sudo apt-get install open-vm-tools-desktop -y
    2  sudo hostnamectl set-hostname jenkins
    3  sudo nano /etc/hosts
    4  sudo apt update
    5  sudo apt install fontconfig openjdk-21-jre
    6  java -version
    7  sudo wget -O /etc/apt/keyrings/jenkins-keyring.asc   https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
    8  echo "deb [signed-by=/etc/apt/keyrings/jenkins-keyring.asc]"   https://pkg.jenkins.io/debian-stable binary/ | sudo tee   /etc/apt/sources.list.d/jenkins.list > /dev/null
    9  sudo apt update
   10  sudo apt install jenkins
   11  sudo systemctl enable jenkins
   12  sudo systemctl start jenkins
   13  sudo systemctl status jenkins
   14  history
   15  ifconfig
   16  ping 192.168.1.41
   17  ssh 192.168.1.41
   18  systemctl status ufw
   19  systemctl stop ufw
   20  systemctl disable ufw
   21  ssh 192.168.1.41
   22  telnet 192.168.1.41
   23  telnet 192.168.1.41 22
   24  sestatus
   25* sudo 
   26  systemctl status ufw
   27  ssh 192.168.1.40
   28  netstat -anp | grep ssh
   29  netstat -tlpn | grep ssh
   30  sudo netstat -tlpn | grep ssh
   31  systemctl status ssh
   32  systemctl status ssd
   33  systemctl status sshd
   34  apt install openssh-server
   35  sudo apt install openssh-server
   36  systemctl status ssh
   37  systemctl start ssh
   38  systemctl enable ssh
   39  ssh 192.168.1.40
   40  ssh 192.168.1.41
   41  sudo ps -ef | grep java
   42  netstat -anp | grep 50000
   43  sudo netstat -anp | grep 50000
   44  ls
   45  history


Jenkins Agent

    1  nano /etc/ssh/sshd_config
    2  systemctl restart ssh
    3  exit
    4  sudo ps -ef | grep java
    5  netstat -tlpn | grep java
    6  netstat -tlpn | grep jar
    7  netstat -tlpn | grep slave
    8  netstat -tlpn
    9  netstat -anp | grep 50000
   10  netstat -anp
   11  sudo apt install nginx
   12  cat /var/www/html/index.nginx-debian.html 
   13  nano /var/www/html/index.nginx-debian.html 
   14  systemctl restart nginx
   15  nano /var/www/html/index.nginx-debian.html 
   16  wget https://github.com/thakishorekumar/jenkinsdemo/blob/main/index.nginx-debian.html
   17  ls
   18  cd /opt/jenkins-slave/workspace/jenkins-github
   19  ls
   20  cd /var/www/html/
   21  ls
   22  cat index.nginx-debian.html 
   23  cd /opt/jenkins-slave/workspace/jenkins-github
   24  ls
   25  cat index.nginx-debian.html
   26  curl -O https://github.com/thakishorekumar/jenkinsdemo/blob/main/index.nginx-debian.html
   27  apt  install curl
   28  curl -O https://github.com/thakishorekumar/jenkinsdemo/blob/main/index.nginx-debian.html
   29  ls
   30  cat index.nginx-debian.html
   31  rm index.nginx-debian.html
   32  rm index.nginx-debian.html.1
   33  cat index.nginx-debian.html
   34  curl -O https://github.com/thakishorekumar/jenkinsdemo/blob/main/index.nginx-debian.html
   35  ls
   36  cat index.nginx-debian.html 
   37  history

Deployment Images

Step 1:


Step 2:


Step 3:


Step 4:


Step 5:


Step 6:


Step 7:


Step 8: