描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121357633
1 Jenkins创始人Kohsuke kawaguchi,DevOps时代社区联合创始人萧田国、景韵倾情作序,原书作者Brent Laster专门为中文版作序,业内专家Jeff Liu、徐奇琛、杨振涛等联袂力荐。
2 这是一本实用的Jenkins书籍,通过阅读本书可以学到如何利用Jenkins 2的新特性来定义流水线即代码、集成其他关键技术,以及创建自动化的、可靠的流水线,以便简化和加速DevOps环境的建设。
本书包含的内容。
■ 使用Jenkins通过代码创建持续交付流水线
■ 理解如何迁移现有的任务和流水线
■ 驾驭一些控制访问和安全性的优秀实践
■ 领会流水线共享库的结构、编码以及用法
■ 学会何时使用声明式语法和脚本式语法
■ 探索Jenkins中新的和已有的项目类型
■ 掌握新的Blue Ocean图形界面
■ 在流水线中利用底层的操作系统
■ 集成分析工具、制品管理和容器
Jenkins 2是什么 2
Jenkinsfile 3
声明式流水线 5
Blue Ocean界面 6
Jenkins 2的全新任务类型 7
做出转变的原因 10
DevOps理念的转变 10
装配流水线 11
可恢复性 11
可配置性 11
共享工作空间 11
专业知识 12
访问逻辑 12
流水线源管理 12
竞争 12
迎接挑战 13
兼容性 13
流水线兼容性 13
插件兼容性 15
检查兼容性 20
总结 21
第2章 基础知识 23
语法:脚本式流水线和声明式流水线 24
如何选择脚本式语法和声明式语法 25
系统(system):主节点(master)、节点(node)、代理节点(agent)和执行器(executor) 26
主节点 27
节点 27
代理节点 27
执行器 28
创建节点 29
结构:使用Jenkins DSL 31
节点 32
阶段 34
步骤 34
支持环境:开发一个流水线脚本 36
创建一个流水线项目 36
编辑器 38
使用代码片段生成器 39
运行一条流水线 43
回放 49
总结 52
第3章 流水线执行流程 53
触发任务 53
在其他项目构建后构建 54
周期性构建 54
使用GitHub钩子触发器进行GitSCM轮询 57
SCM轮询 57
静默期 58
远程触发构建 58
用户输入 58
输入 59
参数 62
多个输入参数的返回值 68
参数与声明式流水线 69
流程控制选项 74
超时(timeout) 74
重试(retry) 76
睡眠(sleep) 76
等待直到(waitUntil) 76
处理并发 78
使用lock步骤对资源加锁 78
使用milestone来控制并发构建 80
在多分支流水线中限制并发 82
并行地运行任务 82
有条件的执行功能 92
构建后处理 .94
脚本式流水线构建后处理 94
声明式流水线与构建后处理 96
总结 97
第4章 通知与报告 99
通知 99
电子邮件 100
协作服务 110
报告 120
发布HTML报告 120
总结 123
第5章 访问与安全 125
安全加固Jenkins 125
启用安全性 126
其他全局安全配置 129
Jenkins中的凭证 133
凭证范围 134
凭证域 135
凭证提供者 135
凭证存储 136
管理凭证 136
选择凭证提供者 136
选择凭证类型 137
通过提供者指定凭证类型 138
创建和管理凭证 139
上下文链接 141
添加一个新域或者凭证 141
使用新域和凭证 144
高级凭证:基于角色的访问权限 145
基本用途 146
管理角色 147
分配角色 152
角色策略宏 155
在流水线中使用凭证 157
用户名和密码 157
SSH密钥 158
令牌凭证 159
控制脚本安全性 160
脚本检查 160
脚本批准 161
Groovy沙箱 162
Jenkins凭证与Vault配合使用 164
方法 164
安装 165
创建一个策略 165
身份验证 166
在Jenkins中使用Vault 168
总结 171
第6章 扩展你的流水线 173
可信库和不可信库 173
内部库与外部库 174
内部库 174
外部库 176
从代码仓库获取库 178
Modern SCM 178
Legacy SCM 178
在流水线脚本中使用库 179
从源码版本控制中自动下载库 180
加载库到脚本中 180
Jenkins项目中的库范围 182
库结构 183
样本库例程 183
共享库代码的结构 184
使用第三方库 195
直接加载代码 196
从外部SCM加载代码 196
回放外部代码和库 198
深入研究可信与不可信代码 200
总结 203
第7章 声明式流水线 205
动机 206
不直观 206
掌握Groovy 206
其他必需的装配 206
结构 207
代码块 208
部分 208
指令 209
步骤 209
条件 210
构建代码块 210
pipeline 211
agent 212
environment 215
tools 216
options 219
triggers 222
parameters 224
libraries 227
stages 228
post 231
处理非声明式的代码 232
检查你的插件 233
创建一个共享库 233
在pipeline代码块之外放置代码 233
script语句 234
在一个阶段中使用parallel 234
脚本检查与错误报告 235
声明式流水线与Blue Ocean接口 238
总结 238
第8章 理解项目类型 241
通用项目选项 241
基础设置 241
源码管理 247
构建触发器 249
构建环境 256
构建 266
构建后操作 266
项目类型 266
自由风格类型项目 267
Maven项目类型 267
流水线项目类型 270
外部任务项目类型 272
多配置项目类型 275
Ivy项目 280
文件夹 282
多分支流水线项目 287
GitHub组织项目 292
Bitbucket团队/项目 296
总结 299
第9章 Blue Ocean用户界面 301
第一部分:管理已有的流水线 302
主界面 302
项目详情页面 305
运行页面 316
第二部分:使用Blue Ocean编辑器 325
不依赖现有Jenkinsfile创建一个全新的流水线 326
使用编辑器 330
编辑已有的流水线 340
导入和编辑已有的流水线 344
使用非GitHub仓库支持流水线 354
总结 356
第10章 转换 357
通用的准备 358
逻辑和准确性 358
项目类型 358
系统 358
访问 358
全局配置 359
插件 359
共享库 359
将自由风格类型的流水线转换为脚本式流水线 360
源码 364
编译 369
单元测试 373
集成测试 377
迁移流水线接下来的部分 380
从Jenkins流水线项目转换为Jenkinsfile 385
方法 388
最后的步骤 395
从脚本式流水线转换为声明式流水线 397
样本流水线 397
转换 399
完成转换 402
可用于转换的通用指南 403
总结 405
第11章 操作系统环境集成(shell、工作空间、环境和文件) 407
使用shell的步骤 407
sh步骤 408
bat步骤 413
powershell步骤 414
使用环境变量 415
withEnv步骤 416
使用工作空间 418
创建自定义工作空间 418
清理工作空间 420
文件和目录步骤 422
使用文件 422
使用目录 423
使用文件和目录的更多操作 424
总结 425
第12章 集成分析工具 427
SonarQube调查 427
使用个人规则 428
质量门和配置文件 432
扫描程序 434
将SonarQube与Jenkins一起使用 434
全局配置 434
在自由风格类型项目中使用SonarQube 436
在流水线项目中使用SonarQube 436
利用SonarQube分析的结果 437
在Jenkins中集成SonarQube的输出 441
代码覆盖率:与JaCoCo集成 442
关于JaCoCo 442
JaCoCo与流水线集成 443
在Jenkins中集成JaCoCo的输出 445
总结 446
第13章 集成制品管理 447
发布和获取制品 447
安装和全局配置 448
在脚本式流水线中使用Artifactory 449
执行其他任务 454
下载指定文件到指定目录 454
上传指定文件到指定路径 454
设置构建保留策略 455
构建提升 455
声明式流水线集成 455
Artifactory与Jenkins输出集成 456
制品归档和指纹 457
总结 462
第14章 集成容器 465
配置成一个云 465
全局配置 466
使用Docker镜像作为代理节点 469
在流水线中使用云镜像 473
在声明式流水线中动态创建的代理节点 477
Docker流水线全局变量 480
全局变量 480
Docker应用全局变量方法 481
Docker镜像全局变量方法 487
Docker容器全局变量方法 491
通过shell运行Docker 492
总结 493
第15章 其他接口 495
使用命令行接口 496
直接使用SSH接口 496
使用CLI客户端 499
使用Jenkins REST API 501
过滤结果 502
启动构建 504
使用脚本控制台 506
总结 508
第16章 故障处理 509
深入流水线步骤 509
处理序列化错误 512
连续传递风格 513
序列化流水线 513
NotSerializableException 513
处理非序列化错误 514
识别引发错误的脚本行 517
处理流水线异常 518
在声明式流水线中使用非声明式代码 518
未授权代码(脚本和方法授权) 522
不支持的操作 523
系统日志 523
时间戳 525
流水线耐用性设置 526
总结 527
关于作者 529
封面介绍 529
关于译者 530
如何使用本书
这本书很大——比我曾经预想的还要大。我也曾经有一定程度的担心,但是最后决定以两种方式之一往下写:要么限制必要的内容写成一个基本的指导书籍,要么花一些篇幅解释概念、创建代码示例以及探究流水线即代码中术语、函数以及程序的真正含义。如果你已经浏览了本书,你大概能够推断出我选择了后者。
我这样做的原因,出于我多年培训人们使用Jenkins的经验。在一个时间很短的课堂或者工作坊中,我们只能涵盖少量主题。但是人们总是渴望获得更多——更多的细节以及他们可以应用的示例。在大会演讲结束后,我一定会遇到很多人询问更多信息来源、示例,以及在哪里能够找到这样或那样的信息等。这些通常可以通过Google搜索或者查看Stack Overflow上的问题得到解决。这没有什么问题,但也不是最方便的方法。
这本书旨在帮助你找到如何使用这个强大技术的答案。诚然,它比DevOps更加技术化,但是有可能你在阅读本书的时候,已经掌握了一些持续集成(CI)、持续部署(CD)、DevOps以及Jenkins的知识,并且正在寻找如何充分利用Jenkins新特性的方法。
所以,下面列出了一些指导原则(你可以随意使用它们,或者根据你的情况忽略它们)。
√不要试图通读整本书——除非你需要获得更多的睡眠。
√浏览目录中的内容。章节的标题可以示意它的全部内容。
√如果你想理解基本思路并且想很快上手的话,阅读前两章并开始使用一些基本的流水线。当你遇到疑问或者问题时,查阅本书中相应的章节即可。
√如果你已经熟悉基本的Jenkins用法并且想转换为流水线即代码,查看第10章的内容可以获得一些关于转换的思路,然后根据需要查看其他章节。
√如果你着手创建一个更大的流水线,查看一下关于转换的章节以及关于集成操作系统和其他技术的章节(第10~14章)。同时不要忘记了安全性——也有一个章节是关于它的(第5章)。
√如果你着手自动化Jenkins,可查看第15章。
√如果你遇到了问题,每一章都包含一些有可能帮助到你的细节。查看那些注释、警告以及扩展内容,以获得关于异常状况或功能的信息(有可能使你困惑或者提供一种你没有考虑到的思路)。本书的最后也有一个章节,包含关于更多通用故障排查的内容。
我坦然承认任何技术书籍都具有的一个问题,那就是技术在快速进化中。在撰写本书章节的历程中,我时常要回过头来试图追赶上最新的变化和创新,视情况进行修改。我坚信本书中的材料将会提供给你一个良好的基础和参考去使用Jenkins 2。但是,你也应该经常查阅最新的社区文档以获得更新和新的创新内容。
最后,有一个请求——即使你不需要阅读本书的大部分内容,如果你发现你阅读的部分有用,也请花一点时间发表一个评论。人们寻找有用书籍的方法就是口头传颂和在线评论。你的评论将会产生极大的影响。
谢谢,我希望在未来的培训或者大会中见到你。
排版约定
本书使用了下列排版约定。
中文楷体或英文斜体(Italic)
表示新的术语、URL、邮件地址、文件名称和文件扩展名。
等宽字体(Constant width)
表示程序片段,也可以用在正文中表示变量名或函数名等程序元素、数据类型、环境变量、语句和关键词等。
等宽字体加粗(Constant width bold)
表示应该由用户输入的命令或其他文本。
()
表示文本应该被替换为用户提供的值或根据上下文决定的值。
该图标表示提示或建议。该图标表示提示或建议。
该图标表示一般注释。
该图标表示警告或注意。
使用代码示例
本书的下载资源(代码示例、练习等)可以到https://resources.oreilly.com/examples/0636920064602处获得。
本书将对你的工作有所帮助。一般来说,本书提供的示例代码,你都可以在你的程序和文档中使用。你不必联系我们获得许可,除非你要大量传播代码。例如,从本书中抄录一些代码用于编写程序不需要许可;销售或分销O’Reilly随书附带的代码则需要许可;引用本书中的内容和示例用于回答问题不需要许可;将本书中的大量示例代码插入你的产品文档中则需要许可。
我们感谢但不要求注明出处。出处的格式一般包括标题、作者、出版商和ISBN。例如,“Jenkins 2: Up and Running by Brent Laster (O’Reilly). Copyright 2018 Brent Laster, 978-1-491-97959-4.”。
如果你觉得示例代码的使用不合法或者不符合以上的许可权限,请随时联系我们:[email protected]。
关于本书代码示例的重要提示
本书中的代码经常出现单行代码太长而超出页面宽度的情况。在这种情况下,代码会被“挤”到下一行,这些行中一般没有续行字符。然而,你可以通过命令的语义或者缩进来判断哪些是连续多行代码。
关于本书中图表的提示
本书中使用了很多截屏和图表来帮助读者澄清一些信息。这些可视化元素的质量和比例取决于获取它们的方法。同时,由于Jenkins社区会频繁地发布应用和插件的更新版本,本书中的可视化呈现可能会发生变化。
O’Reilly Safari
Safari(原名Safari Books Online)是一个服务企业、政府、教育机构以及个人的基于会员制的培训参考平台。
会员有权限获取成千上万的书籍、培训视频、学习路径、交互式指南以及来自超过250家出版商的作品清单,包括O’Reilly Media、Harvard Business Review、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Adobe、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett以及Course Technology等。
更多的信息请访问http://oreilly.com/safari。
如何联系我们
请将对本书的评价和存在的问题通过如下地址告知出版者:
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2 号成铭大厦C 座 807 室(100035)
奥莱利技术咨询(北京)有限公司
O’Reilly的每一本书都有专属网站,你可以在那里找到关于本书的相关信息,包括勘误列表、示例代码以及其他信息。本书的网站地址:http:/bit.ly/Jenkins-2-ur。
对于本书的评论和技术性的问题,请发送电子邮件到:[email protected]。
关于我们的书籍、课程、会议和新闻的更多信息,请参阅我们的网站http://www.oreilly.com。
在Facebook上找到我们:http://facebook.com/oreilly
在Twitter上关注我们:http://twitter.com/oreillymedia
在YouTube上观看我们:http://www.youtube.com/oreillymedia
致谢
本书最大的感谢要给予Jenkins社区。Jenkins证明了社区开发、社区支持的软件也可以具有难以置信的实用性、多功能性及高质量。所有为Jenkins做出贡献或者在开发插件、培训资料、答疑解惑,以及版本推广等方面发挥作用的人,谢谢你们。
在个人方面,有太多的人需要感谢。我所能想到的方式就是通过粗略的分类一一罗列出来。
感谢Kohsuke Kawaguchi创建了Hudson以及后来的Jenkins,感谢你同意为本书撰写推荐序。通过社区以及CloudBees,你所带给Jenkins的技术驱动力和领导力已经对我们如何创建和交付软件产生了巨大的积极影响。
感谢技术编辑Patrick Wolfe、Brian Dawson及Chaim Krause。他们花费了大量的时间审阅本书,非常感谢。有了他们的反馈,内容才变得无限完美。
Patrick Wolfe从本书的初期就开始致力于提供技术更新以及其他信息。这非常有帮助,确保了这本书可以如期望地与当前的Jenkins状态保持同步(至少在本书发行之时)。他的输入是无价的,我非常感谢他为此花费的时间以及对本项目的无私奉献。
Brian Dawson也提供了很大的帮助,尤其在标注变化以及本书针对Jenkins用户可以更加完善的地方。Brian和Patrick都在CloudBees工作,他们把公司关注的焦点无私地反馈给了Jenkins社区。
Chaim Krause是我认识的最敬业的人之一。至今我已经与他合作了两本书,我非常感谢他对细节的努力和专注。他花费时间亲自试验,并且指出哪里的用词或示例需要更新或者不合理。书中一些细节问题都归功于他的纠正。
非常感谢O’Reilly的所有员工。首先,感谢编辑Brian Foster给本书一个出版机会以及整个过程中的大力支持。感谢Angela Rufino帮助本书如期步入正轨,回答我的所有问题,以及对本书整个过程自始至终的把控。同时也要感谢Nan Barber对本书的早期编辑工作。
同样感谢文字编辑Dwight Ramsey和Rachel Head,他们使我的书更加易读和清晰。感谢生产编辑Justin Billing和校对员Jasmine Kwityn把所有内容汇总在一起,创造了最终的完美作品。
本书中的很多材料最初分享和打磨于我为O’Reilly的Safari平台提供的在线培训课堂上以及会议工作坊中。感谢Susan Conant(与Brian Foster一起)聆听我对Jenkins 2在线培训的想法以及帮助开发课程。同时要感谢 Virginia Wilson给我提供额外的围绕CI和CD写作的机会,也要感谢会议举办者Rachel Roumeliotis和Audra Carter 对会议过程的指导。
最后对于O’Reilly,我还想感谢那些对我围绕Git和Jenkins的很多在线培训提供支持的培训人员。感谢 Yasmina Greco、Lindsay Ventimiglia、Nurul Ishak及Shannon Cutt 监督所有的培训并保证一切按照专业的方式走上正轨。
如果我在会议这边没有提及Jay Zimmerman,那真的是怠慢了。Jay是“No Fluff Just Stuff”系列会议的创办者和组织者,也是第一个提供给我跨企业或者在全美国演讲Jenkins机会的人。
感谢SAS的管理层对我这么多年来创立和展示企业培训课程的支持,尤其感谢Glenn Musial、Cyndi Schnupper及Andy Diggelmann对我的鼓励和支持。
感谢参加过我的Jenkins培训或工作坊的所有人,尤其感谢那些提出问题并且/或者提供反馈从而让我思考更多主题和方式来改进内容的人。
我谨代表Jenkins社区,对工作在CloudBees的那些推进Jenkins、答疑解惑,以及给我们所有用户提供文档的人表示感谢,对你们的努力表示感激。有太多的人需要感谢,其中有些名字在我为写作本书调研的时候就反复提及了,包括Patrick Wolfe、Jessie Glick、 Andrew Bayer、James Dumay、Liam Newman及James Brown。如果你看到这些人写的内容,阅读一下,一定能学到有用的东西。同时也要感谢Max Arbuckle协调Jenkins World会议,很多关于Jenkins 2的信息都是在该会议上首次呈现的。
最深的感谢应该给予我的妻子Anne-Marie以及我的孩子们。这本书的写作经历了很长一段时间,主要是夜间和周末,“剥夺”了我陪伴他们的时间,同时我所写的东西对他们来说也非常陌生。尽管如此,他们始终鼓励我。Anne-Marie,你是我最强大的后盾和力量源泉,因为你是我的一切。谢谢你帮助我平衡生活、梦想和工作,帮我打理得井井有条。我由衷地感激在我们生活的每一天你所带给我的仁慈、爱意以及灵感。
最后,感谢阅读本书的读者。我真诚地希望你们能从本书中获得价值,希望本书能够帮助你们在使用Jenkins以及其他相关方面取得进步。
The Jenkins 2: Up & Running book has done a great job in delivering the value of Jenkins by focusing on how to build pipeline from user’s perspective and illustrating how to get more out of the platform. It provides the guidance how to effectively use Jenkins to achieve a truly autonomous ecosystem.
——Jeff Liu CEO, DAOps Foundation,Google DevOps Expert
Jenkins是近年来一直炙手可热的开源项目,也是各大公司搭建部署体系、规划持续交付的必经之路。软件行业高速发展、互联网产品不断迭代,Jenkins自身也随之变化、扩展、精进。《Jenkin 2**指南》一书会指引大家快速习得全新的技能,帮助企业持续演进和突破CI/CD的能力。
——徐奇琛 *前台技术服务提升部负责人
作为持续集成领域著名的开源项目,Jenkins近年来随着Cloud Native等技术的发展变得愈加活跃,并快速进化到了Jenkins 2时代。Jenkins 2不只是简单的版本升级,而是通过流水线等特性带来了一整套CI/CD解决方案,成长为真正的软件交付流水线工作台,也成为每一位专业的软件工程师都需要掌握的入门技能!
本书的翻译非常及时,为国内的广大开发人员提供了**的学习和参考资料。本书在全面介绍Jenkins 2的同时,既能让新手快速入门,也能让经验丰富的工程师及时更新自己的知识和技能,可以说为国内的互联网及软件产业带来了软件交付质量和效率的双提升,包括我本人在组织Jenkins中文社区的技术交流工作中也成为其早期受益者。阅读本书不但可以了解和学习如何将已有的任务迁移到新版本上,而且可以学习*新的Jenkins DSL来让流水线也可编程,使其更加灵活、智能和高效,这本书非常值得一读。
——杨振涛 vivo互联网架构师
这是我力荐的介绍Jenkins新特性的书籍。写一本几乎所有受众都适用的书真是一个壮举,而Brent已经圆满地完成了这一任务。
——Chaim “Tinjaw” Krause
Brent Laster在展示Jenkins威力方面做得太棒了,在解析Jenkins基本组件的同时又提供了全面的指导来获取Jenkins 2以外的更多知识。那些有价值的流水线即代码的示例会为实现持续交付添砖加瓦。这些应同属于Jenkins新老用户的工具箱。
——Brian Dawson DevOps传教士,CloudBees公司
In one of the recent online discussions,which is about what needs to be done to Jenkins, the top request was that “we don’t need any new features, just tell us what Jenkins is capable of.” This is definitely more true in China, where the language barrier and other factors make it difficult to access knowledge online. I grew up in Japan, so I know this from my own personal experience!
So I was really excited to hear about this translation project. This also comes in the right moment as the Jenkins community is growing in China rapidly, from our localization effort, WeChat presence, to various conference appearances.
May this book in Chinese be an important source of knowledge as many more Chinese software engineering teams seek better software development process.
—— Kohsuke Kawaguchi Jenkins 创始人
推荐序二
Jenkins,你是我们的超级英雄!
With great power comes great responsibility.
2004年,Jenkins创始人Kohsuke Kawaguchi(KK)发布了Hudson(Jenkins的前身)的第一个版本。15年过去了,从简单的自动化工具,到持续集成工具,再到持续交付/DevOps的核心工具平台,Jenkins的功能不断增强,插件越来越丰富,其已经成长为我们的超级英雄,守护我们更高效地研发、测试和交付高质量且安全的软件与服务。
对于研发工程师而言,Jenkins可以帮助我们进行自动化构建与持续集成。
对于测试工程师而言,Jenkins可以帮助我们进行自动化测试。
对于运维工程师而言,Jenkins可以帮助我们进行自动化部署。
在2018年的DevOps World|Jenkins World旧金山大会上,KK也发布了Jenkins的五大超能力(Jenkins Superpower):
1.Jenkins Pipeline:流水线(Pipeline)与Blue Ocean的搭配,让你轻松驾驭持续交付的核心实践——流水线。
2.Jenkins Evergreen:常青树项目,可以帮助我们自动化升级Jenkins Master。
3.Configuration As Code:配置即代码,由丹麦爱好者贡献的特性,让你可以像管理代码一样管理Jenkins的系统配置。
4.Cloud Native Jenkins:云原生Jenkins,让Jenkins更适合在公有云与私有云环境下运行。
5.Jenkins X:面向Kubernetes的云原生应用CI/CD解决方案。
如今的Jenkins,就像钢铁侠一样,拥有许多“顶级武器装备”(包括但不限于上述你看到的这些)。那么,你如何快速读懂这位超级英雄呢?你需要一本手册。没错,正是你手中的这本《Jenkins 2权威指南》。
本书作者倾囊相授了关于Jenkins 2的详细使用方法(重点聚焦在流水线的使用上)、Jenkins API的使用、DevOps相关工具链的集成等非常有实操意义的知识。正如开源大神Linux之父Linus Torvalds所说:“Talk is cheap. Show me the code.”本书还附带了很多Jenkinsfile编写样例。本书作者Brent Laster来自SAS(全球最大的软件公司之一),他将自己多年的Jenkins实战经验融入书中,相信可以满足读者日常的大部分需求。
Jenkins在中国这片土地上非常受欢迎,已经成为中国地区DevOps践行的事实标准。根据2017年DevOps时代社区的调查数据显示,86%的中国用户选择了Jenkins作为持续交付的核心工具链。
与此同时,随着中国IT力量的崛起,我们不再只是使用者与跟随者,越来越多的爱好者开始参与Jenkins社区的建设。2017年,首届Jenkins用户大会落地中国上海(KK亲临现场并做精彩分享),并且Jenkins Area Meetup也在中国大地盛开。2018年,景韵同学有幸与本书中的两位译者石雪峰、雷涛一起成为首批Jenkins Ambassador(Jenkins全球推广大使),并且代表中国的Jenkins社区推动者们Jenkins Pipeline Experts Group(简称JPEG)获得了KK亲自颁发的Most Valuable Advocate(最有价值支持者)奖项。
这一年,中国的Jenkins用户有了自己专属的Logo——Kong Fu Jenkins。
这一年,Jenkins官网有了中文站,越来越多的爱好者开始参与Jenkins中文站的建设。
这一年,我们一起让Jenkins国际社区听到了来自中国的声音。
新的一年,新的征程。我们热烈期待Jenkins在新的形势下锐意进取,继续站在时代的浪潮之巅。
感谢4位译者郝树伟、石雪峰、雷涛、李华强,以及博文视点的编辑付睿、李云静同学付出的非凡努力,感谢你们为我们奉上如此精彩的书籍。翻译技术书籍是一份辛苦的工作,我们亲历了4位译者字斟句酌、精益求精的过程,向你们致敬。
萧田国
DevOps时代社区联合创始人、高效运维社区创始人
Jenkins User Conference China联合发起人
景韵
DevOps时代社区联合创始人
Jenkins Ambassador(Jenkins全球推广大使)
Jenkins User Conference China联合发起人
2019年2月28日
中文版序
In 2015, I had the privilege of travelling to China and presenting several corporate training workshops, including ones on Jenkins. It was a memorable experience as I had the opportunity to work with many talented individuals who wanted to learn more about Jenkins and CI/CD. But the challenge for my students was that I could only present in English. I recalled
at that time that I could make the presentation and training materials available in Chinese for everyone. But I did not have the knowledge or resources to accomplish that. I am thankful now that there is an opportunity to accomplish that for this book.
I wrote Jenkins 2 ? Up and Running to help people understand the evolution of Jenkins ? an evolution that continues today. In a recent keynote presentation at DevOps world, Kohsuke Kawaguchi spoke of the ?5 superpowers? of Jenkins that are being worked on: Jenkins Pipeline, Jenkins Evergreen, Configuration as Code, Cloud Native Jenkins, and Jenkins X. Jenkins Pipeline is at the front of this list for a reason. It represents the starting point for the initial evolution from the traditional Jenkins product. It is my hope that this book will provide the reader with a valuable foundation for understanding Jenkins Pipeline. And it is also my hope that it will inspire curiosity and interest around the other items in Kohsuke’s list.
I am proud and honored that Jenkins 2 ? Up and Running is being translated for the Chinese audience. My goal of the translation is it can be an on-going resource for individuals and teams to share knowledge, solve problems and generate ideas. I hope that someday I may travel to China and visit with Jenkins users again and hear their thoughts on the book. For now, though, I will simply say thank you. And I wish you, the reader, great success and accomplishment in your Jenkins and DevOps journeys.
译者序
在软件开发过程中,一个好工具就像一门好语言,往往具有以下特征:可扩展性、普遍适用性、庞大而活跃的社区,同时易于上手,难于精通,让人充满想象空间。Jenkins恰恰符合上面的绝大多数特征,从而成为开源领域最具话题性的现象级产品。
时光荏苒,几年来由于工作的原因,译者亲历了Jenkins的发展和变化过程,从一开始看起来略显简陋的工具,到全新设计的用户界面,再到友好的用户向导和强大的流水线即代码,Jenkins一直在以非凡的速度进行着自我变革,从一个自动化工具演变成了覆盖持续交付全流程的核心纽带。随着DevOps大潮的汹涌来袭,译者也被裹挟着进入这股洪流之中,依稀记得在2017年的首届Jenkins中国用户大会上,Jenkins创始人KK(Kohsuke Kawaguchi)来到中国用户身边分享Jenkins 2的特性,这也是译者第一次见到KK的“真身”,当年阅读的代码中出现过无数次KK的名字,当他真真切切地来到面前时,涌现的幸福感让人记忆深刻,而看不到尽头的与KK合影的队伍也再次印证了Jenkins的巨大成功和其在国内无可比拟的影响力。
即使在外界普遍看来,Jenkins已经成为事实上CI/CD领域的领头羊,但是近年来随着深入参与社区活动,并且同Jenkins核心团队多次接触后,译者依然清晰地感受到一种真真切切的危机感。的确,历经多年的单体应用架构设计为人诟病,系统可靠性和复杂性的挑战让人望而却步,不断爆发的安全漏洞又如影随形,无数天才般的设计和强大的功能却鲜为人知……种种因素使得无数企业对Jenkins爱恨交加,有的企业甚至在不得不放弃Jenkins而重复造轮子的路上渐行渐远,这样的现实让整个社区开始重新思考自身的价值。
2018年8月,KK在官网上发表了一篇著名的文章Jenkins: Shifting Gears,其中毫无保留地指出,虽然Jenkins项目获得了极大的成功,但整个社区却陷入了局部优化的困境,难以迈出舒适区来解决核心问题、及时响应用户的需求。为此他提到了个点解决方案:一个是跟随Jenkins X的脚步摸索云原生应用下的持续交付之路,让Jenkins自身成为云原生应用;另一个是Jenkins 2持续进化,比如发布模式,以及针对兼容性、易用性、安全性等方面进行完善。作为一个项目未来的发展路径,社区已经用实际行动开启了一次变革,相信伴随着Jenkins X项目的大热,Jenkins 3已经在不远处向我们款款走来。
正如KK所说的那样,社区不仅会带给用户各种“花哨”的黑科技,还会切实解决用户的问题,所以本地化项目、大会沙龙、在线分享等方面的工作同样重要,而一本全面还原Jenkins本来面貌和核心功能的书籍也必不可少,值得庆幸的是,这本集大成之作即将在中国面市。本书全面系统地介绍了Jenkins,其中针对核心功能深入浅出的解读,以及详尽实用的演示代码都让人眼前一亮。将这本书引入中国,以飨读者,不能不称为一件幸事。
整本书的翻译过程历时半年。系统性地翻译一本书,其中的难度超乎想象,尤其是技术类书籍在尊重原文的同时,又要满足中文读者的阅读习惯和表达方式,这简直让人抓狂。于是译者们针对每句话、每个专有名词都字斟句酌,力争做到尽善尽美,这背后真正支持我们的“源动力”,正是多年来Jenkins带给我们的支持与陪伴。仅以此书作为对整个Jenkins社区的回报,希望有更多爱好者可以从中获取灵感和新知,也希望有更多的小伙伴可以身体力行地加入社区贡献中。如此这般,那便是极好的。
由衷地感谢在整个翻译过程中互相勉励、互相支持的几位小伙伴郝树伟、雷涛、李华强,感谢高效运维社区与DevOps时代社区的萧帮主和景韵促成本书翻译的成行,感谢博文视点出版社付睿、李云静编辑的悉心指导和专业态度,正是这点点努力汇聚在一起,最终呈现为你手中的这本《Jenkins 2权威指南》。
最后感谢我的夫人对我的理解和包容。
——石雪峰
2019年3月9日于北京家中
原书推荐序
软件开发产业正经历一次缓慢但却真实的变革。软件越来越多地渗透万物,同时我们作为软件开发人员也正在试图通过更加自动化的手段处理爆炸式的需求。我可以想象出你之所以阅读此书,正是因为你也是这次变革中的一部分。
为了在这次变革中更好地服务你们,Jenkins本身也经历了重大的变革——从“经典的”Jenkins世界,你可以通过服务器渲染GUI的一些任务配置Jenkins,到“现代的”Jenkins世界,你可以通过Git仓库中的Jenkinsfile配置Jenkins,同时通过一个更加舒适的单页应用查看结果。
当我们在社区中开发这个现代的Jenkins以及铺开这些新特性时,我持续面对着这样一个挑战:大多数用户没有意识到Jenkins上的这些变革,人们依然保持多年来的习惯继续使用Jenkins。
公平地讲,这完全合乎情理。一方面,由于人们的惰性以及通过Google、Stack Overflow、邮件列表、问题跟踪系统等可以获得大量的信息和知识,告诉人们如何有效地按照“经典的”方式使用Jenkins。另一方面,一般说来,我们的社区太忙于构建这个“现代的”Jenkins,而没有从整体上花费太多的精力告诉人们如何有效地按照“现代的”方式使用Jenkins。
所以,我听到这本书要出版的消息非常高兴,这是对挑战的正面迎击。在这本书中,Brent退一步忽略了过去十年中我们所熟悉的Jenkins的一切,然后进一步重构了今天的Jenkins应该如何使用。不像从Google、Stack Overflow等获得的知识都是零碎的,这本书给你一个系统的路径来展现整幅美景,这使得它非常有价值。
这是一本非常理想的书,既适合CI/CD的新手,也适合使用Jenkins多年的老手。这本书将帮助你发现以及重新发现Jenkins中的未知世界。
——Kohsuke Kawaguchi
Jenkins创始人
CloudBees公司CTO
2018年2月
评论
还没有评论。