diff --git a/Docker_Jenkins b/Docker_Jenkins
new file mode 100644
index 0000000..9536f52
--- /dev/null
+++ b/Docker_Jenkins
@@ -0,0 +1,55 @@
+pipeline {
+ agent {
+label 'docker'
+ }
+ environment {
+ ACCOUNT_ID = "654654623396"
+ REGION = "ap-south-1"
+ ECR_REPO_NAME = "jenkins-docker"
+ IMAGE_TAG = "latest"
+ REPOSITORY_URI = "${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${ECR_REPO_NAME}"
+ }
+ stages {
+ stage('Logging into AWS ECR') {
+ steps {
+ script {
+ sh "aws ecr get-login-password --region ${REGION} | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com"
+ }
+ }
+ }
+ stage('Checkout') {
+ steps {
+ git branch: 'main', url: 'https://github.com/sindhukampli/java-example'
+ }
+ }
+ stage('Build') {
+ steps {
+ script {
+ sh "docker build -t ${REPOSITORY_URI}:${IMAGE_TAG} ."
+ }
+ }
+ }
+ stage('Push to ECR') {
+ steps {
+ script {
+ sh "docker push ${REPOSITORY_URI}:${IMAGE_TAG}"
+ }
+ }
+ }
+ stage('Deploy') {
+ steps {
+ script {
+ sh "docker run -itd -p 9090:8080 ${REPOSITORY_URI}:${IMAGE_TAG}"
+ }
+ }
+ }
+ }
+ post {
+ success {
+ echo 'Pipeline completed successfully!'
+ }
+ failure {
+ echo 'Pipeline failed!'
+ }
+ }
+}
diff --git a/Docker_jenkins_1 b/Docker_jenkins_1
new file mode 100644
index 0000000..6a37a74
--- /dev/null
+++ b/Docker_jenkins_1
@@ -0,0 +1,48 @@
+pipeline {
+ agent any
+ environment {
+ IMAGE_NAME = "docker1-jenkins"
+ IMAGE_TAG = "latest"
+ DOCKERHUB_CREDENTIALS = 'Docker-Jenkins'
+ }
+ stages {
+ stage('Checkout') {
+ steps {
+ git branch: 'main', url: 'https://github.com/sindhukampli/java-example'
+ }
+ }
+ stage('Build') {
+ steps {
+ script {
+ sh "docker build -t ${IMAGE_NAME}:${IMAGE_TAG} ."
+ }
+ }
+ }
+ stage('Push to Docker Hub') {
+ steps {
+ script {
+ withCredentials([usernamePassword(credentialsId: "${DOCKERHUB_CREDENTIALS}", passwordVariable: 'Password', usernameVariable: 'Username')]) {
+ sh "docker login -u ${Username} -p ${Password}"
+ sh "docker tag ${IMAGE_NAME}:${IMAGE_TAG} ${Username}/${IMAGE_NAME}:${IMAGE_TAG}"
+ sh "docker push ${Username}/${IMAGE_NAME}:${IMAGE_TAG}"
+ }
+ }
+ }
+ }
+ stage('Deploy') {
+ steps {
+ script {
+ sh "docker run -itd -p 8030:8080 ${IMAGE_NAME}:${IMAGE_TAG}"
+ }
+ }
+ }
+ }
+ post {
+ success {
+ echo 'Pipeline completed successfully!'
+ }
+ failure {
+ echo 'Pipeline failed!'
+ }
+ }
+}
diff --git a/Dockerfile b/Dockerfile
index 0966445..8b54cf6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,7 +1,13 @@
-FROM maven:amazoncorretto as build
-WORKDIR /javaapp
+FROM maven:amazoncorretto as builder
+
+WORKDIR /app
+
COPY . .
+
RUN mvn clean install
-FROM adhig93/tomcat-conf
-COPY --from=build /javaapp/target/*.war /usr/local/tomcat/webapps/
+FROM artisantek/tomcat:1
+
+COPY --from=builder /app/target/*.war /usr/local/tomcat/webapps
+
+CMD ["catalina.sh", "run"]
diff --git a/Jenkins-ECR b/Jenkins-ECR
new file mode 100644
index 0000000..1abe98e
--- /dev/null
+++ b/Jenkins-ECR
@@ -0,0 +1,44 @@
+pipeline {
+ agent { label 'master' }
+ environment {
+ IMAGE_TAG = "${BUILD_NUMBER}"
+ AWS_REGION = 'ap-south-1'
+ ECR_REPO_NAME = 'service-a'
+ ECR_REGISTRY = '654654623396.dkr.ecr.ap-south-1.amazonaws.com'
+ }
+ stages {
+ stage('Git Checkout Stage') {
+ steps {
+ git branch: 'main', url: 'https://github.com/sindhukampli/java-example.git'
+ }
+ }
+ stage('Build Docker Image') {
+ steps {
+ script {
+ sh """
+ aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $ECR_REGISTRY
+ docker build -t $ECR_REGISTRY/$ECR_REPO_NAME:$IMAGE_TAG .
+ """
+ }
+ }
+ }
+ stage('Push to ECR') {
+ steps {
+ script {
+ sh """
+ docker push $ECR_REGISTRY/$ECR_REPO_NAME:$IMAGE_TAG
+ """
+ }
+ }
+ }
+ stage('Deploy Stage') {
+ steps {
+ script {
+ sh """
+ helm install helm ./helm -n dev
+ """
+ }
+ }
+ }
+ }
+}
diff --git a/Jenkinsfile b/Jenkinsfile
index 5912ca3..1b8e4d8 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,27 +1,16 @@
pipeline {
agent any
stages {
- stage('Checkout') {
+
+ stage('git') {
+
steps {
- echo 'Checkout completed'
+ git credentialsId: 'git_credentials', url:'https://github.com/sindhukampli/java-example.git'
}
}
- stage('Static-test') {
+ stage('build') {
steps {
- echo 'Running static tests on code'
- }
- }
- stage('Build') {
- when {
- branch "master"
- }
- steps {
- sh 'echo "Building the code"'
- }
- }
- stage('Deploy') {
- steps {
- echo 'Deploying into environment'
+ sh "mvn clean install"
}
}
}
diff --git a/deployment.yaml b/deployment.yaml
new file mode 100644
index 0000000..04881de
--- /dev/null
+++ b/deployment.yaml
@@ -0,0 +1,19 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: tomcat-deployment
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: tomcat
+ template:
+ metadata:
+ labels:
+ app: tomcat
+ spec:
+ containers:
+ - name: tomcat
+ image: skampli31/docker-jenkins-k8s:latest
+ ports:
+ - containerPort: 8080
diff --git a/helm/Chart.yaml b/helm/Chart.yaml
new file mode 100644
index 0000000..1319284
--- /dev/null
+++ b/helm/Chart.yaml
@@ -0,0 +1,4 @@
+apiVersion: v2
+name: microservices
+description: A Helm chart for deploying multiple microservices
+version: 0.1.0
diff --git a/helm/templates/deploment.yaml b/helm/templates/deploment.yaml
new file mode 100644
index 0000000..f5d3a98
--- /dev/null
+++ b/helm/templates/deploment.yaml
@@ -0,0 +1,19 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: {{ .Chart.Name }}-service-a
+spec:
+ replicas: {{ .Values.serviceA.replicaCount }}
+ selector:
+ matchLabels:
+ app: {{ .Chart.Name }}-service-a
+ template:
+ metadata:
+ labels:
+ app: {{ .Chart.Name }}-service-a
+ spec:
+ containers:
+ - name: service-a
+ image: {{ .Values.serviceA.image.repository }}:{{ .Values.serviceA.image.tag }}
+ ports:
+ - containerPort: {{ .Values.serviceA.service.targetPort }}
diff --git a/helm/templates/service.yaml b/helm/templates/service.yaml
new file mode 100644
index 0000000..1edf6a5
--- /dev/null
+++ b/helm/templates/service.yaml
@@ -0,0 +1,13 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ .Chart.Name }}-service-a
+spec:
+ type: {{ .Values.serviceA.service.type }}
+ ports:
+ - port: {{ .Values.serviceA.service.port }}
+ targetPort: {{ .Values.serviceA.service.targetPort }}
+ selector:
+ app: {{ .Chart.Name }}-service-a
+
+
diff --git a/helm/values.yaml b/helm/values.yaml
new file mode 100644
index 0000000..d48e873
--- /dev/null
+++ b/helm/values.yaml
@@ -0,0 +1,9 @@
+serviceA:
+ replicaCount: 2
+ image:
+ repository: 654654623396.dkr.ecr.ap-south-1.amazonaws.com/service-a
+ tag: latest
+ service:
+ type: ClusterIP
+ port: 80
+ targetPort: 3000
diff --git a/k8s_docker_jenkins b/k8s_docker_jenkins
new file mode 100644
index 0000000..aedfb2e
--- /dev/null
+++ b/k8s_docker_jenkins
@@ -0,0 +1,42 @@
+pipeline {
+ agent any
+ environment {
+ IMAGE_NAME = "docker-jenkins-k8s"
+ IMAGE_TAG = "latest"
+ DOCKERHUB_CREDENTIALS = 'Docker-Jenkins'
+ }
+ stages {
+ stage('Checkout') {
+ steps {
+ git branch: 'main', url: 'https://github.com/sindhukampli/java-example'
+ }
+ }
+ stage('Build and Push Docker Image') {
+ steps {
+ withCredentials([usernamePassword(credentialsId: "${DOCKERHUB_CREDENTIALS}", passwordVariable: 'Password', usernameVariable: 'Username')]) {
+ sh "docker login -u ${Username} -p ${Password}"
+ sh "docker build -t ${IMAGE_NAME}:${IMAGE_TAG} ."
+ sh "docker tag ${IMAGE_NAME}:${IMAGE_TAG} ${Username}/${IMAGE_NAME}:${IMAGE_TAG}"
+ sh "docker push ${Username}/${IMAGE_NAME}:${IMAGE_TAG}"
+ }
+ }
+ }
+ stage('Deploy to Kubernetes') {
+ agent {
+ label 'k8s'
+ }
+ steps {
+ sh "microk8s kubectl apply -f deployment.yaml"
+ sh "microk8s kubectl apply -f service.yaml"
+ }
+ }
+ }
+ post {
+ success {
+ echo 'Pipeline completed successfully!'
+ }
+ failure {
+ echo 'Pipeline failed!'
+ }
+ }
+}
diff --git a/pom.xml b/pom.xml
index f7eacb3..7f5d8b9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,13 +6,10 @@
works-with-heroku
1.0
war
-
-
- 17
- 17
+ 1.6
+ 1.6
-
javax.servlet
@@ -28,23 +25,18 @@
org.mockito
- mockito-core
- 3.12.4
+ mockito-all
+ 1.10.19
test
-
-
- org.apache.maven.plugins
- maven-war-plugin
- 3.3.1
-
+
org.apache.maven.plugins
maven-dependency-plugin
- 3.4.0
+ 2.3
package
diff --git a/service-a/Dockerfile b/service-a/Dockerfile
new file mode 100644
index 0000000..fd0d618
--- /dev/null
+++ b/service-a/Dockerfile
@@ -0,0 +1,7 @@
+FROM node:14
+WORKDIR /usr/src/app
+COPY package*.json ./
+RUN npm install
+COPY . .
+EXPOSE 3000
+CMD [ "node", "app.js" ]
diff --git a/service-a/app.js b/service-a/app.js
new file mode 100644
index 0000000..7213418
--- /dev/null
+++ b/service-a/app.js
@@ -0,0 +1,14 @@
+const http = require('http');
+
+const hostname = '0.0.0.0';
+const port = 3000;
+
+const server = http.createServer((req, res) => {
+ res.statusCode = 200;
+ res.setHeader('Content-Type', 'text/plain');
+ res.end('Hello World\n');
+});
+
+server.listen(port, hostname, () => {
+ console.log(`Server running at http://${hostname}:${port}/`);
+});
diff --git a/service-a/package.json b/service-a/package.json
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/service-a/package.json
@@ -0,0 +1 @@
+
diff --git a/service.yaml b/service.yaml
new file mode 100644
index 0000000..409dc12
--- /dev/null
+++ b/service.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: tomcat-service
+spec:
+ type: NodePort
+ ports:
+ - port: 8080
+ targetPort: 8080
+ nodePort: 30080
+ selector:
+ app: tomcat