这一周由于版本的更新没有涉及到功能模块的改变,所有后台这一块没有什么任务。因此,我们负责了搭建jenkins实现了代码的自动构建、测试、集成部署。
一般流程是,我写好自己任务的代码,然后通过git提交,然后由专门人员将整个模块代码打成jar包,然后放入服务器测试运行;如果出现bug,必须由代码编写人员重新审查,排错,重新git提交,重打jia包,重新测试。总之就是特别麻烦。jenkins可以在每个人git代码后,自动的检测到代码的变动,然后自动的打包,测试,提交。出现问题也可以通过发邮件的提醒。
首先,先运行jenkins,jenkins的安装包以war包的形式存在,直接运行war包就可以运行。
先下载一个jenkins的war包,从Jenkins官方网站https://jenkins.io/下载最新的war包。虽然Jenkins提供了Windows、Linux、OS X等各种安装程序,但是,这些安装程序都没有war包好使。然后,jenkins默认的端口是8080,如果你是在自己虚拟机上配,可以直接输入
java -jar jenkins.war
会在控制台中输出安全口令,然后在浏览器中输入http://localhost:8080/就能进入安装界面。
但由于我是在开发服务器上搭建,服务器的8080端口早就被不知道什么进程占用了,所以必须改端口
java -jar jenkins.war --httpPort=18501
然后localhost也要变成自己服务器的ip,在浏览器中输入http://123.23.12.23:18501/ 就好了
安装好之后,就要开始配置了。
首先,进入系统管理中,先进行插件管理。由于我们的项目基本使用到maven,所以要先下载安装maven的插件,点击可选插件,插件后面有安装,jenkins就会自动下载安装。需要下载Git plugin、Maven Integration plugin和publish over SSH。
然后,再进行全局工具配置。需要配置jdk、git以及maven。
--------------------------------------------------------------------------------------------------------------------------------
别名随便起,JAVA_HOMR是你服务器中的环境变量。你可以通过以下代码查看自己环境变量,如果没有就只能去找教程安装jdk了(JDK最好是1.8以上的版本)
echo $JAVA_HOME
-------------------------------------------------------------------------------------------------------------------------------
git最好不要勾选自动安装
输入你git在服务器中的路径,不知道可以用命令查找
whereis git
--------------------------------------------------------------------------------------------------------------------------------
maven也是,最好不要勾选自动安装
echo $MAVEN_HOME
----------------------------------------------------------------------------------------------------------------------------------
以上就把全局工具配置好了。
然后再去系统设置,因为我只用到了发送邮件提醒和连接远程服务器进行提交的功能。所以在这里面,我只对邮件和ssh进行了配置。
----------------------------------------------------------------------------------------------------------------------------------
(密码是邮箱的授权码)
可以对邮件进行测试,如果配置没问题,会显示success,并且你会收到一封邮件。
----------------------------------------------------------------------------------------------------------------------------------
在publish over ssh 这一块,只需要配置SSH servers 就可以
这个hostname是你另一个服务器的ip,用户名以及存放路径。设置好之后,可以点击 TEST Configuration进行测试连接。
----------------------------------------------------------------------------------------------------------------------------------
现在,我们可以新建任务了。
然后会进入到任务配置中。
----------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------
都配置好了后就可以进行构建啦!
先贴一下那个打包完之后运行的jenkins.sh文件
#! /bin/bash
nohup java -jar /home/wangzh/.jenkins/workspace/test/target/form-to-mail-0.0.1-SNAPSHOT.jar &
再贴一下 将jar传送到远程服务器上,远程服务器自动运行jia包的moni.sh文件
#!/bin/sh
path=`pwd`
echo "$path"
ps -fe|grep form-to-mail-0.0.1-SNAPSHOT.jar |grep -v grep
if [ $? -ne 0 ]
then
cd /home/zx
nohup /usr/local/jdk-9.0.4/bin/java -jar form-to-mail-0.0.1-SNAPSHOT.jar &
pid=`ps aux | grep -w "form-to-mail-0.0.1-SNAPSHOT.jar" | grep -v "grep" | awk '{print $2}'`
echo "$pid"
exit 0
else
cd /home/zx
pid=`ps aux | grep -w "form-to-mail-0.0.1-SNAPSHOT.jar" | grep -v "grep" | awk '{print $2}'`
kill $pid
echo "The processing is already killed"
nohup /usr/local/jdk-9.0.4/bin/java -jar form-to-mail-0.0.1-SNAPSHOT.jar &
pid=`ps aux | grep -w "form-to-mail-0.0.1-SNAPSHOT.jar" | grep -v "grep" | awk '{print $2}'`
echo "started"
exit 0
fi
这条脚本就是加了 会自动判断是否存在有相同的进程,如果存在就杀死进程,然后再运行jar包;不存在就直接运行jar包。
这就基本完成了,实现的功能在这概括一下。
jenkins对一个代码的版本进行监控(我操作的是监控dev-1.1),如果我对代码进行了修改提交到dev-1.1上,jenkins就会自动的打包,运行,如果报错还会发邮件提醒。
我是在开发服务器上搭建的jenkins,它会将代码打包之后,发送到测试服务器的指定路径,然后在测试服务器上运行,这就是ssh的作用。
说的有点不太完整,以后想到更多的再补充吧。