您的位置:首页 > 其它

利用jenkins实现CI/CD的自动、持续构建及测试软件

2018-06-29 12:00 1236 查看

    这一周由于版本的更新没有涉及到功能模块的改变,所有后台这一块没有什么任务。因此,我们负责了搭建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的作用。

    说的有点不太完整,以后想到更多的再补充吧。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: