一、准备工作
1,插件安装 找到jenkins更换插件源的工作目录可以提高安装速度和成功率
cd /var/lib/jenkins/updates sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
需要安装的插件
Git #拉取git代码 maven #创建Maven项目 Git parameter #参数结构 Extened Choice Parmeter #扩展选择框参数,支持多选择 Role-based Authorization Strategy #用户授权 Publish Over SSH #远程主机 Extended E-mail Notification #邮件通知
2,配置jenkins全局服务器jdk和git工作目录(默认使用其他服务器) 这里需要注意的是,系统可能自带jre而不是jdk,会报错 Perhaps you are running on a JRE ? 解决办法:
yum remove *openjdk* yum -y install java-1.8.0-openjdk-devel.x86_64
三、配置系统ssh远程执行脚本到主机 4.发送配置邮件 点击Test configuration发送测试邮件
二,配置项目
1,创建一个Maven项目 二、构建前的配置 Days to keep builds #构建保留的天数 Max # of builds to keep #构建保留条数 利用参数参数构建参数,定义变量branch值默认master 节点限制施工过程运行(需要在 Manage Nodes and Clouds 添加节点后才能使用) 3.配置代码仓库,分支接收上述定义的变量branch 4.构建添加包装命令 clean #清除产生的项目 install #在本地Repository中安装jar(自动编译包装,然后安装在仓库) maven.test.skip=true #不执行测试用例或编译测试用例 5.构建后操作,备份旧版本,更新新版本启动服务
#update.sh #使用前修改 #!/bin/env bash date=`date %Y%m%d%H%M%S` APP_NAME=test-0.0.1.jar #jar包名字 PASSWORD=123456 ##部署主机密码 WORKDIR=/root/test/ #工作目录 #检查程序是否正在运行 is_exist(){
pid=`ps -ef | grep ${
APP_NAME} | grep -v $$ | grep -v tail | awk '{print $2}' ` #若是不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi } is_exist if [ $? -eq "0" ]; then
echo ${PASSWORD} | sudo -S kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
cd ${WORKDIR}
echo ${PASSWORD} | sudo -S mv ${APP_NAME} ${WORKDIR}/backup/${APP_NAME%%.*}${date}.jar
echo "备份成功"
cd /var/lib/jenkins/workspace/A-test-10.144.100.205/target/
sudo cp -r ${APP_NAME} ${WORKDIR}
echo "版本更新成功"
cd ${WORKDIR}
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
java -jar ${WORKDIR}${APP_NAME} >/root/test/logs/test.log 2>&1 &
echo "程序已启动..."
fi
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME}${APP_NAME} is running. pid is ${pid} "
else
echo "${APP_NAME} is not running."
fi
exit
6,配置构建结果邮件发送 Default Content内容
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<td>各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">构建信息</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>项目名称 : ${PROJECT_NAME}</li>
<li>构建编号 : 第${BUILD_NUMBER}次构建</li>
<li>触发原因: ${CAUSE}</li>
<li>构建状态: ${BUILD_STATUS}</li>
<li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
<li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
</ul>
</td>
</tr>
<tr>
<td><b><font color="#0B610B">历史变更记录:</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat=" %p"}
</td>
</tr>
</table>
</body>
</html>
三,构建结果展示
邮件结果