新書推薦:
《
思考的框架3:风靡华尔街的思维训练法
》
售價:NT$
295.0
《
被记忆的西周史(中山大学中珠学术译丛)
》
售價:NT$
690.0
《
森林疗法:拥抱大自然、获得幸福的季节性方法
》
售價:NT$
340.0
《
希腊人(伊恩·莫里斯文明史系列)
》
售價:NT$
845.0
《
亚马逊六页纸 如何高效开会、写作、完成工作
》
售價:NT$
349.0
《
世界巨变:严复的角色(王中江著作系列)
》
售價:NT$
500.0
《
塔西佗(全二册)(二十世纪人文译丛)
》
售價:NT$
1800.0
《
(棱镜精装人文译丛)思想的假死
》
售價:NT$
290.0
編輯推薦:
通过本书你将学到以下内容。
学习如何安装、配置和安全加固你的Jenkins服务器
组织管理和监控通用的构建作业
集成自动化测试来验证构建,并建立代码质量报告
建立有效的团队通知策略和技术
配置构建管道、参数化的作业、矩阵构建和其他高级作业
管理多个Jenkins服务器来运行分布式构建
完成自动化部署和持续交付
內容簡介:
本书从实践者的角度,在讲解Jenkins基本原理的同时,深入到持续集成、持续交付领域,为读者梳理出如何使用Jenkins设计和实现一个自动化的、周期性的集成测试过程,帮助读者理解Jenkins适用于什么场景。书中首先介绍Jenkins以及持续集成、持续交付的基础知识;然后安装Jenkins和配置Jenkins服务器,使用Jenkins建立构建作业、进行自动化测试,介绍Jenkins支持的几种安全模式,如何使用Jenkins进行消息通知,如何确保代码质量;最后进阶展示如何建立高级的和分布式的构建,如何进行自动化的部署和交付以及对Jenkins的运维。
關於作者:
John Ferguson Smart,Wakaleo Consulting的主管,帮助一些公司优化了他们的Java开发实践和基础架构。他提供一些在敏捷开发和测试实践上的培训和指导,比如持续集成,测试驱动开发,构建自动化和持续部署。 John Ferguson Smart,Wakaleo Consulting的主管,帮助一些公司优化了他们的Java开发实践和基础架构。他提供一些在敏捷开发和测试实践上的培训和指导,比如持续集成,测试驱动开发,构建自动化和持续部署。
目錄 :
序xvii
前言xix
第1 章 Jenkins 简介 1
简介 1
持续集成基础 1
Jenkins 简介(ne Hudson) 3
从Hudson 到Jenkins一个简短的故事 3
应该使用Jenkins 还是Hudson4
引进持续集成到你的公司 5
阶段1无构建服务器 5
阶段2夜间构建 6
阶段3夜间构建加自动化测试 6
阶段4加入度量指标 6
阶段5更认真地对待测试 6
阶段6自动化验收测试和自动化部署 7
阶段7持续部署 7
接下来做什么呢 7
第2 章 迈入Jenkins 的第一步 9
简介 9
准备环境 9
安装Java 10
安装Git11
创建GitHub 账号11
配置SSH 密钥11
创建代码库分支 12
启动Jenkins 13
配置工具 17
配置你的Maven 设置 18
配置JDK 19
通知 20
设置Git 20
你的第一个Jenkins 构建作业 21
你的第一个构建作业 26
更多的报告显示Javadoc33
添加代码覆盖率和其他度量 34
小结 40
第3 章 安装Jenkins41
简介 41
下载和安装Jenkins41
为Jenkins 准备好构建服务器 44
Jenkins 主目录 45
在Debian 或者Ubuntu 系统上安装Jenkins 47
在Red Hat、Fedora 或者CentOS 上安装Jenkins48
在SUSE 或者OpenSUSE 上安装Jenkins49
以单机应用形式运行Jenkins49
基于Apache 服务器运行Jenkins53
在应用服务器上运行Jenkins54
内存方面的考虑 54
安装Jenkins 为一个Windows 服务 55
Jenkins 主目录里有什么 59
备份Jenkins 数据 62
升级Jenkins 安装 63
小结 64
第4 章 配置Jenkins 服务器 65
简介 65
配置面板Manage Jenkins 界面 65
配置系统环境 68
配置全局属性 69
配置JDK70
配置构建工具 72
Maven73
Ant74
Shell 脚本 75
配置版本控制工具 75
配置Subversion75
配置CVS75
配置邮件服务器 76
配置代理 77
小结 78
第5 章 设置构建作业 79
简介 79
Jenkins 构建作业 79
创建自由式构建作业 80
通用选项 81
高级项目选项 82
配置源代码管理 83
用Subversion 工作 84
使用Git 86
Build Triggers96
构建作业完成后触发下一个97
计划构建作业 97
轮询SCM 98
远程触发构建 99
手工构建作业101
构建步骤101
Maven 构建步骤102
Ant 构建步骤103
执行Shell 或Windows 批处理命令104
在构建中使用Jenkins 环境变量105
运行Groovy 脚本108
用其他语言构建项目110
构建后的操作110
报告测试结果110
归档构建产物110
通知114
构建其他的项目114
运行新的构建作业115
使用Maven 构建作业115
每当SNAPSHOT(快照)依赖被建立时都要进行构建116
配置Maven 构建116
构建后期操作118
部署到企业仓库管理器118
部署到商业企业仓库管理器122
管理模块122
Maven 构建作业中额外的构建步骤122
用其他语言使用Jenkins124
用Grails 构建项目124
用Gradle 构建项目126
用Visual Studio MSBuild 构建项目129
用NAnt 构建项目130
使用Ruby 和Ruby on Rails 构建项目130
小结 132
第6 章 自动化测试 133
简介133
自动化单元和集成测试134
在Jenkins 中配置测试报告135
显示测试结果137
忽略测试140
代码覆盖率142
使用Cobertura 测量代码覆盖率 143
使用Clover 测量代码覆盖率152
自动化验收测试154
JMeter 自动化性能测试157
请求帮助!我的测试运行得太慢了165
添加更多的硬件166
运行更少的集成 功能测试166
并行运行测试167
小结167
第7 章 Jenkins 安全 169
简介169
激活Jenkins 安全169
Jenkins 安全实例170
安全域定义Jenkins 用户171
使用Jenkins 内置用户数据库171
使用LDAP 仓库174
使用微软活动目录176
使用UNIX 用户和用户组177
Servlet 容器授权177
使用Atlassian Crowd178
与其他系统集成179
授权谁可以做什么181
安全矩阵 181
基于项目的安全185
基于角色的安全188
审计跟踪用户行为190
小结193
第8 章 通知 195
简介195
电子邮件通知195
更高级的电子邮件通知197
声明构建200
RSS 订阅202
构建分发器 202
即时消息204
用Jabber 进行IM 通知204
使用IRC 的IM 通知209
IRC 通知209
桌面通知器212
通过Notifo 通知213
移动通知216
短信通知216
制造噪声219
极端反馈设备221
小结222
第9 章 代码质量 225
简介225
构建过程中的代码质量226
受欢迎的Java 和Groovy 代码质量分析工具227
Checkstyle227
PMDCPD230
FindBugs 235
CodeNarc237
使用Violations 插件报告代码质量问题238
与自由风格下的构建作业一起工作239
使用Maven 构建作业242
使用Checkstyle、PMD 和FindBugs 报告244
报告代码复杂度247
报告未完成的任务248
集成Sonar249
小结 253
第10 章 高级构建 255
简介255
参数化构建作业255
创建一个参数化构建作业256
为构建适配参数化构建脚本257
高级参数类型259
使用Subversion 标签构建260
使用Git 标签构建261
远程启动参数化构建作业262
参数化构建作业历史263
参数化触发263
多重结构的构建作业266
搭建多重结构构建 266
配置从节点轴267
配置JDK 轴268
自定义轴268
执行多重结构构建268
自动生成Maven 构建作业271
配置作业271
使用继承复用作业配置273
插件支持 275
自由式作业278
构建协作278
在Jenkins 中并行构建279
依赖关系图279
连接280
Locks and Latches 插件281
构建管道及优化282
通过M2Release 插件管理Maven 版本发布283
复制构建产物286
构建进阶289
汇总测试结果295
构建管道296
小结299
第11 章 分布式构建 301
简介301
Jenkins 分布式构建架构301
Jenkins 主 从策略302
主节点使用SSH 启动从节点代理303
使用Java Web Start 手工启动从代理307
把Jenkins 从节点安装为Windows 服务309
无主节点模式启动从节点310
以远程服务方式启动Windows 从节点310
把构建作业与一个或一组从节点关联311
节点监控313
云计算314
使用Amazon EC2314
使用CloudBees DEV@cloud 服务318
小结319
第12 章 自动化部署和持续交付 321
简介 . 321
实现自动化和持续部署322
部署脚本322
数据库更新322
冒烟测试325
回滚更改326
部署到应用程序服务器上326
部署一个Java 应用327
部署像Ruby 和PHP 这样基于脚本的应用程序336
小结339
第13 章 Jenkins 的维护341
简介341
监控磁盘空间341
使用Disk Usage 插件343
磁盘使用及Jenkins Maven 项目类型344
监控服务器负载345
备份配置346
Jenkins 备份基础346
使用备份插件348
更为轻量的自动备份350
构建作业归档350
构建迁移351
小结355
附录A 自动化你的单元和集成测试 357
索引 367
內容試閱 :
译者序
2013 年末,由于工作需求,我们开始在团队内部全面实施持续集成、持续交付作业流程,持续集成和持续交付改变了我们从源码管理到产品发布的整个流程。要知道,我们曾经有过一段时间都在忙碌的打包、发包中度过,那可是非常痛苦的。
Jenkins 作为持续集成、持续交付领域内的优秀开源软件,自然而然地成为我们在项目中大量运用的工具。我们在Jenkins 的优化配置以及运用上积累了丰富的经验,所以想花时间翻译一下这本书,其一是对我们所学知识的再学习和巩固,其二是想对自由与开源软件在国内的推广做一些文档汉化的事情。
Jenkins 已经成为持续集成、持续交付工具链中一个非常重要的部分。它是一款高效易用的工具,而且是开源的,提供了很多种类的插件供用户使用。但是,真正地掌握好Jenkins 的使用并不是一件轻松的事情,如何更好地运用Jenkins 创建出高效、稳定、灵活的作业流是从事持续集成、持续交付的人员所面临的问题。
本书就是一本能够让持续集成、持续交付人员轻松面对这一问题的书籍。本书基于作者优秀的实践经验,为读者梳理出如何使用Jenkins 设计和实现一个高效、灵活的持续集成、持续交付作业流,帮助读者理解Jenkins 适用于什么场景,让读者学会如何使用Jenkins去考虑和解决实际问题。
非常感谢电子工业出版社的付睿编辑对本书翻译工作的大力支持,还要感谢李云静编辑对本书校对做出的贡献。
全书由郝树伟、于振苓、熊熠三人共同翻译。由于水平有限,书中出现错误与不妥之处在所难免,恳请读者批评指正。
译者
2016 年9 月
序
七年前我为Jenkins 的项目写了第一行代码,它最初被称为Hudson。我是那个曾经破坏过构建的人,所以我需要一个程序在我同事发现错误之前捕捉到错误。这只是一个简单的工具,并且只做了一件简单的事情。但它迅速发展,现在我想它是在整个市场上最占主导地位的CI 服务器,包括广泛的插件系统、商业分布、Jenkins 即服务式的托管、用户组、分享会、培训等。
与我的其他项目一样,这个项目从成立以来就是开源的。它的生命,主要依赖于他人的帮助和关爱,没有这一点,项目就不会是当前的状态。在这段时间里,我也学到了一些关于运作开源项目的经验。从这一经验,我认为人们往往忽略有很多方法可以帮助一个开源项目,写代码仅是其中的一个。还有宣传、帮助其他用户、组织分享会,当然还有写文档。
从这个意义上来说,John 是Jenkins 社区的重要组成部分,即使他没有贡献代码相反,他让新用户更容易接受Jenkins。例如,他有一个很多人关注的博客,在那里他经常谈论关于持续集成的做法和其他软件开发的主题。他善于解释事情,即使是刚接触到Jenkins的人们也可以理解它们,像我这样每天开发Jenkins 的人通常是很难想象的。他的培训课程也是众所周知的,Jenkins 是其中的一部分。这是让更多的人接触到Jenkins 的另一种方式。他显然有宣传新的思想和指导开发人员更加高效的激情。
这些天我把我的时间花在CloudBees 开源Jenkins 上,用Jenkins CloudBees pro 版本,我们在Jenkins 之上构建了插件,并且用CloudBees DEV@cloud 服务把Jenkins 部署到私有以及公有云。在这个角色中,我与John 比以前有了更多的互动,我更加尊重他的激情。
所以他承担了写一本关于Jenkins 的书的艰巨任务,我真的很高兴。这本书提供了关于持续集成的主要经典部分的伟大概述。而对我个人来说,我总是被问及是否有一本关于Jenkins 的书,现在我终于可以肯定地回答这个问题了!但更重要的是,这本书反映了他的激情,以及他在教人们如何使用Jenkins 方面的长期经验与其他东西。但是不要仅仅相信我的话。你需要自己去读,亲自去感受。
Kohsuke Kawaguchi
Jenkins 项目创建者及CloudBees 架构师
前言
读者对象
本书针对技术相关的读者(即使他们以往可能没有关于持续集成的经验)。你可能是个刚接触持续集成领域的新人,并想了解它能为你的开发团队带来哪些益处。又或者你可能正在使用Jenkins 或Hudson,并想深入了解如何能进一步地将自己的持续集成架构进行提升。
本书主要在Java 以及JVM 相关项目的范围内讲解Jenkins。但是如果你正使用其他技术架构,本书将为你展示Jenkins 持续集成的优秀生态。我们会讨论如何使用多种非Java技术进行项目构建,包括Grails、Ruby on Rails 以及.NET。除此之外,还有诸如综合配置、通知、分布式构建和安全等均良好地支持多种国际语言。
书籍编排
持续集成就像很多东西:你投入得越多,就能得到越多的价值。即使搭建一个基本的持续集成,也将能为你的团队流程改进起到积极的作用,它还有着逐步接收及实现一些更高级技术的显著优势。本书会逐渐深入Jenkins 的持续集成世界,从易到难。在第1 章中,我们从Jenkins 的全面概述开始,从全局角度进行了解。之后,我们会介绍如何安装和配置Jenkins 服务器以及如何搭建基本的构建作业。当我们掌握了基本知识后,将继续深入更高级的主题,包括自动化测试、安全性、高级通知技术和代码质量报告。接下来,我们在讨论如何利用Jenkins 使用持续部署之前,将讨论更高级的构建技术,如矩阵构建,以及分布式构建和云端持续集成。最后,我们会介绍维护Jenkins 服务器的一些技巧。
是Jenkins,还是Hudson
Jenkins 从开始直到最近都以Hudson 而被熟知。在2009 年,甲骨文收购了Sun 并继承了Hudson 代码库。在2011 年年初,甲骨文和开源社区之间的关系破裂,该项目被分成两个独立的项目:Jenkins,由大部分原始Hudson 开发人员组成;甲骨文管理的Hudson。
正如书名所示,本书主要关注Jenkins。本书的大部分内容写于分支拆分前,不过拆分后两种产品仍然非常相似。所以,尽管示例和插图通常来源于Jenkins,但大部分讨论的内容却同样适用于Hudson。
字体规范
本书遵循特定的字体使用规则约定。理解这些约定有助于更容易地学习本书。
斜体(Italic)
用于文件名、文件扩展名、URL、应用程序名称、强调和首次介绍的新名称。
等宽字体(Constant width)
用于Java 类名、方法、变量、属性、数据类型、数据库元素以及出现在正文中的代码片段。
加粗的等宽字体(Constant width bold)
用于输入的命令行和高亮显示插入运行示例中的新代码。
等宽斜体(Constant width italic)
用于注释和输出。
命令行规范
本书常常会讨论到命令行指令。当我们在控制台操作时,将得到的输出结果(例如,命令提示或屏幕输出)以普通字符格式显示,命令(输入的)以加粗格式显示。例如:
$ ls -al
total 168
drwxr-xr-x 16 johnsmart staff 544 21 Jan 07:20 .
drwxr-xr-x85 johnsmart staff 2890 21 Jan 07:10 ..
-rw-r--r-- 1 johnsmart staff 30 26 May 2009 .owner
-rw-r--r--@ 1 johnsmart staff 1813 16 Apr 2009 config.xml
drwxr-xr-x 181 johnsmart staff 6154 26 May 2009 fingerprints
drwxr-xr-x 17 johnsmart staff 578 16 Apr 2009 jobs
drwxr-xr-x 3 johnsmart staff 102 15 Apr 2009 log
drwxr-xr-x 63 johnsmart staff 2142 26 May 2009 plugins
-rw-r--r-- 1 johnsmart staff 46 26 May 2009 queue.xml
-rw-r--r--@ 1 johnsmart staff 64 13 Nov 2008 secret.key
-rw-r--r-- 1 johnsmart staff 51568 26 May 2009 update-center.json
drwxr-xr-x 3 johnsmart staff 102 26 May 2009 updates
drwxr-xr-x 3 johnsmart staff 102 15 Apr 2009 userContent
drwxr-xr-x 12 johnsmart staff 408 17 Feb 2009 users
drwxr-xr-x 28 johnsmart staff 952 26 May 2009 war
在必要时,在一行结尾的反斜杠字符用于代表一行的结束:如果你愿意,可以在一行中全部输入(没有反斜杠)。不要忘记忽略换行后的起始字符>它是UNIX 提示字符。
$ wget -O - http:jenkins-ci.orgdebianjenkins-ci.org.key > | sudo apt-key add
为了一致性,除非我们在讨论Windows 的问