[转载]构建基于Jenkins(原Hodson)+Git+Grails持续集成环境

原文出自:http://groovyq.net/content/构建基于JenkinsGitGrails持续集成环境

构建基于Jenkins+Git+Grails持续集成环境

Jenkins是一款Java平台的开源持续集成(Continuous Integration,CI)引擎。它易于安装,配置简单,丰富的插件支持,高度的可扩展性,强大的分布式构建能力都让它在众多的CI引擎中脱颖而出。在这篇文章里我将带领大家一起搭建基于jenkins,git和grails的持续集成环境。

Jenkins安装

进入jenkins官方网站下载最新的jenkins。jenkins提供的war形式的下载,同时也提供各种操作系统的安装文件。本文选用的是war包。

将jenkins.war拷贝到tomcat_home的webapps目录下,启动tomcat。在浏览器的地址栏中输入http://localhost:8080/jenkins,回车。看到如下页面,说明jenkins已经部署成功了。

插件安装

Jenkins缺省支持CVS,Subversion,Maven和SSH。依次进入"系统管理"-->"插件管理"-->"可选插件".这里列出了目前可以获得的所有的插件。

 选择"Git plugin"和"Grails plugin",点击"安装"。

插件安装已经完成,我们需要重启tomcat,新插件才能生效。

环境配置

依次进入"系统管理"-->"系统设置",设置Jenkins相关参数。

插件的参数配置也在这里设置。下面是Git和Grails插件的配置。



创建构建任务

接下来,我们进入最关键的环节:创建构建任务。点击"新建任务"。

输入"任务名称",选择"构建一个自由风格的软件项目",点击"OK"。系统自动进入"任务配置"界面。

首先我们来配置git版本库。在"Source Code Management"下,选择"Git",输入版本库的URL和分支,本人使用的版本库在本地,你也可以使用远程的版本库。

接下来配置构建触发器。如图:

"Poll SCM"用来定期检查版本库是否有更新,如果有更新,触发构建。"*/5 * * * *"表示每隔5分钟检查一次。点击Schedule后面的问号,Jenkins将显示Schedule的帮助信息。

构建触发器定义了"何时构建",下来我们来看看"如何构建".

如图点击"Add build step",在这里我们选择"Build With Grails".下方自动显示Grails相关的配置:

"Target"为需要执行grails命令。命令之间以"空格"隔开;如果命令带有参数,使用"双引号"包围,如:clean "test-app -unit"。"Project Base Directory"是Grails工程的根目录。如果工作目录就是Grails工程的根目录则不需要配置。

至此构建相关的配置已经完成,你可以尝试自己的第一次构建了。

发布Junit测试报告

Jenkins允许发布Junit测试报告,只需指定Junit测试报告的XML路径即可。Jenkins将解析XML生成测试报告。配置如图所示:

查看测试报告:

这里有一个Jenkins的Bug,每一个测试会被出现两条相同的记录。

构建结果通知

虽然我们已经将构建配置好了,但是如何将构建的结果通知给相关的人员呢?邮件通知是最常采用的一种方式。

邮件通知需要配置两个地方,首先进入"系统管理"-->"系统设置"设置全局参数,如图所示。

设置完成后,可以点击"用系统管理员测试邮件配置"按钮进行测试。

接下来是针对每个任务的配置。进入任务,点击"设置"。

这里主要配置当任务构建失败,或者变为不稳定状态,或回到稳定状态的时候将邮件发送给哪些人员。至于邮件的内容由Jenkins自动生成。如果你想自定义邮件内容,你可以安装Email-ext插件。

除了邮件通知,你还可以通过订阅RSS来了解任务的构建情况。

其他功能

  1. 在线查看工作空间:
  2. 查看版本库变更:
  3. 查看Git Poll日志:
  4. 查看构建的命令行输出:

问题和解决办法

  1. 使用grails进行构建的时候报"Could not load Logmanager org.apache.juli.ClassLoaderLogManager"的异常:

[testWebProject] $ cmd.exe /C grails.bat clean && exit %%ERRORLEVEL%% Could not load Logmanager "org.apache.juli.ClassLoaderLogManager" java.lang.ClassNotFoundException: org.apache.juli.ClassLoaderLogManager at org.codehaus.groovy.tools.RootLoader.findClass(RootLoader.java:156) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at org.codehaus.groovy.tools.RootLoader.loadClass(RootLoader.java:128) ......

这是由于tomcat启动时JAVA_OPTS中将log管理类设置成了org.apache.juli.ClassLoaderLogManager。执行"grails.bat clean && exit"命令时,grails找不到org.apache.juli.ClassLoaderLogManager。打开tomcat_home下的catalina.bat将下面命令注释掉即可。

set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值