jenkins自动化构建Java项目
基础环境
docker
centos7
第一步 安装jenkins
注意事项:
1. 创建 挂载目录,并指定端口
mkdir /data/docker/jenkins
2. 指定 运行用户 -u root 表明用root用户运行,否则默认为jenkins用户 并获取解锁密码
docker run -d -p 8083:8080 -p 50001:50000 -e TZ="Asia/Shanghai" -v /data/docker/jenkins:/var/jenkins_home --name zzlJenkins --privileged=true -u root docker.io/jenkins/jenkins
docker exec -it fad36498b662 /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword
5. 如果出现以下错误(如果没有,则跳过),则地址栏输入:以下地址 解决No such plugin: cloudbees-folder
http://IP:8083/restart
6. 安装默认插件
7. 修改默认更新地址(非必要,可选换成国内站点)
地址为: https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
- 安装JKD、maven、gitHub、Publish Over SSH 插件
第二步 设置 插件默认值 (gitee、Publish Over SSH)
参数说明
Passphrase:SSH的密码
使用用户名/密码登录时为用户名的密码,使用私钥登录时为私钥的密码。
Path to key:SSH私钥的文件路径
私钥文件的路径,可以是绝对路径,也可以是相对$JENKINS_HOME的相对路径
Key:私钥
私钥导出后的文本内容
如果“Key”和“Path to key”都设置,则“Key”的优先级较高,私钥的密码是“Passphrase”中设置的内容。
Disable exec:禁止在目标机上执行命令
勾选后将会忽略在Job配置中“Exec command”选项中设置的命令。Jenkins的说明文档中的“The Disable exec in the advanced settings for individual configurations will be ignored.”没有完全理解,从实际效果来看,只要“Disable exec”被勾选后,不管SSH Server中是否勾选“Disable exec”,Job中设置的命令都将补忽略。
SSH Servers
SSH Server配置为Publish Over SSH中运程机的配置,分“基本设置”和“高级设置”两部分;“基本设置”主要是运程机IP、SSH用户名、SSH端口、连接超时时间等,“高级设置”和大部分“全局设置”中的选项相同。Job中使用的每一个运程机都要在这里进行配置
Name
SSH节点配置的名称,在Job中使用Publish over SSH插件时,此名称将出现在“SSH Server”中“Name”的下拉列表中,如下图: [图片上传中…(image-fe9240-1523170131387-0)]
Hostname
通过SSH连接到的机器的主机名或IP
Username
SSH服务使用的用户名,使用key进行连接时为key指定的用户名
Remote Derictory
运程机器上真实存在的目录,并且“Username”指定的用户要有访问此目录的权限,插件将把文件传送到此目录下。
第三步. 创建一个项目
-
建立一个maven项目并命名。
-
配置
参数说明
Name
“系统管理>系统设置”设置的SSH Sverver的名字列表。
Source files
复制到运程机上的文件,运行表达式,如上图中的target/.jar,“/.jar”。
Remove prefix
文件复制时要过滤的目录,如上图中的target目录。
Remote directory
文件得到到远程机上的目录,此目录是相对于“SSH Server”中的“Remote directory”的,如果不存在将会自动创建。
Exec command
在这里可以填写在运程机器上执行的脚本,如:应用部署脚本
```cat deploy.sh
#/bin/bash
echo 'begin'
export JAVA_HOME=/data/docker/jdk/jdk1.8.0_141
echo ${JAVA_HOME}
#项目部署环境
profileActive=prod
#服务名称
SERVER_NAME_PROVIDER=best-bpm-provider
#源JAR/WAR名称
JAR_NAME1=best-bpm-provider-0.0.1-SNAPSHOT.jar
#新建日志路径
mkdir -p /data/docker/work/log/${SERVER_NAME_PROVIDER}/
#停止服务
{
ps -ef | grep ${SERVER_NAME_PROVIDER} | grep -v grep| awk '{print $2}' | xargs kill -9
} || {
echo '停止异常'
}
echo '开始'
rm -rf /data/docker/work/bak/${JAR_NAME1}
#备份
cp /data/docker/work/${JAR_NAME1} /data/docker/work/bak/${JAR_NAME1}
#删除旧项目
rm -rf /data/docker/work/${JAR_NAME1}
echo '复制jar'
#复制JAR包到指定路径
cp /data/docker/jenkins/workspace/bpm-parent/best-bpm-provider/target/${JAR_NAME1} /data/docker/work
echo ‘chomd’
#授权
chmod 755 /data/docker/work/${JAR_NAME1}
#启动
cd /data/docker/work
echo '启动 provider start'
echo '------start-----'
{
nohup ${JAVA_HOME}/bin/java -Xms500m -Xmx500m -Xmn250m -Xss256k -server -XX:+HeapDumpOnOutOfMemoryError -Dspring.profiles.active=${profileActive} -jar ${JAR_NAME1} > /data/docker/work/log/${SERVER_NAME_PROVIDER}/`date +%Y-%m-%d`.log 2>&1 &
}||{echo '启动 provider 异常'}
echo '启动 provider end'
echo 'success'
第四部 点击构建
点击自动构建。
第五步 修改maven 私有仓库(可选)
一般路径如下:
/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/maven3.6/conf