From 9feab11fd038791ab3b56e7c99be2515024a6156 Mon Sep 17 00:00:00 2001 From: "liuji@qniao.cn" Date: Thu, 30 Jul 2020 15:27:23 +0800 Subject: [PATCH] update --- .gitignore | 2 + Dockerfile | 6 ++ Jenkinsfile | 59 +++++++++++ k8s.yaml | 46 ++++++++ pom.xml | 100 ++++++++++++++++++ spring-boot-docker.iml | 84 +++++++++++++++ src/main/docker/Dockerfile | 4 + src/main/java/com/neo/DockerApplication.java | 12 +++ .../com/neo/controller/DockerController.java | 13 +++ src/main/resources/application.properties | 0 .../java/com/neo/DockerApplicationTests.java | 18 ++++ 11 files changed, 344 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 Jenkinsfile create mode 100644 k8s.yaml create mode 100644 pom.xml create mode 100644 spring-boot-docker.iml create mode 100644 src/main/docker/Dockerfile create mode 100644 src/main/java/com/neo/DockerApplication.java create mode 100644 src/main/java/com/neo/controller/DockerController.java create mode 100644 src/main/resources/application.properties create mode 100644 src/test/java/com/neo/DockerApplicationTests.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c507849 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +target +.idea diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b586854 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,6 @@ +FROM openjdk:8u191-jre-alpine3.9 +ENTRYPOINT ["/usr/bin/java", "-jar", "/app.jar"] +#ARG JAR_FILE +#ADD ${JAR_FILE} /app.jar +ADD target/spring-boot-docker-1.0.jar /app.jar +EXPOSE 8080 diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..d494136 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,59 @@ +node('backend-jnlp') { + stage('Clone') { + echo "1.Clone Stage" + checkout scm + script { + build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim() + + // if (env.BRANCH_NAME != 'master') { + // build_tag = "${env.BRANCH_NAME}-${build_tag}" + // } + } + } + stage('Test') { + echo "2.Test Stage" + } + stage('Build docker image') { + echo "3.Build Docker Image Stage" + sh "pwd" + sh "ls -l" + sh "/mnt/nfses/mavenDatas/bin/mvn clean package" + sh "docker build -t 120.78.76.88/test/backend-demo:${build_tag} ." + } + stage('Push') { + echo "4.Push Docker Image Stage" + withCredentials([usernamePassword(credentialsId: 'harbor', passwordVariable: 'harborPassword', usernameVariable: 'harborUser')]) { + sh "docker login -u ${harborUser} -p ${harborPassword} 120.78.76.88" + sh "docker push 120.78.76.88/test/backend-demo:${build_tag}" + } + } + stage('YAML') { + echo "5. Change YAML File Stage" + //def userInput = input( + // id: 'userInput', + // message: 'Choose a deploy environment', + // parameters: [ + // [ + // $class: 'ChoiceParameterDefinition', + // choices: "Dev\nQA\nProd", + // name: 'Env' + // ] + // ] + //) + //echo "This is a deploy step to ${userInput.Env}" + sh "sed -i 's//${build_tag}/' k8s.yaml" + //sh "sed -i 's//${env.BRANCH_NAME}/' k8s.yaml" + } + stage('Deploy') { + echo "6. Deploy Stage" + //if (userInput.Env == "Dev") { + // deploy dev stuff + //} else if (userInput.Env == "QA"){ + // deploy qa stuff + //} else { + // deploy prod stuff + // input "确认要部署线上环境吗?" + //} + sh "kubectl apply -f k8s.yaml" + } +} diff --git a/k8s.yaml b/k8s.yaml new file mode 100644 index 0000000..54547c9 --- /dev/null +++ b/k8s.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + env: dev + type: backend + name: jenkins-backend-demo + namespace: backend +spec: + selector: + matchLabels: + app: jenkins-backend-demo + template: + metadata: + labels: + app: jenkins-backend-demo + spec: + containers: + - image: 120.78.76.88/test/backend-demo: + imagePullPolicy: IfNotPresent + name: jenkins-backend-demo + env: + - name: branch + value: + ports: + - containerPort: 8080 + name: web + protocol: TCP + +--- +apiVersion: v1 +kind: Service +metadata: + name: jenkins-backend-demo-svc + namespace: backend + labels: + app: jenkins-backend-demo +spec: + selector: + app: jenkins-backend-demo + type: NodePort + ports: + - name: web + port: 8080 + targetPort: web + nodePort: 30011 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..8835274 --- /dev/null +++ b/pom.xml @@ -0,0 +1,100 @@ + + + 4.0.0 + + com.neo + spring-boot-docker + 1.0 + jar + + spring-boot-docker + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 2.0.0.RELEASE + + + + UTF-8 + 1.8 + springboot + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-boot-docker.iml b/spring-boot-docker.iml new file mode 100644 index 0000000..bdc103d --- /dev/null +++ b/spring-boot-docker.iml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/docker/Dockerfile b/src/main/docker/Dockerfile new file mode 100644 index 0000000..51805d5 --- /dev/null +++ b/src/main/docker/Dockerfile @@ -0,0 +1,4 @@ +FROM openjdk:8-jdk-alpine +VOLUME /tmp +ADD spring-boot-docker-1.0.jar app.jar +ENTRYPOINT ["java","-Duser.timezone=GMT+8 -Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] diff --git a/src/main/java/com/neo/DockerApplication.java b/src/main/java/com/neo/DockerApplication.java new file mode 100644 index 0000000..d3a0276 --- /dev/null +++ b/src/main/java/com/neo/DockerApplication.java @@ -0,0 +1,12 @@ +package com.neo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DockerApplication { + + public static void main(String[] args) { + SpringApplication.run(DockerApplication.class, args); + } +} diff --git a/src/main/java/com/neo/controller/DockerController.java b/src/main/java/com/neo/controller/DockerController.java new file mode 100644 index 0000000..0453038 --- /dev/null +++ b/src/main/java/com/neo/controller/DockerController.java @@ -0,0 +1,13 @@ +package com.neo.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class DockerController { + + @RequestMapping("/") + public String index() { + return "Hello Docker!"; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..e69de29 diff --git a/src/test/java/com/neo/DockerApplicationTests.java b/src/test/java/com/neo/DockerApplicationTests.java new file mode 100644 index 0000000..b08b689 --- /dev/null +++ b/src/test/java/com/neo/DockerApplicationTests.java @@ -0,0 +1,18 @@ +package com.neo; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class DockerApplicationTests { + + @Test + public void contextLoads() { + System.out.println("hello docker"); + } + +}