Default title.
18 |Default text.
19 |├── Dockerfile
├── Jenkinsfile
├── README.md
├── Steps.txt
├── deployment.yml
├── pom.xml
├── service.yml
└── src
└── main
├── java
└── com
│ └── abhishek
│ └── StartApplication.java
└── resources
├── application.properties
├── static
├── css
│ └── main.css
└── js
│ └── main.js
└── templates
└── index.html
/Dockerfile:
--------------------------------------------------------------------------------
1 | # You can change this base image to anything else
2 | # But make sure to use the correct version of Java
3 | FROM adoptopenjdk/openjdk11:alpine-jre
4 |
5 | # Simply the artifact path
6 | ARG artifact=target/spring-boot-web.jar
7 |
8 | WORKDIR /opt/app
9 |
10 | COPY ${artifact} app.jar
11 |
12 | # This should not be changed
13 | ENTRYPOINT ["java","-jar","app.jar"]
14 |
--------------------------------------------------------------------------------
/Jenkinsfile:
--------------------------------------------------------------------------------
1 | pipeline {
2 | agent any
3 |
4 | tools {
5 | jdk 'jdk11'
6 | maven 'maven3'
7 | }
8 |
9 | environment{
10 | SCANNER_HOME= tool 'sonar-scanner'
11 | }
12 |
13 | stages {
14 | stage('Git Checkout ') {
15 | steps {
16 | git branch: 'main', changelog: false, poll: false, url: 'https://github.com/jaiswaladi246/SpringBoot-WebApplication.git'
17 | }
18 | }
19 |
20 | stage('Code Compile') {
21 | steps {
22 | sh "mvn compile"
23 | }
24 | }
25 |
26 | stage('Run Test Cases') {
27 | steps {
28 | sh "mvn test"
29 | }
30 | }
31 |
32 | stage('Sonarqube Analysis') {
33 | steps {
34 | withSonarQubeEnv('sonar-server') {
35 | sh ''' $SCANNER_HOME/bin/sonar-scanner -Dsonar.projectName=Java-WebApp \
36 | -Dsonar.java.binaries=. \
37 | -Dsonar.projectKey=Java-WebApp '''
38 |
39 | }
40 | }
41 | }
42 |
43 | stage('OWASP Dependency Check') {
44 | steps {
45 | dependencyCheck additionalArguments: '--scan ./ ', odcInstallation: 'DP'
46 | dependencyCheckPublisher pattern: '**/dependency-check-report.xml'
47 | }
48 | }
49 |
50 | stage('Maven Build') {
51 | steps {
52 | sh "mvn clean compile"
53 | }
54 | }
55 |
56 | stage('Docker Build & Push') {
57 | steps {
58 | script {
59 | withDockerRegistry(credentialsId: 'b289dc43-2ede-4bd0-95e8-75ca26100d8d', toolName: 'docker') {
60 | sh "docker build -t webapp ."
61 | sh "docker tag webapp adijaiswal/webapp:latest"
62 | sh "docker push adijaiswal/webapp:latest "
63 | }
64 | }
65 | }
66 | }
67 |
68 | stage('Docker Image scan') {
69 | steps {
70 | sh "trivy image adijaiswal/webapp:latest "
71 | }
72 | }
73 |
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # SpringBoot-WebApplication
2 |
3 | ## Tutorial Of Implementation at Below :
4 | ## https://www.youtube.com/@devopsshack
5 |
--------------------------------------------------------------------------------
/Steps.txt:
--------------------------------------------------------------------------------
1 |
2 | --- JDK & Maven Installation ---
3 |
4 | sudo apt-get update -y
5 | sudo apt install openjdk-11-jre -y
6 | sudo apt-get install maven -y
7 |
8 | --- Docker Installation ---
9 |
10 | sudo apt-get update -y
11 | sudo apt-get install docker.io -y
12 | service docker restart
13 | sudo usermod -aG docker $USER
14 | newgrp docker
15 | sudo chmod 666 /var/run/docker.sock
16 | sudo systemctl restart docker
17 |
18 | --- KUBERNETES ---
19 |
20 | # Step1:
21 |
22 | #On Master and slave
23 |
24 | apt-get update -y
25 | apt-get install docker.io -y
26 | service docker restart
27 | curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
28 | echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" >/etc/apt/sources.list.d/kubernetes.list
29 | apt-get update
30 | apt install kubeadm=1.20.0-00 kubectl=1.20.0-00 kubelet=1.20.0-00 -y
31 |
32 | # Step2:
33 |
34 | #On Master node:
35 |
36 | kubeadm init --pod-network-cidr=192.168.0.0/16
37 |
38 |
39 |
40 | # Step3:
41 |
42 | # On Master node:
43 |
44 | mkdir -p $HOME/.kube
45 | sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
46 | sudo chown $(id -u):$(id -g) $HOME/.kube/config
47 |
48 |
49 |
50 | # step4:
51 |
52 | #On Master node:
53 |
54 | kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.1/manifests/calico.yaml
55 | kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.49.0/deploy/static/provider/baremetal/deploy.yaml
56 |
57 |
58 |
59 | ##################################################################################################################################################
60 |
61 |
62 | --- INSTALL JENKINS ---
63 |
64 | sudo apt install openjdk-11-jre
65 |
66 | curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
67 | /usr/share/keyrings/jenkins-keyring.asc > /dev/null
68 | echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
69 | https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
70 | /etc/apt/sources.list.d/jenkins.list > /dev/null
71 | sudo apt-get update -y
72 | sudo apt-get install jenkins -y
73 |
74 | sudo systemctl enable jenkins
75 | sudo systemctl start jenkins
76 | sudo systemctl status jenkins
77 |
78 |
79 |
80 | ---TRIVY INSTALLATION STEPS---
81 |
82 | sudo apt-get install wget apt-transport-https gnupg lsb-release
83 |
84 | wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null
85 |
86 | echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/trivy.list
87 |
88 | sudo apt-get update
89 |
90 | sudo apt-get install trivy -y
91 |
--------------------------------------------------------------------------------
/deployment.yml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | name: spring-boot-app
5 | labels:
6 | app: spring-boot-app
7 | spec:
8 | replicas: 1
9 | selector:
10 | matchLabels:
11 | app: spring-boot-app
12 | template:
13 | metadata:
14 | labels:
15 | app: spring-boot-app
16 | spec:
17 | containers:
18 | - name: spring-boot-app
19 | image: adijaiswal/xyz:tag
20 | ports:
21 | - containerPort: 8081
22 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
Default text.
19 |