Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
From tomcat:9
ADD target/addressbook.war /usr/local/tomcat/webapps
EXPOSE 8080
CMD ["catalina.sh", "run"]
48 changes: 0 additions & 48 deletions JenkinsFile1

This file was deleted.

106 changes: 52 additions & 54 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,60 +1,58 @@
pipeline {
options {
ansiColor('xterm')
}
agent {
kubernetes {
yamlFile 'builder.yaml'
}
}
tools{
jdk 'myjava'
maven 'mymaven'
}

stages {

pipeline{
tools{
jdk 'myjava'
maven 'mymaven'
stage("Checkout code") {
steps {
checkout scm
}
}
agent any
stages{
stage('Checkout'){

steps{
echo 'cloning..'
git 'https://github.com/Sonal0409/DevOpsClassCodes.git'
}
}
stage('Compile'){

steps{
echo 'compiling..'
sh 'mvn compile'
}
}
stage('CodeReview'){

steps{

echo 'codeReview'
sh 'mvn pmd:pmd'
}
}
stage('UnitTest'){

steps{
echo 'Testing'
sh 'mvn test'
}
post {
success {
junit 'target/surefire-reports/*.xml'
}
}
}
stage('MetricCheck'){

steps{
sh 'mvn cobertura:cobertura -Dcobertura.report.format=xml'
}

stage("Package") {
steps {
sh "mvn clean package"
}
}

stage('Kaniko Build & Push Image') {
environment {
PATH = "/busybox:/kaniko:$PATH"
}
steps {
container(name: 'kaniko', shell: '/busybox/sh') {
script {
sh '''#!/busybox/sh
/kaniko/executor --dockerfile `pwd`/Dockerfile \
--context `pwd` \
--destination=kalyand14/myimage:${BUILD_NUMBER}
'''
}
stage('Package'){

steps{

sh 'mvn package'
}
}
}
}


stage('Deploy App to Kubernetes') {
steps {
container('kubectl') {
withCredentials([file(credentialsId: 'mykubeconfig', variable: 'KUBECONFIG')]) {
sh 'sed -i "s/<TAG>/${BUILD_NUMBER}/" deployment.yaml'
sh 'kubectl apply -f deployment.yaml'
}


}
}
}

}
}
26 changes: 26 additions & 0 deletions builder.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
apiVersion: v1
kind: Pod
metadata:
name: kaniko
spec:
containers:
- name: kubectl
image: joshendriks/alpine-k8s
command:
- /bin/cat
tty: true
- name: kaniko
image: gcr.io/kaniko-project/executor:debug
command:
- /busybox/cat
tty: true
volumeMounts:
- name: kaniko-secret
mountPath: /kaniko/.docker
volumes:
- name: kaniko-secret
secret:
secretName: regcred
items:
- key: .dockerconfigjson
path: config.json
39 changes: 39 additions & 0 deletions deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
kind: Deployment
apiVersion: apps/v1
metadata:
name: kubeserve
spec:
replicas: 2
minReadySeconds: 10 # wait for 45 sec before going to deploy next pod
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1 # max number of pods to run for the deployment
selector:
matchLabels:
app: kubeserve
template:
metadata:
name: kubeserve
labels:
app: kubeserve
spec:
containers:
- name: app
image: kalyand14/myimage:<TAG>
imagePullPolicy: Always

---
kind: Service
apiVersion: v1
metadata:
name: kubeserve-svc
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 30009
selector:
app: kubeserve