记录一下本人流水线配置,前提使用的jenkins:lts镜像然后自己通过dockerfile添加了JDK1.8和mvn插件,因为Jenkins镜像中的java版本过高编译我的项目会有问题所以新加一个1.8的。
docker-compose启动Jenkins
services:
jenkins:
image: jenkins-mvn:lts
container_name: jenkins
restart: on-failure:3
user: root
network_mode: host
environment:
TZ: Asia/Shanghai
LANG: zh_CN.UTF-8
LANGUAGE: zh_CN:zh
LC_ALL: zh_CN.UTF-8
volumes:
- /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 any
environment {
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/java
export PATH=$JAVA_HOME/bin:$PATH
export MAVEN_OPTS="-Xmx512m -Xms256m"
ulimit -n 4096
java -version
mvn -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 ]; then
mkdir -p /data/test/test/backup
cp /data/test/test/test.jar /data/test/test/backup/test-$(date +%Y%m%d_%H%M).jar
echo "旧版本已备份"
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"
}
}
}
}