Jenkins快速CI实战笔记
Jenkins快速CI实战笔记
蛮大人 发表于4个月前
Jenkins快速CI实战笔记
  • 发表于 4个月前
  • 阅读 1543
  • 收藏 73
  • 点赞 1
  • 评论 7

华为云·免费上云实践>>>   

摘要: 根据项目需要,通过Jenkins搭建CI环境,回忆整理而成,

Jenkins快速CI实战笔记

[TOC]

根据项目需要,通过Jenkins搭建CI环境,回忆整理而成,感谢小伙伴们的支持!

安装与运行

环境准备

  • 安装JDK8:网上有绿色版,设置好环境变量JAVA_HOME,CLASS_PATH即可;
  • 安装maven2:网上有绿色版,设置好环境变量MAVEN_HOME,PATH即可;
  • 安装Tomcat7:网上有绿色版
  • 准备svn或git版本管理server:略
  • 准备maven私有仓库或比较快的镜像:略

下载

直接到官方下载war包即可 , Generic Java package (.war)

运行

java -jar jenkins.war

访问, http://localhost:8080/

配置和插件

输入安全key

第一次访问会提示出于安全考虑,需要根据提示输入对应安全key。根据提示打开文件,copy,粘贴即可;

因为是内网,跳过联网安装插件,后续手工安装;

创建管理员

admin/admin

配置用户策略

参考:Jenkins学习之——(1)Jenkins的安装与配置

Configure Global Security

Jenkins—>系统管理—>Configure Global Security

勾选:启用安全

访问控制—>安全域

勾选:Jenkins 专有用户数据库

勾选:允许用户注册

授权策略

勾选:登录用户可以做任何事

安装插件

前面说过,因为是内网,跳过联网安装插件,后续手工安装;

我们需要:

  • Deploy to container Plugin
  • Maven Integration Plugin
  • Subversion Plug-in

**注意:**依赖一些插件,注意版本,一定要下载安装指定版本,不要跨大版本哦,如果指定了小版本,一定要满足;

安装顺序

Deploy to container Plugin、javadoc、struts、junit、display-url-api、mailer、maven-plugin

Credentials、ssh-credentials\scm-api、mapdb-api、workflow-step-api、workflow-scm-step、subersion

准备:配置CI环境

  • 指定maven2
  • 指定JDK:可以是任何你工程需要的版本
  • 指定SVN:工程地址、账号\密码

准备:svn SSL验证

在jenkins服务器上运行如下代码即可,根据提示接受certificate:

svn list https://10.129.42.23/svn/PRMS/trunk/PRMS

不配置jenkins所在服务器读取svn的ssl认证,就会报连接被拒绝,自动打包就不能成功;

准备:配置入站规则

Win2012Server中,高级安全Windows防火墙,新建入站规则:

  • 常规->名称:Jenkins(TCP in)
  • 常规->操作:允许连接
  • 协议和端口->协议类型:TCP
  • 协议和端口->本地端口:特定端口,8080

准备:配置tomcat命令行权限

自动部署是要用到text命令行权限的,打开tomcat的用户配置文件,给管理员增加manager-script权限

/conf/tomcat-users.xml

<user username="admin" password="123456" roles="manager-gui,manager-status,manager-script"/>

准备:配置tomcat堆栈

如果不配置,在jenkins进行自动化部署时,会提示"OutOfMemery",内存溢出:

%TOMCAT_HOME%/logs/catalina.out

Exception in threat "http-bio-8080-exec-1"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "http-bio-8080-exec-1"

**现象是:**卡在以下日志不动:

jenkins—>autowar—>#29—>Console Output

Deploying [C:\Users\Administrator\.jenkins\workspace\autowar\prms-web\target\prms-web.war]

必须登录tomcat服务器,手工杀掉tomcat后台进程,重启才能正常

ps -ef | grep java
kill -9 %tomcat进程号%
./startup.sh

办法:修改%TOMCAT_HOME%/bin/catalina.sh,在"echo "Using CATALINA_BASE: $CATALINA_BASE""上面加入此行:

set JAVA_OPTS=%JAVA_OPTS% -server -Xms2048m -Xmx2048m -XX:MaxPermSize=512m

