个人实在太菜,这些个全是左拼右凑大佬们的经验,实在有厚颜无耻敢发原创,其实只要是发转载需要写转载的连接,而这些大佬的链接又实在太多自己都忘了很多,找些保存下来的链接发出来
https://www.52wiki.cn/Plate/Info/id/12.html
https://www.cnblogs.com/gcgc/p/5631385.html
https://blog.51cto.com/11233559/2286974
https://www.iteye.com/blog/zhangyongbo-2428777
https://www.cnblogs.com/heyuquan/p/jenkins-use-guide.html
安装jenkins
建议无论哪种安装方式jdk版本建议1.8+
yum安装方式
这种方式安装相对简单,但是安装后各个文件比较纷纷不太好统一管理
# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# yum install jenkins
启动方法: service jenkins start
停止方法: service jenkins stop
重启方法: service jenkins restart
直接 yum install java这种的openjdk也能正常启动但是不建议安装这种jdk,会对后续jenkins里面一些东西配置会有很大影响
注意:如果是这种方式安装的jenkins一定要到/etc/sysconfig/jenkins文件中修改JENKINS_USER改为root,不然构建时候会遇到各种奇葩问题
war包直接启动方式
这种方式算我见过比较好玩的了,安装方式极为简单,但是后续维护个人觉得相当麻烦,没有尝试过这种方式
# mkdir /usr/local/jenkins && cd /usr/local/jenkins
# wget http://ftp-chi.osuosl.org/pub/jenkins/war-stable/2.190.1/jenkins.war
# java -jar jenkins.war //启动jenkins默认端口8080
# nohup java -jar jenkins.war --httpPort=80 &> /dev/null &
# curl http://127.0.0.1:8080
Tomcat+war安装方式
# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.47/bin/apache-tomcat-8.5.47.tar.gz
# mkdir -p /usr/local/java
# mv apache-tomcat-8.5.47.tar.gz /usr/local/java
# cd /usr/local/java
# tar zxvf apache-tomcat-8.5.47.tar.gz
# cd apache-tomcat-8.5.47/webapps
# rm -rf *
# wget http://ftp-chi.osuosl.org/pub/jenkins/war-stable/2.190.1/jenkins.war
# cd ../bin
# ./setup.sh
tomcat部署的项目在浏览器访问http://ip:8080/jenkins
yum或者war部署在浏览器访问http://ip:8080/
首次登录需要所谓的解锁jenkins,到服务器上查找到路径下的文件,查看密码复制出来粘贴到输入框中点击继续
然后就到了插件安装选择的界面可以安装最常用的推荐的插件,也可以根据需求自己安装所需要业务所用的插件
点击安装推荐插件然后等待插件安装完成即可
插件安装完成之后要创建jenkins第一个管理员账户,用户名是账号,密码是登陆密码,全名是登陆上去之后右上角显示的名称。然后点击保存并完成
这个没啥好说的,下面已经写出来这块的作用了,我一般默认没去修改,点击保存并完成
这样差不多就算部署完成了,点击开始使用jenkins,开始登陆进行配置
使用创建的账号密码进行登陆
完成~~
插件使用
用户安全及权限
需要安装一个名字是Role-based Authorization Strategy的一个用户权限功能管理插件,首先找到系统管理下的插件管理
到可选插件这一栏里过滤插件名称,选中后点击直接安装即可
安装完成以后到系统管理>>>全局安全设置中去开启
把安全域下的允许用户注册 以及 授权策略下的Role-Based Strategy 勾选上,然后再登陆界面会有一个注册用户的链接,输入账号密码邮箱等信息就能够注册成功,这个不用怕注册的用户登录后可以操作所有东西,新注册的用户需要到管理员账户上给选择所授予的权限的
切换到管理员账户,到系统管理>>>Manage and Assign Roles
按照个人理解,管理角色=设置角色所需要看到的功能还有不让该角色所看到操作的功能。分配角色=对创建过的账号分配到已经划分好权限的角色。
所以我们先到这个地方建立角色进行权限的分配。
先创建一个 角色1 点击add添加进去,然后勾选全局下的read权限即可
然后到分配角色里面进行授权账号 角色1 下,还是一样老套路输入账号,点击add添加,然后对这个角色勾选到 角色1 然后点击应用保存生效。
现在再登陆刚才创建的测试账户查看,只有read的权限,搞成。
好了。上面是用户(账户)创建并且授权完成了,但是这些用户(账户)最后还是要去看到去操作构建的项目
先到管理角色>>>Project roles下面创建项目组模糊匹配其下的构建的项目以及分配权限
然后到分配角色>>>Item roles下添加用户(账户)然后授权到某个项目组下然后保存退出。
登录admin管理员账号,查看所有项目,发现有一个A测试还有一个B测试,以及一个个人测试项目,上面的时候把A类项目授权给 cs账户,把B类项目授权给cs2账户
这时候登录到cs账户查看,发现只能看到A类项目,查看不到B类项目以及个人测试项目
再登陆cs2项目查看一下也是只能看到B类项目,看不到A类项目以及个人测试项目
另:
删除用户需要到分配角色下把索要删除的用户(账户)关联全部删除,然后再用户列表,点进去角色。点击左边删除
构建结果邮件发送
邮件发送的话需要用到Extended E-mail Notification这个插件,安装jenkins推荐插件的时候这个插件是默认安装的,现在只需要到系统设置里面去配置下即可,如果没有安装这个插件,到插件管理里面手动安装也行。
先到系统管理>>>系统设置
找到Jenkins Location这一项,必须要配置下系统管理员地址
然后找到Extended E-mail Notification
然后就么得啥好说的了,小二,给少爷上图
Default Subject: 自动化执行报告 - $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
Default Content:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${PROJECT_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>(本邮件是程序自动下发的,请勿回复!)</td>
</tr>
<tr>
<td><h2>
<font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>
</h2></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>构建日志: <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">Changes Since Last
Successful Build:</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
</ul> ${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>
<tr>
<td><b>Test Informations</b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td><pre
style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">Total:${TEST_COUNTS,var="total"},Pass:${TEST_COUNTS,var="pass"},Failed:${TEST_COUNTS,var="fail"},Skiped:${TEST_COUNTS,var="skip"}</pre>
<br /></td>
</tr>
<tr>
<td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td><textarea cols="80" rows="30" readonly="readonly"
style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
</td>
</tr>
</table>
</body>
</html>
到此这个邮件发送算是配置完成了,然后是需要测试邮件是否能够成功发送。
找到邮件通知,配置一下,点击高级
这些个配置没啥说的,信息填上去就行
然后勾选通过发送测试邮件测试配置输入要发送的邮箱地址,然后点击,Test configuration发送
然后登录这个邮箱查看下测试邮件是否发送成功
ok,测试发送成功,说明发送邮件配置信息正常,然后是到构建项目中的配置。
在构建后操作中,选中Editable Email Notification
点击下面Advaced Settings,添加构建成功或者构建失败都要向收件人列表里面的邮箱地址发送构建结果邮件。
点击立即构建,到邮箱查看,发现发送成功。
配置全局环境变量
需要在jenkins中设置下全局环境的配置,在系统管理>>>全局工具配置
添加jdk以及git服务环境。这个配置没啥好说的
构建一个maven项目
构建任务的时候默认是没有maven项目构建这个选项的,需要到插件管理中安装Maven Integration plugin这个maven构建插件,这个没有什么难度。然后需要在服务器安装maven。
# mkdir -p /usr/local/maven
# cd /usr/local/maven
# wget http://us.mirrors.quenda.co/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz
# tar zxvf apache-maven-3.6.2-bin.tar.gz
# vim /etc/profile
添加一下一段变量
export PATH=$PATH:$MAVEN_HOME/bin
MAVEN_HOME=/usr/local/maven/apache-maven-3.6.2
export MAVEN_HOME
然后保存退出
# source /etc/profile
# maven -version //查看是否成功
然后点击新建任务就可以看到新增一个maven构建功能
sh /mnt/script/cs_one_all.sh
cs_one_all.sh脚本放在jenkins这个服务器上代码如下
#!/bin/bash
UPFILE="/mnt/source/CloudPayment/$(date '+%Y%m%d')"
if [ ! -d ${UPFILE} ];then
mkdir -p ${UPFILE}
else
echo "this path is true"
fi
mv /root/.jenkins/workspace/CloudPayment-cs/target/CloudPayment.war ${UPFILE}
chmod -R 777 /mnt/source/*
ssh root@服务器ip 'bash -x -s' < cs_test_two_upgrade.sh
cs_test_two_upgrade.sh脚本也是在jenkins服务器上,代码如下
#!/bin/bash
export JAVA_HOME=/usr/local/java/jdk1.8.0_121
TOMCAT_PID=`ps -ef |grep -v grep|grep 'jing'|awk '{print$2}'`
TOMCAT_DIR="/usr/local/java/tomcat-CapeYunpay-jing-cs-8888"
WEBAPPS_DIR="${TOMCAT_DIR}/webapps"
BAK_DIR="/mnt/CloudPayment/backup"
FORMAL_PRO="/mnt/CloudPayment/pro"
TIME_PATH=`date '+%Y%m%d'`
DOWNLOAD_URL="http://jenkins服务器ip:80/source/CloudPayment" //此处是在jenkins服务器上装了nginx,用nginx做了一个文件下载服务
DOWNLOAD_FILE="CloudPayment.war"
#判断tomcat状态
if [ ! ${TOMCAT_PID} ];then
echo 'tomcat状态是未启动'
echo '开始进行下一步'
else
kill -9 {TOMCAT_PID}
echo 'tomcat已经关闭'
echo '开始进行下一步'
fi
#判断正式环境的配置文件是否存在
if [ ! -d ${FORMAL_PRO} ];then
mkdir -p ${FORMAL_PRO}
else
echo "路径存在,开始判断文件是否存在"
fi
if [ ! -d ${FORMAL_PRO}/classes ];then
cp -a ${WEBAPPS_DIR}/CloudPayment/WEB-INF/classes/ ${FORMAL_PRO}
echo "配置文件已经保存"
echo "可以进行下一步"
else
echo "配置文件文件存在,可以备份回滚文件"
echo "开始进行下一步"
fi
#备份回滚文件
cd ${WEBAPPS_DIR}
mkdir -p ${BAK_DIR}
cp -a ${WEBAPPS_DIR}/CloudPayment ${BAK_DIR}/${TIME_PATH}/
rm -rf ${WEBAPPS_DIR}/CloudPayment/*
#下载解压升级war包
cd ${WEBAPPS_DIR}/CloudPayment
wget ${DOWNLOAD_URL}/${TIME_PATH}/${DOWNLOAD_FILE}
unzip -oq ${DOWNLOAD_FILE}
rm -rf ${DOWNLOAD_FILE}
#替换正式环境的配置文件
cp -a -f ${FORMAL_PRO}/classes ${WEBAPPS_DIR}/CloudPayment/WEB-INF/
#开始启动tomcat
cd ${TOMCAT_DIR}
rm -rf work
cd logs/
>catalina.out
sh ${TOMCAT_DIR}/bin/startup.sh
sleep 10
tail -n 50 catalina.out