1.在jenkins上,创建流水线项目
2.文件配置
Jenkinsfile文件和Dockerfile文件和pom.xml在同一目录下:
Dockerfile:
FROM openjdk:8-jre-slim WORKDIR /app ARG JAR_FILE #VOLUME /tmp ADD ${JAR_FILE} app.jar EXPOSE 7002 ENTRYPOINT ["java", "-jar", "app.jar"]
Jenkinsfile:
node { def mvnHome stage('拉取代码') { // for display purposes git credentialsId: 'e0028312', url: 'http://10.126.23.56/e0028312/wx-template.git' } stage('打包代码') { sshPublisher(publishers: [sshPublisherDesc(configName:'centos', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'sh /var/jenkins_home/workspace/wx.sh', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '*/*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) sh " mvn clean package dockerfile:build " } stage('运行') { sshPublisher(publishers: [sshPublisherDesc(configName:'centos', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'sh /var/jenkins_home/workspace/run.sh', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '*/*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) } }
3.在系统配置Publish over SSH (插件)
4.赋权限
chmod 777 /va/run/docker.sock
5.启动jenkins
docker run -p 8081:8080 -p 50000:50000 -d \
-v jenkins:/var/jenkins_home \
-v /usr/local/jdk1.8.0_221:/usr/local/jdk1.8.0_221 \
-v /usr/local/apache-maven-3.8.6:/usr/local/apache-maven-3.8.6 \
--env JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxNewSize=256m" \
--name jenkins \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
--volume /etc/localtime:/etc/localtime \
--restart=always \
jenkins/jenkins:latest
6.配置maven
JAVA_HOME
M2_HOME
PATH+EXTRA $M2_HOME/bin
7.脚本
docker rm -f wx
docker rmi wx-template:1.0.0
docker run -d -p 7002:7002 --name=wx wx-template:1.0.0