Jenkins : Jenkins+Maven+GitHub实现持续集成

目录:

背景

很多小伙伴都会遇到这种困扰,项目变得越来越多,每次编译部署很麻烦,经常在项目上线或者开发过程中需要花几个小时时间对生产或线上服务器进行更新。比如公司开发团队很大,每晚都会对研发服务器进行更新,以便第二天开发人员联调协作,测试人员测试。但是由于是开发阶段产品迭代很快,几乎每个项目每天都有新代码所以每晚的这个工作就很麻烦且手工操作很容易出错。为了解决这个问题我们采用一种自动化的持续集成方式,用到的工具就是jenkins。

jenkins和hudson

jenkins和hudson是源于同一个项目,后期由于各种原因jenkins和hudson分别维护,功能很相似,但是jenkins开源且到目前为止jenkins活跃度更高功能也更完善,这里我们以jenkins为例。

环境准备

操作系统 :centos6.5
Apache Maven : 3.0.5
Apache Tomcat : 7.0.8
git : 1.7.1
jenkins : 2.73.1
jdk : 1.8.0_144

以上环境配置及软件安装大家自行到官网下载哈,环境变量什么的不再敖述。有问题百度一下或者下方留言哦。
因为这里讲的是jenkins所以说下jenkins的部署,jenkins部署可以通过如下方式启动也可以通过tomcat部署到webapps下启动。大家可以参照一下官方文档 : 官方文档

java -jar jenkins.war --httpPort=8080.

项目背景

我学习jenkins工具时是以dubbo项目为背景学习的,大家也可以随便找一个项目push到github上。且用dubbo项目+github上时也遇到一些问题,文章最后和大家分享。

启动jenkins

我这里配置jenkins是吧jenkins部署到了tomcat中所以在浏览器直接访问http://ip:8080/jenkins 如果是java -jar的形式启动在浏览器访问http://ip:8080出现如下页面证明jenkins部署成功了。
这里写图片描述

我们看到jenkins提示我们输入password,这个password的位置也页面上有提示就是/root/.jenkins/secrets/initialAdminPassword 这个地址,我们到我们部署的服务器通过如下命令查看password

vi /root/.jenkins/secrets/initialAdminPassword

拿到password后continue到如下页面
这里写图片描述

选择Install Suggested plugins就可以了,意思是安装推荐插件。这里需要稍微等一下,安装插件需要一点时间。红色标注部分使我们一会要用到插件。
这里写图片描述

接下来填写账号密码
这里写图片描述

当你看到这个小老头的时候证明我们的jenkins初始化完成了
这里写图片描述

配置jenkins

接下来我们点击【系统管理】进到如下页面
这里写图片描述

上图中三个箭头提示我们
Your container doesn’t use UTF-8 to decode URLs. If you use non-ASCII characters as a job name etc, this will cause problems. See Containers and Tomcat i18n for more details.
这是由于tomcat编码不是UTF-8导致的,我们这里修改下tomcat配置

 cd /usr/local/apache-tomcat-7.0.81/conf/
 vi server.xml 

添加如下配置:
这里写图片描述

保存并退出重启tomcat再进入到这个页面提示不见了。我们继续下边的配置,点击第四项【Global Tool Configuration】目的是配置maven和git。
首先我们需要找到服务器上刚刚安装的maven和git命令在什么位置通过如下命令查找,红色框住的部分是等下我们要用的。

这里写图片描述

接下来配置如图:
这里写图片描述
这里写图片描述

接下来我们返回到jenkins主页面再次选择【系统管理】然后选择第六项【管理插件】,安装Maven Integration Plugin这个插件,不安装这个插件的话在我们创建job的时候没有【构建一个maven项目】的选项
这里写图片描述

因为我们要从github上拉取代码所以要配置下ssh的秘钥。如果你用svn的话配置的账号密码,但是就不是在这个位置了,这个大家自己百度下哈,资料非常多。接下来我们要配置一下github的ssh登录秘钥
这里写图片描述

这里我们选择From the Jenkins master ~/.ssh 这一项。意思是从我jenkins所在服务器的./ssh找到私钥!私钥!私钥!重要的是说三遍
这里写图片描述

因为上一步我们从jenkins所在服务器查找私钥了,所以我这边到~/.ssh目录检查下有没有私钥。id.rsa文件使我们的私钥。如果没有通过如下命令创建,所有提示一路回车就ok了。
这里写图片描述

接下来还要将公钥地址添加到github中,gitlab应该也类似。
这里写图片描述

选择添加
这里写图片描述

创建job

这里写图片描述
这里写图片描述

项目配置如下:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

两个地方说明一下:
第一个是【构建触发器】中我选择的GitHub hook trigger for GITScm polling 的意思是每次github有push的时候推送消息(通过hook,中文叫钩子)到jenkins并触发构建,但实际情况这个用的并不是很多(这里只是为了多让大家了解一些东西所以这样搞),因为一般不会边push边构建,后续我们讲到构建完成后通过ssh传war包的时候大家体会会更深,每一次push都build然后传war包执行脚本重启服务的话,研发服务器几乎随时可能重启 - -

github配置hook:
这里写图片描述

第二个是在【Build】中我配置Root POM是默认的pom.xml,Goals and options 配置的是clean package,Root POM指的是build的时候使用的pom.xml,我的项目结构如下图:根目录的pom.xml就是我整个project的父module,所以我这样配置,如果大家是用eclipse开发的很可能有一个xxx-parent的项目,那么这里的Root POM你要配置成xxx-parent/pom.xml ;Goals and options的话大家根据自己的情况来就可以了。而且jenkins中的maven插件是可以通过配置父pom.xml以后看到具体module的,每个module也可以指定本module的Goals and options,这个大家自己试一试吧。

构建job

好了,我们现在构建一下,可以通过手动点击【立即构建】,也可以通过我们刚刚配置的github的hook构建,我们在github上做一次新的push。

我们通过下图中的#4中的【Console Output】就可以看到具体的构建信息了。
这里写图片描述

这里写图片描述

配置ssh实现自动部署

配置ssh我们要安装一个插件:Publish Over SSH
这里写图片描述

然后在【系统管理】->【系统设置】配置ssh的服务器和密码及目录
这里写图片描述
这里写图片描述
接下来我们更改dubbodemo这个项目的配置

start.sh 如下

NAME=dubbodemo-user-service-1.0-SNAPSHOT.jar
echo $NAME
ID=`ps -ef | grep "$NAME" | grep -v "grep" | awk '{print $2}'`
echo $ID
echo "---------------"
for id in $ID
do
kill -9 $id
echo "killed $id"
done
echo "---------------"

#这里建议配置下环境变量,以免执行java命令不成功
export JAVA_HOME=/usr/local/jdk1.8.0_144
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin

java -jar /usr/local/milo/csdndemo/dubbodemo-user-service-1.0-SNAPSHOT.jar > /usr/local/milo/csdndemo/my.log 2>&1 &

echo excute success from start.sh

如上配置后我们通过github提交触发构建,并到配置好的ssh服务器看看效果吧,我这边是启动了一个名字dubbodemo-user-service的dubbo生产者服务。大家也可以通过tomcat脚本部署war包。

配置邮箱实现邮件通知

配置邮箱,在【系统管理】->【系统配置】
这里写图片描述
这里写图片描述

配置项目(如果希望成功也发送邮件可以选择其他邮箱插件)
这里写图片描述

测试结果
这里写图片描述

github分medule分别构建解决方案 (待续)

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值