Jenkins + Git + Maven + tomcat 集成环境搭建

本贴最后更新于 2314 天前,其中的信息可能已经物是人非

下载安装及注意事项

这里选择 war 包,下载后直接放到 tomcat 或者 jetty 里,启动服务即可。

  • 在浏览器中输入[http://localhost:你的端口号]/jenkins,就打开 jenkins 首页了

第一次打开会提示输入初始密码(用户名为 admin),页面上有提示,跟着提示找到文件打开复制密码,输入即可

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

cdb925243ad74b3ca566fd2d248090d8

This may also be found at: C:\Users\A\.jenkins\secrets\initialAdminPassword

进去之后记得改密码,如果忘记改了,下次进入时还需要输入密码,还是去一开始提示的地址找到密码文件,打开复制到 password 文本框即可

  • 修改密码步骤 点击用户 —— admin —— 设置 —— 密码 —— 修改后 save

网上资料:
说 jenkins 把网上的协议由 http 改为了 https,但代码里没有改,所以需要手动去修改一下,步骤如下:
修改 http 为 https
系统管理 —— 管理插件 —— 高级标签 —— 下面有个“升级站点” 把里面的 URL 中的 http 改为 https 即可 —— 点击提交

安装插件

系统管理 —— 管理插件 —— 可选插件, 在右上角有个“过滤”的搜索框,输入 maven,找到 Maven Integration plugin 因网络的原因,加载速度不一(小技巧,过滤会很卡,有可能把页面卡死,可以用 ctrl+F 搜索定位)

勾选后,点击下面的 直接安装 按钮,接下来等待即可。

安装完成后可以在已安装的标签里查看。

此外还需要安装的插件:

  • Maven 插件 Maven Integration plugin
  • 发布插件 Deploy to container Plugin
  • git 插件 Git plugin
  • svn 插件 Subversion Plug-in

非必须安装插件:

  • 发送邮件插件 Email Extension Plugin

网上资料: jenkins+maven+svn 实现简单的一键发布 - pein_zero 的专栏 - 博客频道 - CSDN.NET

网友发现上面安装可能会失败,

看错误提示信息可以发现

大致的意思就是,文件的签名验证不正确,不管它,注意看这个红色的路径。找到这个文件,打开它

把这个路径复制下来,放到浏览器,就可以把这个插件下载下来。在本地建一个jenkins的关于maven插件的目录,把跟maven相关的插件都放到这个目录下

其它几个插件也一一找到对应的文件,找到url,下载, 然后手动上传插件。上传插件的在:系统管理——管理插件——高级,你可以看到上传插件的地方

注意,上传的顺序,要跟报错的顺序一样,因为这些插件都是有依赖的先后顺序的。 不过即使顺序错了也没关系,系统会提示你的:

插件离线下载地址

插件安装完成后,就可以构建项目了。

配置环境

系统管理 —— Global Tool Configuration —— 配置 JDK、Git、Maven

  • Maven Configuration
    两个都下拉选择 Settings file in filesystem,然后在下面的 File Path 里填写:
    D:\apache-maven-3.2.3\conf\settings.xml ,如图

  • JDK
    填写别名:JDK
    自动安装 前的勾选去掉,在出现的 JAVA_HOME 里输入:D:\Program Files\Java\jdk1.7.0_45

  • Git
    Path to Git executable 输入:D:\Program Files\Git\bin\git.exe
    如果不用 git,可以点击 Delete Git,即可

  • Maven
    填写别名:maven
    去掉“自动安装”勾选框, 在 MAVEN_HOME 输入:D:\apache-maven-3.2.3

最后点击 save 按钮保存。

构建集成配置

新建 —— Enter an item name 输入一个名字, 选择 构建一个maven项目, 点击 OK,如图:

接下来到了配置页面,

  • 勾选 丢弃旧的构建,并填写保持构建的天数和最大个数

  • 源码管理,这里选择了 Git

Repository URL 里填写 git 仓库地址: /e/git_repo/demo/.git
这里我采用了本地仓库,可根据实际情况填写 url 地址,如:https://github.com/alibaba/druid.git
使用网络仓库需要添加 Git 证书 Credentials,其原理与 git 免密码登录是一样的,都是基于 SSH 形式的,这里不再细说,请自行搜索资料。
接下来是选择一个分支 Branch,默认就是 */master,可以根据你的项目实际配置修改。

用 Svn 作为源码库,其操作基本一样,输入 svn 地址,用户名,密码即可

  • 构建触发器

网上资料:

build whenever a snapshot dependency is built 当 job 依赖的快照版本被 build 时,执行本 job。
Build after other projects are built:在其他项目构建完成后再进行构建。

这里又分三种情况:
1. Trigger only if build is stable:其他项目构建成功
2. Trigger even if the build is unstable:其他项目不稳定
3. Trigger even if the build fails:其他项目构建失败

Build periodically 隔一段时间 build 一次,不管版本库代码是否发生变化,通常不会采用此种方式。例如: 0 2 * * * (每天 2:00 必须 build 一次源码)
Poll SCM:隔一段时间比较一次源代码如果发生变更,那么就 build。否则,不进行 build,通常采用这种方式;
定时检查源码变更(根据 SCM 软件的版本号),如果有更新就 checkout 最新 code 下来,然后执行构建动作。配置如下: */5 * * * * (每 5 分钟检查一次源码变化,如果有更新才 build)

在 Schedule中填入* * * * *,代表一分钟监听一次
第一个参数代表的是分钟 minute,取值 0~59;
第二个参数代表的是小时 hour,取值 0~23;
第三个参数代表的是天 day,取值 1~31;
第四个参数代表的是月 month,取值 1~12;
最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。
所以 0 * * * * 表示的就是每个小时的第 0 分钟执行一次构建。

  • Build

Root POM 默认填写了 pom.xml,这里不用修改,
Goals and options 里填写 clean package, 如图:

  • 构建后操作 (tomcat 需要添加管理账户)

网上资料:
在 tomcat 中配置用户权限,即添加管理员帐号

在 tomcat 的安装目录中,修改 conf/tomcat-user.xml 配置文件,在 `` 节点里添加下面的代码,用户名和密码可自定义

<role rolename="manager-gui" />
<role rolename="manager-script" />
<user username="tomcat" password="tomcat" roles="manager-gui, manager-script" />

点击 增加构建后操作步骤 下拉选择:Deploy war/ear to a container ,多出一个发布选项

  1. WAR/EAR files 是 war 包的相对路径, 这里填写: target/*.war
  2. Context path 是 tomcat 的发布路径,例如:填写了 myDemo , 则访问地址为:http://localhost:8080/myDemo
  3. Containers 发布到的容器,主要可发布到 tomcat、jboss、GlassFish
    下拉选择 tomcat7.x

Manager user name 填写上面自定义的用户名
Manager password 填写上面自定义的密码
Tomcat URL 中 tomcat 的访问地址 http://localhost:8689
(有网友说端口号后面不要加 /

  1. deploy on failure:发生错误的时候是否发布到 tomcat
    如图:

最后点击 保存 即可。

立即构建

在首页点击项目中最后一列的图标,立即构建项目,或者在项目里的左侧菜单点击 立即构建(Build Now),即可实现了持续集成。

查看日志输出或构建错误信息

点击工程的构建版本号 #1 ,在左侧菜单选择 Console Output,就可以查看 控制台输出
最下面要出现 Finished: SUCCESS 才说明成功,(我有一次没有把 test 里的单元测试代码删除掉,导致一直失败)

其它注意事项

  1. 修改 jenkins 的工作空间

    默认情况下,jenkins 的工作空间会放到 C:\Users[用户名].jenkins 目录下,
    如过想要更改工作空间,我们需要在系统环境变量里面配置 JENKINS_HOME 变量,将该变量指向目标工作空间。
    例如:JENKINS_HOME=Z:\jenkins_home
    这里需要注意的是,tomcat 启动情况下,jenkins 不会去读 JENKINS_HOME 变量,必须要重启 tomcat。
    而重启 tomcat 也是有坑的,如果 tomcat 是通过命令行执行 tomcat/bin/startup.bat 目录启动的,那么单单停掉 tomcat 没用,
    必须要将前面提到的命令行一并关闭掉,这时重启 tomcat,jenkins 才会使用 JENKINS_HOME 中配置的目录作为工作空间。
    此外,一旦更换工作空间,此前过于 jenkins 的所有配置都将作废。

  2. 发布容器中,Add Container 选项中虽然知道 tomcat7.x,但实际上,你选择用 tomcat8.x 依然支持,没有问题

  3. 如何获取构建脚本里的日志输出信息

资料:
解决方法是使用 jenkins 的 Log Parser 插件,同使用 Git Plugin 一样,在插件管理中找 Log Parser 插件,并添加。添加完毕后,配置 jenkins 中的 Console Output Parsing

rule 的具体规则语法可以使用正则表达式,具体可以参考 Log Parser 插件的文档 http://my.oschina.net/donhui/blog/382592

Parsing Rules File 的配置同上文的配置工作目录具有一样的坑,如果要更新规则,首先要清除 job 中选中的规则,然后删除此处配置的 Parseing Rule,重启 tomcat。

添加完毕后,在 job 的配置页的 Post-Build Actions 部分选中 Console Output parsing

然后进行如下配置:

这样我们可以对 buld.bat 中的 error 进行捕获,并且在某次构建过程的 Parsed Console Output 中进行查看

  1. jenkins 多次 deploy 到 tomcat 导致内存溢出的问题

当短时间内多次对一个项目进行构建操作时,tomcat 会出现内存溢出的错误,java.lang.OutOfMemoryError: PermGen space

解决方法:

在 tomcat 安装目录下,打开 bin 文件夹,window 环境修改 catalina.bat 文件,在文件最前面(注释的结尾)添加下面的代码:

set JAVA_OPTS=-Xms512m -Xmx512m

Linux 环境修改 catalina.sh,在文件开头(cygwin=false 的上面)添加下面的代码:(注意没有 set,还有添加了双引号 ")

JAVA_OPTS="-Xms512m -Xmx512m"  

其中,-Xms 设置初始化内存大小,-Xmx 设置可以使用的最大内存。

注意: 该方式只能用 startup.bat 启动 tomcat 才可以设置生效,如果是用 windows 的系统服务启动 tomcat 服务,上面的设置就不生效了。

建议: 目前没有更好的办法解决这个问题,所以减少构建频率为最佳的办法

资料:

错误提示:java.lang.OutOfMemoryError: PermGen space 永久保存内存不足

set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

错误提示:java.lang.OutOfMemoryError: Java heap space 堆空间内存不足

JVM 堆的设置是指 java 程序运行过程中 JVM 可以调配使用的内存空间的设置。
JVM 在启动的时候会自动设置 Heap size 的值,其初始空间(即-Xms)是物理内存的 1/64,最大空间(-Xmx)是物理内存的 1/4。
建议:将-Xms 和-Xmx 选项设置为相同,而-Xmn 为 1/4 的-Xmx 值
当然可根据实际情况进行具体调整。

  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    51 引用 • 37 回帖
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    14 引用 • 7 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...