参考:Tomcat 内存溢出,堆栈配置各种调整

另外,使用Spring整合quartz1.9时,会出现undeploy应用时,等待quartz定时任务的挂起(卡死,没反应),办法是升级quartz到2.1以上,或者写一个监听类,当app应用destroy时,quartz任务也同样destory,别忘了加载到web.xml中;

准备:配置tomcat上传文件上限

tomcat7默认上传大小为50M,在自动化脚手架代码的今天,怎么够用:加个零,500MB。重启tomcat;

<multipart-config>  
     <!-- 500MB max -->  
     <max-file-size>524288000</max-file-size>  
     <max-request-size>524288000</max-request-size>   
     <file-size-threshold>0</file-size-threshold>  
 </multipart-config>  

如果不配置,则会在manager.2017-07-11.log报如下错误

java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (129429013) exceeds the configured maximum (52428800)

配置CI构建

新建

—>构建一个maven项目,名字随便起

源码管理

  • 选择Svbversion
  • Repository URL: 工程的SVN地址
  • Credentials:自己的用户名\密码
  • 其他默认,保存

构建触发器

勾选: Build where a SNAPSHOP dependency is built

生成快照就进行一次构建;// 这个不大理解。还需要了解SVN快照(snapshop)的意义

勾选: Build Periodically

每天凌晨两点固定进行一次构建

日程表(注意有空格)

H 2 * * *

勾选: Poll SCM

每5分钟检查一次代码库,如有更新则进行一次构建;

日程表(注意有空格)

H/5 * * * *

Pre Steps—>Build

  • Root POM:pom.xml
  • Goal and options: clean install -Dmaven.javadoc.skip=true -Dmaven.test.skip=true

构建后操作

  • WAR/EARfiles:**/*.war
  • Context path: prms-web
  • Containers :

运行构建

jenkins—>autowar—>立即构建!

Build History—>Console Output ,查看实时日志输出

切回主页jenkins,看到最后的蓝球了么:

欢庆吧,少年!s

排错

自动化部署排错

验证版本和命令

java、maven、svn或git版本是否正确、命令是否正常

验证手工打包

maven clean install

检查Tomcat安装用户

who am i

确保不是以root用户安装和运行的tomcat。会导致各种莫名其妙的人品问题。

验证手工部署

http://localhost/manager/

验证自动化打包

clean install -Dmaven.javadoc.skip=true -Dmaven.test.skip=true

跳过doc生成和单元测试

验证自动化部署权限

/conf/tomcat-users.xml,赋予管理员manager-script权限

参考:准备:配置tomcat命令行权限

验证自动化部署

参考 配置 “构建后操作”

Jenkins排错:配置用户权限

因忘记密码,或者配置出错,登录时提示“登录信息无效”

C:\Users/Administrator/.jenkins/config.xml

<useSecurity>true</useSecurity>   

<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
	<denyAnonymousReadAccess>true</denyAnonymousReadAccess>
</authorizationStrategy>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
	<disableSignup>true</disableSignup>
	<enableCaptcha>false</enableCaptcha>
</securityRealm>

处理:

  • 将<useSecurity>修改成false
  • 删除 </authorizationStrategy>和</securityRealm> ,重启jenkins,重新打开jenkins即可

That's all,have fun!

共有 人打赏支持
蛮大人
粉丝 33
博文 20
码字总数 38023
评论 (7)
高端大气上档次_
看好你 打赏
百里奚
666
wy821027
直接docker下载jenkins镜像
道道

引用来自“百里奚”的评论

666

天天
thomaslwq
hello,可否留个联系方式,我最近也在弄持续集成,看以后能不能学习一下~
蛮大人

引用来自“wy821027”的评论

直接docker下载jenkins镜像
谢谢,docker确实方便。
有时候会受限于实施环境,只能有什么就用什么,引入docker在一些地方光是评审流程就耗不起。
蛮大人

引用来自“thomaslwq”的评论

hello,可否留个联系方式,我最近也在弄持续集成,看以后能不能学习一下~
欢迎交流,共同进步。
公司邮箱:kangcunhua@git.com.cn
微信:18511891585
×
蛮大人
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: