diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000000..f9cd4e5f9a4 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.venkatesh diff --git a/2019-Aug-9:30Am-jenkinsfile b/2019-Aug-9:30Am-jenkinsfile new file mode 100644 index 00000000000..50cbb35c29b --- /dev/null +++ b/2019-Aug-9:30Am-jenkinsfile @@ -0,0 +1,44 @@ +node('master'){ + // Add maven to path + env.PATH = "/opt/maven3/bin/:$PATH" + + stage('Git Clone/Pull'){ + git branch: 'dev', + url: 'https://github.com/javahometech/my-app' + } + + stage('Build Docker Image'){ + sh "mvn clean package" + sh "mv target/*.war target/myweb.war" + sh "docker build -t kammana/my-app:1.0 ." + } + + stage('Push Image'){ + withCredentials([string(credentialsId: 'docker-hub', variable: 'dockerHubPwd')]) { + sh "docker login -u kammana -p ${dockerHubPwd}" + } + sh "docker push kammana/my-app:1.0" + } + + stage('Delete Old Container'){ + sshagent (credentials: ['dev-docker']) { + try{ + def dockrRm = "docker rm -f my-app" + def dockrRmImage = "docker rmi kammana/my-app:1.0" + sh "ssh -o StrictHostKeyChecking=no ec2-user@172.31.43.90 ${dockrRm} " + sh "ssh -o StrictHostKeyChecking=no ec2-user@172.31.43.90 ${dockrRmImage} " + }catch(e){ + echo "container my-app not found" + } + } + + } + + stage('Deploy On Dev'){ + sshagent (credentials: ['dev-docker']) { + def dockerRun = "docker run -d -p 8080:8080 --name=my-app kammana/my-app:1.0" + sh "ssh -o StrictHostKeyChecking=no ec2-user@172.31.43.90 ${dockerRun} " + } + } + +} diff --git a/Dockerfile b/Dockerfile index 1403e584f7a..0b37443fae3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,3 @@ FROM tomcat:8 # Take the war and copy to webapps of tomcat -COPY target/*.war /usr/local/tomcat/webapps/ -# Added for jenkins demo +COPY /opt/docker/*.war /usr/local/tomcat/webapps/myweb.war diff --git a/Jenkinsfile b/Jenkinsfile index d4ac0cc2407..1e17d3f1656 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,23 +1,51 @@ -node{ + +node { + def sonarUrl = 'sonar.host.url=http://172.31.30.136:9000' + def mvn = tool (name: 'maven3', type: 'maven') + '/bin/mvn' stage('SCM Checkout'){ - git 'https://github.com/javahometech/my-app' + // Clone repo + git branch: 'master', + credentialsId: 'github', + url: 'https://github.com/javahometech/myweb' + } - stage('Compile-Package'){ - // Get maven home path - def mvnHome = tool name: 'maven-3', type: 'maven' - sh "${mvnHome}/bin/mvn package" + + stage('Sonar Publish'){ + withCredentials([string(credentialsId: 'sonarqube', variable: 'sonarToken')]) { + def sonarToken = "sonar.login=${sonarToken}" + sh "${mvn} sonar:sonar -D${sonarUrl} -D${sonarToken}" + } + } - stage('Email Notification'){ - mail bcc: '', body: '''Hi Welcome to jenkins email alerts - Thanks - Hari''', cc: '', from: '', replyTo: '', subject: 'Jenkins Job', to: 'hari.kammana@gmail.com' + + + stage('Mvn Package'){ + // Build using maven + + sh "${mvn} clean package deploy" + } + + stage('deploy-dev'){ + def tomcatDevIp = '172.31.28.172' + def tomcatHome = '/opt/tomcat8/' + def webApps = tomcatHome+'webapps/' + def tomcatStart = "${tomcatHome}bin/startup.sh" + def tomcatStop = "${tomcatHome}bin/shutdown.sh" + + sshagent (credentials: ['tomcat-dev']) { + sh "scp -o StrictHostKeyChecking=no target/myweb*.war ec2-user@${tomcatDevIp}:${webApps}myweb.war" + sh "ssh ec2-user@${tomcatDevIp} ${tomcatStop}" + sh "ssh ec2-user@${tomcatDevIp} ${tomcatStart}" + } } - stage('Slack Notification'){ - slackSend baseUrl: 'https://hooks.slack.com/services/', - channel: '#jenkins-pipeline-demo', - color: 'good', - message: 'Welcome to Jenkins, Slack!', - teamDomain: 'javahomecloud', - tokenCredentialId: 'slack-demo' + stage('Email Notification'){ + mail bcc: '', body: """Hi Team, You build successfully deployed + Job URL : ${env.JOB_URL} + Job Name: ${env.JOB_NAME} + +Thanks, +DevOps Team""", cc: '', from: '', replyTo: '', subject: "${env.JOB_NAME} Success", to: 'hari.kammana@gmail.com' + } } + diff --git a/deploy-to-tomcat b/deploy-to-tomcat index 283046e7e99..62063a9e9c7 100644 --- a/deploy-to-tomcat +++ b/deploy-to-tomcat @@ -1,12 +1,26 @@ node{ - + def tomcatIp = '172.31.14.131' + def tomcatUser = 'ec2-user' + def stopTomcat = "ssh ${tomcatUser}@${tomcatIp} /opt/tomcat8/bin/shutdown.sh" + def startTomcat = "ssh ${tomcatUser}@${tomcatIp} /opt/tomcat8/bin/startup.sh" + def copyWar = "scp -o StrictHostKeyChecking=no target/myweb.war ${tomcatUser}@${tomcatIp}:/opt/tomcat8/webapps/" stage('SCM Checkout'){ - git 'https://github.com/javahometech/my-app' + git branch: 'master', + credentialsId: 'javahometech', + url: 'https://github.com/javahometech/myweb' + } + stage('Maven Build'){ + def mvnHome = tool name: 'maven3', type: 'maven' + sh "${mvnHome}/bin/mvn clean package" + } + + stage('Deploy Dev'){ + sh 'mv target/myweb*.war target/myweb.war' + + sshagent(['tomcat-dev']) { + sh "${stopTomcat}" + sh "${copyWar}" + sh "${startTomcat}" + } } - stage('Compile-Package'){ - // Get maven home path - def mvnHome = tool name: 'maven-3', type: 'maven' - sh "${mvnHome}/bin/mvn package" - } - } diff --git a/docker-swarm-ci-cd b/docker-swarm-ci-cd new file mode 100644 index 00000000000..61c27747f7a --- /dev/null +++ b/docker-swarm-ci-cd @@ -0,0 +1,41 @@ +node{ + def pom = readMavenPom file: 'pom.xml' + def version = pom.version + def nexus_tag = "172.31.24.222:8083/myweb:${version}" + def mvnHome = tool name: 'maven-3', type: 'maven' + def mvn = "${mvnHome}/bin/mvn" + stage('SCM Checkout'){ + git 'https://github.com/javahometech/my-app' + } + stage('Maven Build'){ + sh "${mvn} clean package" + sh 'mv target/myweb*.war target/myweb.war' + } + + stage('Docker Build'){ + + sh "docker build -t ${nexus_tag} ." + } + + stage('Push to Nexus'){ + sh "docker login 172.31.24.222:8083 -u admin -p admin123" + sh "docker push ${nexus_tag}" + } + + stage('Deploy to swarm'){ + try{ + def service = "docker service create -d -p 90:8080 --replicas=7 --name=myweb ${nexus_tag}" + sshagent (credentials: ['docker-swarm-manager']) { + def svs = "ec2-user@13.233.223.243 ${service}" + sh "ssh -o StrictHostKeyChecking=no ${svs}" + } + }catch(e){ + def service = "docker service update --image=${nexus_tag} myweb" + sshagent (credentials: ['docker-swarm-manager']) { + def svs = "ec2-user@13.233.223.243 ${service}" + sh "ssh -o StrictHostKeyChecking=no ${svs}" + + } + } + } +} diff --git a/function-demo b/function-demo index 3869d26a9e8..60dc0457885 100644 --- a/function-demo +++ b/function-demo @@ -1,3 +1,4 @@ +// Added for demo node{ stage('SCM Checkout'){ git 'https://github.com/javahometech/my-app' diff --git a/helm/node-app/Chart.yml b/helm/node-app/Chart.yml new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/helm/node-app/Chart.yml @@ -0,0 +1 @@ + diff --git a/myweb-8.2.0.war b/myweb-8.2.0.war new file mode 100644 index 00000000000..c23c9a8894b Binary files /dev/null and b/myweb-8.2.0.war differ diff --git a/nov-2018-7am-devops b/nov-2018-7am-devops new file mode 100644 index 00000000000..31fe3e60aad --- /dev/null +++ b/nov-2018-7am-devops @@ -0,0 +1,31 @@ +node{ + def mvnHome = tool name: 'maven-3', type: 'maven' + def mvn = "${mvnHome}/bin/mvn" + def tomcatUsr = 'ec2-user' + stage('Git Checkout'){ + git branch: 'master', + credentialsId: 'github', + url: 'https://github.com/javahometech/my-app' + } + + stage('Build'){ + sh "${mvn} clean package" + } + stage('deploy-to-dev'){ + sh 'mv target/myweb*.war target/myweb.war' + sshagent(['tomcat-dev']) { + sh "ssh -o StrictHostKeyChecking=no ${tomcatUsr}@172.31.12.253 /opt/tomcat8/bin/shutdown.sh" + sh "ssh ${tomcatUsr}@172.31.12.253 rm -rf /opt/tomcat8/webapps/myweb*" + sh "scp target/myweb.war ${tomcatUsr}@172.31.12.253:/opt/tomcat8/webapps/" + sh "ssh ${tomcatUsr}@172.31.12.253 /opt/tomcat8/bin/startup.sh" + mail bcc: '', + body: '''myweb app deployed to Dev + Thanks + DevOps''', + cc: '', + from: '', replyTo: '', + subject: 'myweb app deployed to Dev', + to: 'hari.kammana@gmail.com' + } + } +} diff --git a/pom.xml b/pom.xml index 2fcc67d85fb..4b75fe0cb6d 100755 --- a/pom.xml +++ b/pom.xml @@ -4,12 +4,25 @@ in.javahome myweb war - 0.0.3 + 0.0.7 my-app - http://maven.apache.org + + + kammana + http://35.78.103.43:9000/ + + + + + + org.apache.poi + poi + 3.7 + + javax.servlet javax.servlet-api @@ -27,12 +40,12 @@ nexus - http://172.31.17.173:8081/repository/maven-snapshots/ + http://172.31.15.236:8081/repository/maven-snapshots/ nexus - http://172.31.17.173:8081/repository/maven-releases/ + http://172.31.15.236:8081/repository/maven-releases/ @@ -43,8 +56,8 @@ maven-compiler-plugin 3.6.1 - 1.7 - 1.7 + 1.6 + 1.6 diff --git a/scm_demo b/scm_demo new file mode 100644 index 00000000000..8e05d6eaf96 --- /dev/null +++ b/scm_demo @@ -0,0 +1,6 @@ +node { + + def scmVars = checkout scm + def commitHash = scmVars.GIT_COMMIT + echo commitHash +} diff --git a/src/main/java/in/javahome/myweb/controller/Calculator.java b/src/main/java/in/javahome/myweb/controller/Calculator.java index 6eba58e4ee3..06fa3707381 100755 --- a/src/main/java/in/javahome/myweb/controller/Calculator.java +++ b/src/main/java/in/javahome/myweb/controller/Calculator.java @@ -9,6 +9,8 @@ public class Calculator { * @return int */ public int add(int i, int j){ + String s = null; + s.toString(); return i+j; } public int multiply(int i, int j){ diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html index 02ec0639f45..d741fbdc309 100755 --- a/src/main/webapp/index.html +++ b/src/main/webapp/index.html @@ -11,7 +11,7 @@
-

Javahome App - 0.0.3

+

Javahome Webhook demo @ 2019

diff --git a/src/test/java/in/javahome/myweb/controller/CalculatorTest.java b/src/test/java/in/javahome/myweb/controller/CalculatorTest.java index e815aade1f8..140d8d2c23d 100755 --- a/src/test/java/in/javahome/myweb/controller/CalculatorTest.java +++ b/src/test/java/in/javahome/myweb/controller/CalculatorTest.java @@ -1,14 +1,53 @@ package in.javahome.myweb.controller; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Properties; + import junit.framework.Assert; import junit.framework.TestCase; public class CalculatorTest extends TestCase { Calculator cal = new Calculator(); - public void testAdd(){ - Assert.assertEquals(cal.add(10, 20), 30); + + public void testAdd() { + Properties prop = new Properties(); + + OutputStream output = null; + + try + { + + output = new FileOutputStream("../config.properties"); + + // set the properties value + prop.setProperty("database", "localhost"); + prop.setProperty("dbuser", "hari"); + prop.setProperty("dbpassword", "password"); + + // save properties to project root folder + prop.store(output, null); + + }catch( + IOException io) + { + io.printStackTrace(); + }finally + { + if (output != null) { + try { + output.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + } } - public void testMultiply(){ + + public void testMultiply() { Assert.assertEquals(cal.multiply(10, 20), 200); } } diff --git a/venkatesh b/venkatesh new file mode 100644 index 00000000000..a4e60c97846 --- /dev/null +++ b/venkatesh @@ -0,0 +1 @@ +Hi venkatesh how are you