DMCA.com Protection Status Trending Topics About Devops

Sunday, 1 October 2023

Stages Real-World CI/CD DevSecOps Pipeline for Deployment of Petclinic Application

 

sudo apt-get update

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null

sudo apt update
sudo apt install openjdk-17-jdk
sudo apt install openjdk-17-jre

sudo systemctl enable jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins

sudo cat /var/lib/jenkins/secrets/initialAdminPassword
<EC2 Public IP Address:8080>
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
sudo apt-get update
sudo apt-get install docker.io -y
sudo usermod -aG docker $USER
sudo chmod 777 /var/run/docker.sock
sudo docker ps
docker run -d --name sonar -p 9000:9000 sonarqube:lts-community
sudo apt-get install wget apt-transport-https gnupg lsb-release

wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null

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

sudo apt-get update

sudo apt-get install trivy -y
pipeline {
agent any

tools{
jdk 'jdk17'
maven 'maven3'
}

stages{

stage("Git Checkout"){
steps{
git branch: 'main', changelog: false, poll: false, url: 'https://github.com/writetoritika/Petclinic.git'
}
}

stage("Compile"){
steps{
sh "mvn clean compile"
}
}

stage("Test Cases"){
steps{
sh "mvn test"
}
}
}
}
pipeline {
agent any

tools{
jdk 'jdk17'
maven 'maven3'
}

environment {
SCANNER_HOME=tool 'sonar-scanner'
}

stages{

stage("Git Checkout"){
steps{
git branch: 'main', changelog: false, poll: false, url: 'https://github.com/writetoritika/Petclinic.git'
}
}

stage("Compile"){
steps{
sh "mvn clean compile"
}
}

stage("Test Cases"){
steps{
sh "mvn test"
}
}


}
}
}
   stage("OWASP Dependency Check"){
steps{
dependencyCheck additionalArguments: '--scan ./ --format HTML ', odcInstallation: 'DP-Check'
dependencyCheckPublisher pattern: '**/dependency-check-report.xml'
}
}
stage("Build"){
steps{
sh " mvn clean install"
}
}
pipeline {
agent any

tools{
jdk 'jdk17'
maven 'maven3'
}

environment {
SCANNER_HOME=tool 'sonar-scanner'
}

stages{

stage("Git Checkout"){
steps{
git branch: 'main', changelog: false, poll: false, url: 'https://github.com/writetoritika/Petclinic.git'
}
}

stage("Compile"){
steps{
sh "mvn clean compile"
}
}

stage("Test Cases"){
steps{
sh "mvn test"
}
}

stage("Sonarqube Analysis "){
steps{
withSonarQubeEnv('sonar-server') {
sh ''' $SCANNER_HOME/bin/sonar-scanner -Dsonar.projectName=Petclinic \
-Dsonar.java.binaries=. \
-Dsonar.projectKey=Petclinic '
''

}
}
}


stage("Build"){
steps{
sh " mvn clean install"
}
}

stage("OWASP Dependency Check"){
steps{
dependencyCheck additionalArguments: '--scan ./ ' , odcInstallation: 'DP-Check'
dependencyCheckPublisher pattern: '**/dependency-check-report.xml'
}
}

}
}
    stage("Docker Build & Push"){
steps{
script{
withDockerRegistry(credentialsId: ''bc86df08-bacf-4695-99cb-8cefb3406235', toolName: 'docker') {

sh "docker build -t petclinic1 ."
sh "docker tag petclinic1 writetoritika/pet-clinic123:latest "
sh "docker push writetoritika/pet-clinic123:latest "

}
}
}
}
docker images
stage("Deploy Using Docker"){
steps{
sh " docker run -d --name pet1 -p 8082:8082 writetoritika/pet-clinic123:latest "
}
}
cd /opt/
sudo wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
sudo tar -xvf apache-tomcat-9.0.65.tar.gz
sudo rm -rf apache-tomcat-9.0.65
sudo su

cd /opt/apache-tomcat-9.0.65/conf
sudo vi tomcat-users.xml
---add-below-line at the end (2nd-last line)----
<user username="admin" password="admin1234" roles="admin-gui, manager-gui"/>



sudo ln -s /opt/apache-tomcat-9.0.65/bin/startup.sh /usr/bin/startTomcat
sudo ln -s /opt/apache-tomcat-9.0.65/bin/shutdown.sh /usr/bin/stopTomcat



sudo vi /opt/apache-tomcat-9.0.65/webapps/manager/META-INF/context.xml
comment:
<!-- Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->

sudo vi /opt/apache-tomcat-9.0.65/webapps/host-manager/META-INF/context.xml
comment:
<!-- Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->



sudo stopTomcat
sudo startTomcat
  stage("Deploy To Tomcat"){
steps{
sh "cp /var/lib/jenkins/workspace/Real-World-CI-CD/target/petclinic.war /opt/apache-tomcat-9.0.65/webapps/ "
}
}
pipeline {
agent any

tools{
jdk 'jdk17'
maven 'maven3'
}

environment {
SCANNER_HOME=tool 'sonar-scanner'
}

stages{

stage("Git Checkout"){
steps{
git branch: 'main', changelog: false, poll: false, url: 'https://github.com/writetoritika/Petclinic.git'
}
}

stage("Compile"){
steps{
sh "mvn clean compile"
}
}

stage("Test Cases"){
steps{
sh "mvn test"
}
}




stage("Build"){
steps{
sh " mvn clean install"
}
}

stage("OWASP Dependency Check"){
steps{
dependencyCheck additionalArguments: '--scan ./ ' , odcInstallation: 'DP-Check'
dependencyCheckPublisher pattern: '**/dependency-check-report.xml'
}
}

stage("Docker Build & Push"){
steps{
script{
withDockerRegistry(credentialsId: 'bc86df08-bacf-4695-99cb-8cefb3406235', toolName: 'docker') {


sh "docker build -t petclinic1 ."
sh "docker tag petclinic1 writetoritika/pet-clinic123:latest "
sh "docker push writetoritika/pet-clinic123:latest "

}
}
}
}

stage("Deploy Using Docker"){
steps{
sh " docker run -d --name pet12 -p 8082:8082 writetoritika/pet-clinic123:latest "
}
}

stage("Deploy To Tomcat"){
steps{
sh "cp target/petclinic.war /opt/apache-tomcat-9.0.65/webapps/ "
}
}
}
}