Jenkins通过Pipeline流水线方式编译Java项目
记录一下本人流水线配置,前提使用的jenkins:lts镜像然后自己通过dockerfile添加了JDK1.8和mvn插件,因为Jenkins镜像中的java版本过高编译我的项目会有问题所以新加一个1.8的。
docker-compose启动Jenkins
services:jenkins:image: jenkins-mvn:lts container_name: jenkinsrestart: on-failure:3user: rootnetwork_mode: hostenvironment:TZ: Asia/ShanghaiLANG: zh_CN.UTF-8LANGUAGE: zh_CN:zhLC_ALL: zh_CN.UTF-8volumes:- /data/jenkins/jenkins-data:/var/jenkins_home # Jenkins数据目录持久化- /usr/bin/docker:/usr/bin/docker # 宿主机docker命令- /var/run/docker.sock:/var/run/docker.sock # docker.sock用于执行宿主机容器命令- /etc/localtime:/etc/localtime:ro # 时区同步- ./settings.xml:/opt/maven/conf/settings.xml #私服配置
启动之后安装Jenkins推荐插件,然后再一下插件
Publish over SSH
Git Push
Maven Integration
Pipeline Maven Integration
Deploy to container
SSH
SSH Agent
SSH2 Easy
SSH Pipeline Steps
AnsiColor
Docker Pipeline
Jenkinsfile
pipeline {agent anyenvironment {VERSION = 'uat'MVN_SETTINGS = '/opt/maven/conf/settings.xml'JAVA_HOME = '/opt/java'PATH = "/opt/java/bin:${env.PATH}"}stages {stage('拉取代码') {steps {echo "\033[32m****** 开始拉取代码 ******\033[0m"git(url: 'http://192.168.1.10/test.git', #项目地址credentialsId: '3d9048d1-e712-4cf1-b4cd', #git密钥branch: "${VERSION}")echo "\033[32m****** 拉取代码完成 ******\033[0m"}}stage('构建项目') {steps {echo "\033[32m****** 开始构建项目(使用JDK1.8) ******\033[0m"sh '''export JAVA_HOME=/opt/javaexport PATH=$JAVA_HOME/bin:$PATHexport MAVEN_OPTS="-Xmx512m -Xms256m"ulimit -n 4096java -versionmvn -s /opt/maven/conf/settings.xml clean package -U -Dmaven.test.skip=true'''}}stage('部署到192.168.1.12') {steps {echo "\033[32m****** 开始部署到目标环境 ******\033[0m"sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.1.12',transfers: [// 备份旧版本sshTransfer(execCommand: '''if [ -f /data/test/test/test.jar ]; thenmkdir -p /data/test/test/backupcp /data/test/test/test.jar /data/test/test/backup/test-$(date +%Y%m%d_%H%M).jarecho "旧版本已备份"fi'''),// 上传新版本并重启sshTransfer(sourceFiles: 'target/test.jar',removePrefix: 'target',remoteDirectory: 'test',cleanRemote: false,makeEmptyDirs: true,execCommand: '''cd /data/test/test/bin/bash constart.sh''')],verbose: true)])echo "\033[32m****** 部署完成 ******\033[0m"}}}
}