# docker方式部署
#!/usr/bin/env groovy
// 定义变量名
def registry = "192.168.58.14"
def docker_registry_auth = "harbor14key"
// 流水线脚本
pipeline {
agent any
stages {
stage('拉取代码'){
steps {
git credentialsId:'4df6a08b-8e4a-4308-91ed-3acd90c1be31',url: 'git@192.168.58.13:java1/helloworld.git'
echo '拉取成功'
}
}
stage('代码编译'){
steps {
sh """
# 环境变量
PATH=$PATH:/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-1.el7_9.x86_64/bin
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-1.el7_9.x86_64/
PATH=$PATH:/usr/local/apache-maven-3.5.4/bin
# 代码编译
mvn clean package -Dmaven.test.skip=true
sleep 2
"""
}
}
stage('构建镜像'){
steps {
withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
sh '''#!/bin/bash
SERVER_NAME=helloworld
JAR_NAME=helloworld-1.0-SNAPSHOT
JENKINS_HOME=/var/lib/jenkins/workspace/helloworld
# 等待三秒
echo sleep 3s
sleep 1
echo sleep 2s
sleep 1
echo sleep 1s
sleep 1
echo "结束进程完成"
# JENKINS_HOME
cd /var/lib/jenkins/workspace/helloworld/target
# JENKINS_HOME
cp /var/lib/jenkins/workspace/helloworld/Dockerfile /var/lib/jenkins/workspace/helloworld/target
# 修改文件权限 JAR_NAME
chmod 755 helloworld-1.0-SNAPSHOT.jar
echo "看看docker能不能用"
docker -v
echo "停止容器"
# 停止容器
docker stop helloworld
echo "删除容器"
# 删除容器
docker rm helloworld
echo "删除镜像"
# 删除镜像
docker rmi helloworld
echo "打包镜像"
# 打包镜像
docker build -t helloworld -f Dockerfile .
docker tag helloworld 192.168.58.14/test/helloworld
echo "push image"
docker login 192.168.58.14 -u admin -p Harbor12345
docker push 192.168.58.14/test/helloworld
echo "运行镜像"
# 运行镜像
docker run -d -p 8090:8090 --name helloworld helloworld
'''
echo '运行成功'
}
}
}
stage('部署到Docker'){
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'node1', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker rm -f helloworld |true
docker login 192.168.58.14 -u admin -p Harbor12345
docker pull 192.168.58.14/test/helloworld
docker run -d -p 8090:8090 --name helloworld 192.168.58.14/test/helloworld
''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
echo 'Credentials SUCCESS'
}
}
}
}
dockerfile springboot
FROM openjdk:8-jdk-slim
COPY *.jar /app.jar
CMD ["--server.port=8090"]
EXPOSE 8090
ENTRYPOINT ["java", "-jar", "/app.jar"]
k8s 部署
#!/usr/bin/env groovy
// 定义变量名
def registry = "192.168.58.14"
def docker_registry_auth = "harbor14key"
// 流水线脚本
pipeline {
agent any
stages {
stage('拉取代码'){
steps {
git credentialsId:'4df6a08b-8e4a-4308-91ed-3acd90c1be31',url: 'git@192.168.58.13:root/hesp.git'
echo '拉取成功'
}
}
stage('代码编译'){
steps {
sh """
# 环境变量
PATH=$PATH:/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-1.el7_9.x86_64/bin
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-1.el7_9.x86_64/
PATH=$PATH:/usr/local/apache-maven-3.5.4/bin
# 代码编译
mvn clean package -Dmaven.test.skip=true
sleep 2
"""
}
}
stage('构建镜像'){
steps {
withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
sh '''#!/bin/bash
SERVER_NAME=hesp
JAR_NAME=hesp-1.0-SNAPSHOT
JENKINS_HOME=/var/lib/jenkins/workspace/desk
# 等待三秒
echo sleep 3s
sleep 1
echo sleep 2s
sleep 1
echo sleep 1s
sleep 1
echo "结束进程完成"
# JENKINS_HOME
cd /var/lib/jenkins/workspace/desk/target
# JENKINS_HOME
cp /var/lib/jenkins/workspace/desk/Dockerfile /var/lib/jenkins/workspace/desk/target
# 修改文件权限 JAR_NAME
chmod 755 hesp-1.0-SNAPSHOT.jar
echo "看看docker能不能用"
docker -v
echo "停止容器"
# 停止容器
docker stop hesp
echo "删除容器"
# 删除容器
docker rm hesp
echo "删除镜像"
# 删除镜像
docker rmi hesp
echo "打包镜像"
# 打包镜像
docker build -t hesp -f Dockerfile .
docker tag hesp 192.168.58.14/test/hesp
echo "push image"
docker login 192.168.58.14 -u admin -p Harbor12345
docker push 192.168.58.14/test/hesp
echo "运行镜像"
# 清理镜像
docker rmi hesp
docker rmi 192.168.58.14/test/hesp
'''
echo '运行成功'
}
}
}
stage('node2 pull image'){
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'node2', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker rm -f helloworld |true
docker login 192.168.58.14 -u admin -p Harbor12345
docker pull 192.168.58.14/test/hesp
''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
echo 'Credentials SUCCESS'
}
}
stage('部署到k8s'){
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'node1', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker rm -f helloworld |true
docker login 192.168.58.14 -u admin -p Harbor12345
docker pull 192.168.58.14/test/hesp
scp -r root@192.168.58.10:/var/lib/jenkins/workspace/desk/desk01.yaml /root
cd /root
kubectl delete -f desk01.yaml -n test
kubectl apply -f desk01.yaml -n test
''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
echo 'Credentials SUCCESS'
}
}
}
}
FROM openjdk:8-jdk-slim
COPY *.jar /app.jar
CMD ["--server.port=8189"]
EXPOSE 8189
ENTRYPOINT ["java", "-jar", "/app.jar"]