博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jenkins安装配置
阅读量:7058 次
发布时间:2019-06-28

本文共 2334 字,大约阅读时间需要 7 分钟。

hot3.png

Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。 --from wiki

安装:redhat/centos

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reposudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

yum install jenkins

PS1:如果你有tomcat/jetty等容器可以直接下载war部署。不过需要自己创建jenkins用户并且自己写启动脚本。。。

PS2:jenkins官方提供稳定版的docker镜像,见https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+with+Docker缺点是5000端口不好用。。而且要特别处理一下时区问题以及中文乱码问题。。建议还是自己写dockerfile吧从dockerbuild吧。。。

安装完成后打开浏览器,进入localhost:8080可以看到如下界面

174511_SlDf_1242185.png

选择新建项目,这里以maven项目为例:

143610_4Cnh_1242185.png

选择源码管理方式:这里以svn为例,填写用户名密码。策略推荐选择先revert在update的策略,防止build出错。

161609_pdY2_1242185.png

然后安装一些插件:

自定义邮件:

scp远程拷贝文件支持

sonar支持

远程登录执行脚本支持

配置:

java一般需要指定目录(自动下载需要oracle帐号。而且很慢),而maven则一般自动下载即可。

另外邮件服务器配置在最新版1.581上有一个小bug,测试邮件无论你填什么都会提示验证失败。原因是因为。。。。jenkins的代码中传递的密码参数为空:(....不过不影响正常发送。

143610_1y47_1242185.png

143610_L8O4_1242185.png

143610_aJOv_1242185.png

sonar的配置:再写一边数据库地址。。。。虽然旁边的问号提示挺全面的。

剩下的scp,ssh比较简单了。按照提示即可。

160103_hxuS_1242185.png

然后就是项目具体设置了:

1、mail-ex比较复杂推荐http://blog.csdn.net/wangmuming/article/details/22925357,这篇写的很详细,作者比较用心。

2、自动构建:与crondtab 类似 分别

163547_KDEn_1242185.png

如果使用版本控制系统,构建一次后,就会自动导入到用户列表中,这时可以为每个用户设置用户名密码和邮件地址,这样就能根据用户提交分别发邮件了。

174528_CADN_1242185.png

安全配置:如果你的jenkins因为某些原因要暴露在公网或者公司内部需要权限控制那最好设置一下用户。

打开系统设置-安全设置一般而言选择jenkins专有用户数据库即可(这样就可以使用上面jenkins设置的用户名密码登录了),对于受攻击妄想症患者请移步https://wiki.jenkins-ci.org。UNIX用户和LDAP配置比较麻烦,而servlet方式好像是为了向后兼容?(待调查)

PS:注意一定要在用户注册完之后将允许用户注册取消。

162255_1qq6_1242185.png

多war包部署:

jenkins提供了专门在远程deploy war包的插件,但是。。只能部署一个。。。。:(而且连续的持续集成容易导致tomcat/jetty等内存溢出(跟permgen的溢出有关。。话说java的gc什么时候能在主程序运行期回收一下permgen)因此最好的办法还是使用ssh远程部署。ssh远程部署除了设置ssh免登录,使用expect导入用户名密码之外,jenkins还提供了scp和ssh插件。但是scp属于构建后操作,也就是说不管构建成不成功都执行。。。:(  坑爹啊!!

解决办法:

1、使用post-step中打执行shell功能写一个钩子。我实现的方式是使用软连接,详情见代码:

base=/bugaosuniln -s $base/A.war $base/AA.warln -s $base/B.war $base/BB.warln -s $base/C.war $base/CC.warln -s $base/D.war $base/DD.war

2、然后在pre-step中添加shell脚本,每次构建前清除上次的连接文件。

export LANG="en_US.UTF-8"  base="haha"file=( "$base/A.war" "$base/B.war" "$base/C.war" "$base/D.war" )for iter in $filedo   echo finding $iter    if [ -e "$iter" ]   then      echo $iter exits!!!      rm "$iter"   fidone

利用软连接特性(cp复制的不是连接本身而是被连接文件)和jenkins每次构建都会清除上一次打war包特性。就可以仅仅在每次build成功之后才部署。

注意:如果你不想在unstable情况下部署,那么post-step中执行条件一定要选择Run only if build succeeds。(顺便吐槽一下,jenkins能不能为每个post-step单独指定一个执行的条件选项,而不是一锅端啊!)

对于tomcat/jetty热部署产生的内存溢出问题,可以在每次部署前使用远程ssh服务器重启tomcat/jetty。当然你也可以利用zabbix监控tomcat状态,自动重启tomcat。

转载于:https://my.oschina.net/u/1242185/blog/323241

你可能感兴趣的文章
update comboBox
查看>>
包装类
查看>>
生成带内嵌图片的二维码
查看>>
Day1--js--你所未见到的他的名字
查看>>
GeoServer style标注中文乱码配置
查看>>
day28 反射 属性操作 getattr hasattr setattr delattr
查看>>
Python 面试题_未完
查看>>
python lambda方法
查看>>
Linux怎么设置PostgreSQL远程访问
查看>>
iOS的Quartz2D篇——基本图形的绘制
查看>>
Installing PyQt5 part1
查看>>
Allgero元器件无法移动问题的解决方法
查看>>
socket.io带中文时客户端无法响应
查看>>
C#实现简单爬虫
查看>>
MVC项目中怎么浏览html页面
查看>>
密钥对加密原理
查看>>
Spark Streaming
查看>>
EhCache 常用配置项详解
查看>>
Docker镜像仓库Harbor搭建及配置
查看>>
PHP经验——数组自定义排序之多维数组排序
查看>>