编辑推荐
适读人群:适合想要学习Jenkins并且想利用其新技术来改造老旧流水线或者构建现代的自动化持续交付环境的读者
1Jenkins创始人Kohsukekawaguchi,DevOps时代社区联合创始人萧田国、景韵倾情作序,原书作者BrentLaster专门为中文版作序,业内专家JeffLiu、徐奇琛、杨振涛等联袂力荐。
2这是一本实用的Jenkins书籍,通过阅读《Jenkins 2权威指南》可以学到如何利用Jenkins2的新特性来定义流水线即代码、集成其他关键技术,以及创建自动化的、可靠的流水线,以便简化和加速DevOps环境的建设。
《Jenkins 2权威指南》包含的内容。
■使用Jenkins通过代码创建持续交付流水线
■理解如何迁移现有的任务和流水线
■驾驭一些控制访问和安全性的优秀实践
■领会流水线共享库的结构、编码以及用法
■学会何时使用声明式语法和脚本式语法
■探索Jenkins中新的和已有的项目类型
■掌握新的BlueOcean图形界面
■在流水线中利用底层的操作系统
■集成分析工具、制品管理和容器
内容简介
设计、实现并且执行具有一定灵活性、可控性以及易于维护性的持续交付流水线,对于以前版本的Jenkins来说是不可能实现的。通过这本实用的书籍,构建管理人员、开发人员、测试人员以及其他专业人员将会学到如何利用Jenkins2的新特性来定义流水线即代码、集成其他关键技术,以及创建自动化的、可靠的流水线,以便简化和加速DevOps环境的建设。作者BrentLaster向你展示了Jenkins2与这个流行的开源自动化平台基于Web的传统版本有着很大的不同。
作者简介
BrentLaster是一位全球培训师、作家及开源技术的演讲者,也是一家科技公司的高级研发经理。他投身软件行业已经超过25年,负责过各种技术和管理岗位。除了《Jenkins 2权威指南》,他还撰写了ProfessionalGit(Wiley),一本适用于Git初学者和有经验人士的易于使用的综合性指南手册,以及ContinuousIntegrationvs.ContinuousDeliveryvs.ContinuousDeployment(O’Reilly),一本帮助初学者理解这几个概念区别的指南。你能够经常看到Brent主持一些行业会议的工作坊以及举办Safari上的一些在线培训课程。Brent总是尽力花时间学习和开发一些技术与领导力技能,然后分享给别人。他相信无论主题或者技术是什么,没有什么能替代在提供给别人知识达成目标的过程中所产生的灵感和潜能。你可以通过LinkedIn或Twitter的@BrentCLaster联系Brent。
郝树伟,
《Jenkins**指南》首位译者,阿里云高级研发工程师,主要负责开源集成和DevOps相关产品的研发,在CI/CD领域有丰富经验,在Jenkins开源社区与相关书籍翻译、汉化方面有较多贡献和经验。
石雪峰,
Jenkins全球推广大使、CertifiedJenkinsEngineer、Jenkins中文社区核心成员、Jenkins的狂热爱好者。目前就职于京东商城前台工程效率团队,负责公司级持续交付和DevOps平台体系建设。
雷涛,
Jenkins全球推广大使、CertifiedJenkinsEngineer、DevOps标准核心编写专家。目前就职于百度工程效率部,曾先后就职于新浪网、摩托罗拉、诺基亚、爱立信、乐视致新等国内外知名企业,专注于互联网、电信、金融、无人驾驶汽车等行业的软件工程效率提升,DevOps解决方案,持续交付,ASPICE/ISO26262研发过程落地等领域。
李华强,
乐融致新高级配置经理,软件配置管理(SCM)领域的一名老兵,先后就职于北电网络、爱立信、飞维美地、乐视、乐融等多家企业,从事与SCM、DevOps相关的工作。Jenkins的忠实粉丝、**实践的推广者,Jenkins官方CertifiedJenkinsEngineer(CJE)和CertifiedCloudBeesJenkinsPlatformEngineer(CCJE)认证者。
精彩书评
Inthelastdecadeworkinginthevalley,IhavetheopportunitiestoseeJenkinsgrowitspopularitywithoutasignofslowingdown.Frominternetserviceproviderstofinancialinstitutions,fromyoungstartupstolong-timetraditionalcorporations,Jenkinshasbeenthebrandnameforoperationalagilitythatspeaksonitsown.However,it’salsooftentoseecompaniesadoptedJenkinsfailtodeliverCI/CD.
TheJenkins2:Up&RunningbookhasdoneagreatjobindeliveringthevalueofJenkinsbyfocusingonhowtobuildpipelinefromuser’sperspectiveandillustratinghowtogetmoreoutoftheplatform.ItprovidestheguidancehowtoeffectivelyuseJenkinstoachieveatrulyautonomousecosystem.
——JeffLiuCEO,DAOpsFoundation,GoogleDevOpsExpert
Jenkins是近年来一直炙手可热的开源项目,也是各大公司搭建部署体系、规划持续交付的必经之路。软件行业高速发展、互联网产品不断迭代,Jenkins自身也随之变化、扩展、精进。《Jenkin2**指南》一书会指引大家快速习得全新的技能,帮助企业持续演进和突破CI/CD的能力。
——徐奇琛京东前台技术服务提升部负责人
作为持续集成领域著名的开源项目,Jenkins近年来随着CloudNative等技术的发展变得愈加活跃,并快速进化到了Jenkins2时代。Jenkins2不只是简单的版本升级,而是通过流水线等特性带来了一整套CI/CD解决方案,成长为真正的软件交付流水线工作台,也成为每一位专业的软件工程师都需要掌握的入门技能!
《Jenkins 2权威指南》的翻译非常及时,为国内的广大开发人员提供了**的学习和参考资料。《Jenkins 2权威指南》在全面介绍Jenkins2的同时,既能让新手快速入门,也能让经验丰富的工程师及时更新自己的知识和技能,可以说为国内的互联网及软件产业带来了软件交付质量和效率的双提升,包括我本人在组织Jenkins中文社区的技术交流工作中也成为其早期受益者。阅读《Jenkins 2权威指南》不但可以了解和学习如何将已有的任务迁移到新版本上,而且可以学习*新的JenkinsDSL来让流水线也可编程,使其更加灵活、智能和高效,这《Jenkins 2权威指南》非常值得一读。
——杨振涛vivo互联网架构师
这是我力荐的介绍Jenkins新特性的书籍。写一本几乎所有受众都适用的书真是一个壮举,而Brent已经圆满地完成了这一任务。
——Chaim"Tinjaw"Krause
BrentLaster在展示Jenkins威力方面做得太棒了,在解析Jenkins基本组件的同时又提供了全面的指导来获取Jenkins2以外的更多知识。那些有价值的流水线即代码的示例会为实现持续交付添砖加瓦。这些应同属于Jenkins新老用户的工具箱。
——BrianDawsonDevOps传教士,CloudBees公司
目录
第1章 Jenkins2简介1
Jenkins2是什么2
Jenkinsfile3
声明式流水线5
BlueOcean界面6
Jenkins2的全新任务类型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
结构:使用JenkinsDSL31
节点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
安全加固Jenkins125
启用安全性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中使用Vault168
总结171
第6章 扩展你的流水线173
可信库和不可信库173
内部库与外部库174
内部库174
外部库176
从代码仓库获取库178
ModernSCM178
LegacySCM178
在流水线脚本中使用库179
从源码版本控制中自动下载库180
加载库到脚本中180
Jenkins项目中的库范围182
库结构183
样本库例程183
共享库代码的结构184
使用第三方库195
直接加载代码196
从外部SCM加载代码196
回放外部代码和库198
深入研究可信与不可信代码200
总结203
第7章 声明式流水线205
动机206
不直观206
掌握Groovy206
其他必需的装配206
结构207
代码块208
部分208
指令209
步骤209
条件210
构建代码块210
pipeline211
agent212
environment215
tools216
options219
triggers222
parameters224
libraries227
stages228
post231
处理非声明式的代码232
检查你的插件233
创建一个共享库233
在pipeline代码块之外放置代码233
script语句234
在一个阶段中使用parallel234
脚本检查与错误报告235
声明式流水线与BlueOcean接口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章 BlueOcean用户界面301
第一部分:管理已有的流水线302
主界面302
项目详情页面305
运行页面316
第二部分:使用BlueOcean编辑器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流水线项目转换为Jenkinsfile385
方法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
在自由风格类型项目中使用SonarQube436
在流水线项目中使用SonarQube436
利用SonarQube分析的结果437
在Jenkins中集成SonarQube的输出441
代码覆盖率:与JaCoCo集成442
关于JaCoCo442
JaCoCo与流水线集成443
在Jenkins中集成JaCoCo的输出445
总结446
第13章 集成制品管理447
发布和获取制品447
安装和全局配置448
在脚本式流水线中使用Artifactory449
执行其他任务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运行Docker492
总结493
第15章 其他接口495
使用命令行接口496
直接使用SSH接口496
使用CLI客户端499
使用JenkinsRESTAPI501
过滤结果502
启动构建504
使用脚本控制台506
总结508
第16章 故障处理509
深入流水线步骤509
处理序列化错误512
连续传递风格513
序列化流水线513
NotSerializableException513
处理非序列化错误514
识别引发错误的脚本行517
处理流水线异常518
在声明式流水线中使用非声明式代码518
未授权代码(脚本和方法授权)522
不支持的操作523
系统日志523
时间戳525
流水线耐用性设置526
总结527
关于作者529
封面介绍529
关于译者530
前言/序言
前言
如何使用《Jenkins 2权威指南》
这《Jenkins 2权威指南》很大——比我曾经预想的还要大。我也曾经有一定程度的担心,但是最后决定以两种方式之一往下写:要么限制必要的内容写成一个基本的指导书籍,要么花一些篇幅解释概念、创建代码示例以及探究流水线即代码中术语、函数以及程序的真正含义。如果你已经浏览了《Jenkins 2权威指南》,你大概能够推断出我选择了后者。
我这样做的原因,出于我多年培训人们使用Jenkins的经验。在一个时间很短的课堂或者工作坊中,我们只能涵盖少量主题。但是人们总是渴望获得更多——更多的细节以及他们可以应用的示例。在大会演讲结束后,我一定会遇到很多人询问更多信息来源、示例,以及在哪里能够找到这样或那样的信息等。这些通常可以通过Google搜索或者查看StackOverflow上的问题得到解决。这没有什么问题,但也不是最方便的方法。
这《Jenkins 2权威指南》旨在帮助你找到如何使用这个强大技术的答案。诚然,它比DevOps更加技术化,但是有可能你在阅读《Jenkins 2权威指南》的时候,已经掌握了一些持续集成(CI)、持续部署(CD)、DevOps以及Jenkins的知识,并且正在寻找如何充分利用Jenkins新特性的方法。
所以,下面列出了一些指导原则(你可以随意使用它们,或者根据你的情况忽略它们)。
√不要试图通读整《Jenkins 2权威指南》——除非你需要获得更多的睡眠。
√浏览目录中的内容。章节的标题可以示意它的全部内容。
√如果你想理解基本思路并且想很快上手的话,阅读前两章并开始使用一些基本的流水线。当你遇到疑问或者问题时,查阅《Jenkins 2权威指南》中相应的章节即可。
√如果你已经熟悉基本的Jenkins用法并且想转换为流水线即代码,查看第10章的内容可以获得一些关于转换的思路,然后根据需要查看其他章节。
√如果你着手创建一个更大的流水线,查看一下关于转换的章节以及关于集成操作系统和其他技术的章节(第10~14章)。同时不要忘记了安全性——也有一个章节是关于它的(第5章)。
√如果你着手自动化Jenkins,可查看第15章。
√如果你遇到了问题,每一章都包含一些有可能帮助到你的细节。查看那些注释、警告以及扩展内容,以获得关于异常状况或功能的信息(有可能使你困惑或者提供一种你没有考虑到的思路)。《Jenkins 2权威指南》的最后也有一个章节,包含关于更多通用故障排查的内容。
我坦然承认任何技术书籍都具有的一个问题,那就是技术在快速进化中。在撰写《Jenkins 2权威指南》章节的历程中,我时常要回过头来试图追赶上最新的变化和创新,视情况进行修改。我坚信《Jenkins 2权威指南》中的材料将会提供给你一个良好的基础和参考去使用Jenkins2。但是,你也应该经常查阅最新的社区文档以获得更新和新的创新内容。
最后,有一个请求——即使你不需要阅读《Jenkins 2权威指南》的大部分内容,如果你发现你阅读的部分有用,也请花一点时间发表一个评论。人们寻找有用书籍的方法就是口头传颂和在线评论。你的评论将会产生极大的影响。
谢谢,我希望在未来的培训或者大会中见到你。
排版约定
《Jenkins 2权威指南》使用了下列排版约定。
中文楷体或英文斜体(Italic)
表示新的术语、URL、邮件地址、文件名称和文件扩展名。
等宽字体(Constantwidth)
表示程序片段,也可以用在正文中表示变量名或函数名等程序元素、数据类型、环境变量、语句和关键词等。
等宽字体加粗(Constantwidthbold)
表示应该由用户输入的命令或其他文本。
()
表示文本应该被替换为用户提供的值或根据上下文决定的值。
该图标表示提示或建议。该图标表示提示或建议。
该图标表示一般注释。
该图标表示警告或注意。
使用代码示例
《Jenkins 2权威指南》的下载资源(代码示例、练习等)可以到https://resources.oreilly.com/examples/0636920064602处获得。
《Jenkins 2权威指南》将对你的工作有所帮助。一般来说,《Jenkins 2权威指南》提供的示例代码,你都可以在你的程序和文档中使用。你不必联系我们获得许可,除非你要大量传播代码。例如,从《Jenkins 2权威指南》中抄录一些代码用于编写程序不需要许可;销售或分销O’Reilly随书附带的代码则需要许可;引用《Jenkins 2权威指南》中的内容和示例用于回答问题不需要许可;将《Jenkins 2权威指南》中的大量示例代码插入你的产品文档中则需要许可。
我们感谢但不要求注明出处。出处的格式一般包括标题、作者、出版商和ISBN。例如,“Jenkins2:UpandRunningbyBrentLaster(O’Reilly).Copyright2018BrentLaster,978-1-491-97959-4.”。
如果你觉得示例代码的使用不合法或者不符合以上的许可权限,请随时联系我们:permissions@oreilly.com。
关于《Jenkins 2权威指南》代码示例的重要提示
《Jenkins 2权威指南》中的代码经常出现单行代码太长而超出页面宽度的情况。在这种情况下,代码会被“挤”到下一行,这些行中一般没有续行字符。然而,你可以通过命令的语义或者缩进来判断哪些是连续多行代码。
关于《Jenkins 2权威指南》中图表的提示
《Jenkins 2权威指南》中使用了很多截屏和图表来帮助读者澄清一些信息。这些可视化元素的质量和比例取决于获取它们的方法。同时,由于Jenkins社区会频繁地发布应用和插件的更新版本,《Jenkins 2权威指南》中的可视化呈现可能会发生变化。
O’ReillySafari
Safari(原名SafariBooksOnline)是一个服务企业、政府、教育机构以及个人的基于会员制的培训参考平台。
会员有权限获取成千上万的书籍、培训视频、学习路径、交互式指南以及来自超过250家出版商的作品清单,包括O’ReillyMedia、HarvardBusinessReview、PrenticeHallProfessional、Addison-WesleyProfessional、MicrosoftPress、Sams、Que、PeachpitPress、Adobe、FocalPress、CiscoPress、JohnWiley&Sons、Syngress、MorganKaufmann、IBMRedbooks、Packt、AdobePress、FTPress、Apress、Manning、NewRiders、McGraw-Hill、Jones&Bartlett以及CourseTechnology等。
更多的信息请访问http://oreilly.com/safari。
如何联系我们
请将对《Jenkins 2权威指南》的评价和存在的问题通过如下地址告知出版者:
美国:
O’ReillyMedia,Inc.
1005GravensteinHighwayNorth
Sebastopol,CA95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
O’Reilly的每一《Jenkins 2权威指南》都有专属网站,你可以在那里找到关于《Jenkins 2权威指南》的相关信息,包括勘误列表、示例代码以及其他信息。《Jenkins 2权威指南》的网站地址:http:/bit.ly/Jenkins-2-ur。
对于《Jenkins 2权威指南》的评论和技术性的问题,请发送电子邮件到:bookquestions@oreilly.com。
关于我们的书籍、课程、会议和新闻的更多信息,请参阅我们的网站http://www.oreilly.com。
在Facebook上找到我们:http://facebook.com/oreilly
在Twitter上关注我们:http://twitter.com/oreillymedia
在YouTube上观看我们:http://www.youtube.com/oreillymedia
致谢
《Jenkins 2权威指南》最大的感谢要给予Jenkins社区。Jenkins证明了社区开发、社区支持的软件也可以具有难以置信的实用性、多功能性及高质量。所有为Jenkins做出贡献或者在开发插件、培训资料、答疑解惑,以及版本推广等方面发挥作用的人,谢谢你们。
在个人方面,有太多的人需要感谢。我所能想到的方式就是通过粗略的分类一一罗列出来。
感谢KohsukeKawaguchi创建了Hudson以及后来的Jenkins,感谢你同意为《Jenkins 2权威指南》撰写推荐序。通过社区以及CloudBees,你所带给Jenkins的技术驱动力和领导力已经对我们如何创建和交付软件产生了巨大的积极影响。
感谢技术编辑PatrickWolfe、BrianDawson及ChaimKrause。他们花费了大量的时间审阅《Jenkins 2权威指南》,非常感谢。有了他们的反馈,内容才变得无限完美。
PatrickWolfe从《Jenkins 2权威指南》的初期就开始致力于提供技术更新以及其他信息。这非常有帮助,确保了这《Jenkins 2权威指南》可以如期望地与当前的Jenkins状态保持同步(至少在《Jenkins 2权威指南》发行之时)。他的输入是无价的,我非常感谢他为此花费的时间以及对本项目的无私奉献。
BrianDawson也提供了很大的帮助,尤其在标注变化以及《Jenkins 2权威指南》针对Jenkins用户可以更加完善的地方。Brian和Patrick都在CloudBees工作,他们把公司关注的焦点无私地反馈给了Jenkins社区。
ChaimKrause是我认识的最敬业的人之一。至今我已经与他合作了两《Jenkins 2权威指南》,我非常感谢他对细节的努力和专注。他花费时间亲自试验,并且指出哪里的用词或示例需要更新或者不合理。书中一些细节问题都归功于他的纠正。
非常感谢O’Reilly的所有员工。首先,感谢编辑BrianFoster给《Jenkins 2权威指南》一个出版机会以及整个过程中的大力支持。感谢AngelaRufino帮助《Jenkins 2权威指南》如期步入正轨,回答我的所有问题,以及对《Jenkins 2权威指南》整个过程自始至终的把控。同时也要感谢NanBarber对《Jenkins 2权威指南》的早期编辑工作。
同样感谢文字编辑DwightRamsey和RachelHead,他们使我的书更加易读和清晰。感谢生产编辑JustinBilling和校对员JasmineKwityn把所有内容汇总在一起,创造了最终的完美作品。
《Jenkins 2权威指南》中的很多材料最初分享和打磨于我为O’Reilly的Safari平台提供的在线培训课堂上以及会议工作坊中。感谢SusanConant(与BrianFoster一起)聆听我对Jenkins2在线培训的想法以及帮助开发课程。同时要感谢VirginiaWilson给我提供额外的围绕CI和CD写作的机会,也要感谢会议举办者RachelRoumeliotis和AudraCarter对会议过程的指导。
最后对于O’Reilly,我还想感谢那些对我围绕Git和Jenkins的很多在线培训提供支持的培训人员。感谢YasminaGreco、LindsayVentimiglia、NurulIshak及ShannonCutt监督所有的培训并保证一切按照专业的方式走上正轨。
如果我在会议这边没有提及JayZimmerman,那真的是怠慢了。Jay是“NoFluffJustStuff”系列会议的创办者和组织者,也是第一个提供给我跨企业或者在全美国演讲Jenkins机会的人。
感谢SAS的管理层对我这么多年来创立和展示企业培训课程的支持,尤其感谢GlennMusial、CyndiSchnupper及AndyDiggelmann对我的鼓励和支持。
感谢参加过我的Jenkins培训或工作坊的所有人,尤其感谢那些提出问题并且/或者提供反馈从而让我思考更多主题和方式来改进内容的人。
我谨代表Jenkins社区,对工作在CloudBees的那些推进Jenkins、答疑解惑,以及给我们所有用户提供文档的人表示感谢,对你们的努力表示感激。有太多的人需要感谢,其中有些名字在我为写作《Jenkins 2权威指南》调研的时候就反复提及了,包括PatrickWolfe、JessieGlick、AndrewBayer、JamesDumay、LiamNewman及JamesBrown。如果你看到这些人写的内容,阅读一下,一定能学到有用的东西。同时也要感谢MaxArbuckle协调JenkinsWorld会议,很多关于Jenkins2的信息都是在该会议上首次呈现的。
最深的感谢应该给予我的妻子Anne-Marie以及我的孩子们。这《Jenkins 2权威指南》的写作经历了很长一段时间,主要是夜间和周末,“剥夺”了我陪伴他们的时间,同时我所写的东西对他们来说也非常陌生。尽管如此,他们始终鼓励我。Anne-Marie,你是我最强大的后盾和力量源泉,因为你是我的一切。谢谢你帮助我平衡生活、梦想和工作,帮我打理得井井有条。我由衷地感激在我们生活的每一天你所带给我的仁慈、爱意以及灵感。
最后,感谢阅读《Jenkins 2权威指南》的读者。我真诚地希望你们能从《Jenkins 2权威指南》中获得价值,希望《Jenkins 2权威指南》能够帮助你们在使用Jenkins以及其他相关方面取得进步。
推荐序一
Inoneoftherecentonlinediscussions,whichisaboutwhatneedstobedonetoJenkins,thetoprequestwasthat“wedon’tneedanynewfeatures,justtelluswhatJenkinsiscapableof.”ThisisdefinitelymoretrueinChina,wherethelanguagebarrierandotherfactorsmakeitdifficulttoaccessknowledgeonline.IgrewupinJapan,soIknowthisfrommyownpersonalexperience!
SoIwasreallyexcitedtohearaboutthistranslationproject.ThisalsocomesintherightmomentastheJenkinscommunityisgrowinginChinarapidly,fromourlocalizationeffort,WeChatpresence,tovariousconferenceappearances.
MaythisbookinChinesebeanimportantsourceofknowledgeasmanymoreChinesesoftwareengineeringteamsseekbettersoftwaredevelopmentprocess.
——KohsukeKawaguchiJenkins创始人
推荐序二
Jenkins,你是我们的超级英雄!
Withgreatpowercomesgreatresponsibility.
2004年,Jenkins创始人KohsukeKawaguchi(KK)发布了Hudson(Jenkins的前身)的第一个版本。15年过去了,从简单的自动化工具,到持续集成工具,再到持续交付/DevOps的核心工具平台,Jenkins的功能不断增强,插件越来越丰富,其已经成长为我们的超级英雄,守护我们更高效地研发、测试和交付高质量且安全的软件与服务。
对于研发工程师而言,Jenkins可以帮助我们进行自动化构建与持续集成。
对于测试工程师而言,Jenkins可以帮助我们进行自动化测试。
对于运维工程师而言,Jenkins可以帮助我们进行自动化部署。
在2018年的DevOpsWorld|JenkinsWorld旧金山大会上,KK也发布了Jenkins的五大超能力(JenkinsSuperpower):
1.JenkinsPipeline:流水线(Pipeline)与BlueOcean的搭配,让你轻松驾驭持续交付的核心实践——流水线。
2.JenkinsEvergreen:常青树项目,可以帮助我们自动化升级JenkinsMaster。
3.ConfigurationAsCode:配置即代码,由丹麦爱好者贡献的特性,让你可以像管理代码一样管理Jenkins的系统配置。
4.CloudNativeJenkins:云原生Jenkins,让Jenkins更适合在公有云与私有云环境下运行。
5.JenkinsX:面向Kubernetes的云原生应用CI/CD解决方案。
如今的Jenkins,就像钢铁侠一样,拥有许多“顶级武器装备”(包括但不限于上述你看到的这些)。那么,你如何快速读懂这位超级英雄呢?你需要一本手册。没错,正是你手中的这本《Jenkins2权威指南》。
《Jenkins 2权威指南》作者倾囊相授了关于Jenkins2的详细使用方法(重点聚焦在流水线的使用上)、JenkinsAPI的使用、DevOps相关工具链的集成等非常有实操意义的知识。正如开源大神Linux之父LinusTorvalds所说:“Talkischeap.Showmethecode.”《Jenkins 2权威指南》还附带了很多Jenkinsfile编写样例。《Jenkins 2权威指南》作者BrentLaster来自SAS(全球最大的软件公司之一),他将自己多年的Jenkins实战经验融入书中,相信可以满足读者日常的大部分需求。
Jenkins在中国这片土地上非常受欢迎,已经成为中国地区DevOps践行的事实标准。根据2017年DevOps时代社区的调查数据显示,86%的中国用户选择了Jenkins作为持续交付的核心工具链。
与此同时,随着中国IT力量的崛起,我们不再只是使用者与跟随者,越来越多的爱好者开始参与Jenkins社区的建设。2017年,首届Jenkins用户大会落地中国上海(KK亲临现场并做精彩分享),并且JenkinsAreaMeetup也在中国大地盛开。2018年,景韵同学有幸与《Jenkins 2权威指南》中的两位译者石雪峰、雷涛一起成为首批JenkinsAmbassador(Jenkins全球推广大使),并且代表中国的Jenkins社区推动者们JenkinsPipelineExpertsGroup(简称JPEG)获得了KK亲自颁发的MostValuableAdvocate(最有价值支持者)奖项。
这一年,中国的Jenkins用户有了自己专属的Logo——KongFuJenkins。
这一年,Jenkins官网有了中文站,越来越多的爱好者开始参与Jenkins中文站的建设。
这一年,我们一起让Jenkins国际社区听到了来自中国的声音。
新的一年,新的征程。我们热烈期待Jenkins在新的形势下锐意进取,继续站在时代的浪潮之巅。
感谢4位译者郝树伟、石雪峰、雷涛、李华强,以及博文视点的编辑付睿、李云静同学付出的非凡努力,感谢你们为我们奉上如此精彩的书籍。翻译技术书籍是一份辛苦的工作,我们亲历了4位译者字斟句酌、精益求精的过程,向你们致敬。
萧田国
DevOps时代社区联合创始人、高效运维社区创始人
JenkinsUserConferenceChina联合发起人
景韵
DevOps时代社区联合创始人
JenkinsAmbassador(Jenkins全球推广大使)
JenkinsUserConferenceChina联合发起人
2019年2月28日
中文版序
In2015,IhadtheprivilegeoftravellingtoChinaandpresentingseveralcorporatetrainingworkshops,includingonesonJenkins.ItwasamemorableexperienceasIhadtheopportunitytoworkwithmanytalentedindividualswhowantedtolearnmoreaboutJenkinsandCI/CD.ButthechallengeformystudentswasthatIcouldonlypresentinEnglish.Irecalled
atthattimethatIcouldmakethepresentationandtrainingmaterialsavailableinChineseforeveryone.ButIdidnothavetheknowledgeorresourcestoaccomplishthat.Iamthankfulnowthatthereisanopportunitytoaccomplishthatforthisbook.
IwroteJenkins2?UpandRunningtohelppeopleunderstandtheevolutionofJenkins?anevolutionthatcontinuestoday.InarecentkeynotepresentationatDevOpsworld,KohsukeKawaguchispokeofthe?5superpowers?ofJenkinsthatarebeingworkedon:JenkinsPipeline,JenkinsEvergreen,ConfigurationasCode,CloudNativeJenkins,andJenkinsX.JenkinsPipelineisatthefrontofthislistforareason.ItrepresentsthestartingpointfortheinitialevolutionfromthetraditionalJenkinsproduct.ItismyhopethatthisbookwillprovidethereaderwithavaluablefoundationforunderstandingJenkinsPipeline.AnditisalsomyhopethatitwillinspirecuriosityandinterestaroundtheotheritemsinKohsuke’slist.
IamproudandhonoredthatJenkins2?UpandRunningisbeingtranslatedfortheChineseaudience.Mygoalofthetranslationisitcanbeanon-goingresourceforindividualsandteamstoshareknowledge,solveproblemsandgenerateideas.IhopethatsomedayImaytraveltoChinaandvisitwithJenkinsusersagainandheartheirthoughtsonthebook.Fornow,though,Iwillsimplysaythankyou.AndIwishyou,thereader,greatsuccessandaccomplishmentinyourJenkinsandDevOpsjourneys.
译者序
在软件开发过程中,一个好工具就像一门好语言,往往具有以下特征:可扩展性、普遍适用性、庞大而活跃的社区,同时易于上手,难于精通,让人充满想象空间。Jenkins恰恰符合上面的绝大多数特征,从而成为开源领域最具话题性的现象级产品。
时光荏苒,几年来由于工作的原因,译者亲历了Jenkins的发展和变化过程,从一开始看起来略显简陋的工具,到全新设计的用户界面,再到友好的用户向导和强大的流水线即代码,Jenkins一直在以非凡的速度进行着自我变革,从一个自动化工具演变成了覆盖持续交付全流程的核心纽带。随着DevOps大潮的汹涌来袭,译者也被裹挟着进入这股洪流之中,依稀记得在2017年的首届Jenkins中国用户大会上,Jenkins创始人KK(KohsukeKawaguchi)来到中国用户身边分享Jenkins2的特性,这也是译者第一次见到KK的“真身”,当年阅读的代码中出现过无数次KK的名字,当他真真切切地来到面前时,涌现的幸福感让人记忆深刻,而看不到尽头的与KK合影的队伍也再次印证了Jenkins的巨大成功和其在国内无可比拟的影响力。
即使在外界普遍看来,Jenkins已经成为事实上CI/CD领域的领头羊,但是近年来随着深入参与社区活动,并且同Jenkins核心团队多次接触后,译者依然清晰地感受到一种真真切切的危机感。的确,历经多年的单体应用架构设计为人诟病,系统可靠性和复杂性的挑战让人望而却步,不断爆发的安全漏洞又如影随形,无数天才般的设计和强大的功能却鲜为人知……种种因素使得无数企业对Jenkins爱恨交加,有的企业甚至在不得不放弃Jenkins而重复造轮子的路上渐行渐远,这样的现实让整个社区开始重新思考自身的价值。
2018年8月,KK在官网上发表了一篇著名的文章Jenkins:ShiftingGears,其中毫无保留地指出,虽然Jenkins项目获得了极大的成功,但整个社区却陷入了局部优化的困境,难以迈出舒适区来解决核心问题、及时响应用户的需求。为此他提到了个点解决方案:一个是跟随JenkinsX的脚步摸索云原生应用下的持续交付之路,让Jenkins自身成为云原生应用;另一个是Jenkins2持续进化,比如发布模式,以及针对兼容性、易用性、安全性等方面进行完善。作为一个项目未来的发展路径,社区已经用实际行动开启了一次变革,相信伴随着JenkinsX项目的大热,Jenkins3已经在不远处向我们款款走来。
正如KK所说的那样,社区不仅会带给用户各种“花哨”的黑科技,还会切实解决用户的问题,所以本地化项目、大会沙龙、在线分享等方面的工作同样重要,而一本全面还原Jenkins本来面貌和核心功能的书籍也必不可少,值得庆幸的是,这本集大成之作即将在中国面市。《Jenkins 2权威指南》全面系统地介绍了Jenkins,其中针对核心功能深入浅出的解读,以及详尽实用的演示代码都让人眼前一亮。将这《Jenkins 2权威指南》引入中国,以飨读者,不能不称为一件幸事。
整《Jenkins 2权威指南》的翻译过程历时半年。系统性地翻译一《Jenkins 2权威指南》,其中的难度超乎想象,尤其是技术类书籍在尊重原文的同时,又要满足中文读者的阅读习惯和表达方式,这简直让人抓狂。于是译者们针对每句话、每个专有名词都字斟句酌,力争做到尽善尽美,这背后真正支持我们的“源动力”,正是多年来Jenkins带给我们的支持与陪伴。仅以此书作为对整个Jenkins社区的回报,希望有更多爱好者可以从中获取灵感和新知,也希望有更多的小伙伴可以身体力行地加入社区贡献中。如此这般,那便是极好的。
由衷地感谢在整个翻译过程中互相勉励、互相支持的几位小伙伴郝树伟、雷涛、李华强,感谢高效运维社区与DevOps时代社区的萧帮主和景韵促成《Jenkins 2权威指南》翻译的成行,感谢博文视点出版社付睿、李云静编辑的悉心指导和专业态度,正是这点点努力汇聚在一起,最终呈现为你手中的这本《Jenkins2权威指南》。
最后感谢我的夫人对我的理解和包容。
——石雪峰
2019年3月9日于北京家中
原书推荐序
软件开发产业正经历一次缓慢但却真实的变革。软件越来越多地渗透万物,同时我们作为软件开发人员也正在试图通过更加自动化的手段处理爆炸式的需求。我可以想象出你之所以阅读此书,正是因为你也是这次变革中的一部分。
为了在这次变革中更好地服务你们,Jenkins本身也经历了重大的变革——从“经典的”Jenkins世界,你可以通过服务器渲染GUI的一些任务配置Jenkins,到“现代的”Jenkins世界,你可以通过Git仓库中的Jenkinsfile配置Jenkins,同时通过一个更加舒适的单页应用查看结果。
当我们在社区中开发这个现代的Jenkins以及铺开这些新特性时,我持续面对着这样一个挑战:大多数用户没有意识到Jenkins上的这些变革,人们依然保持多年来的习惯继续使用Jenkins。
公平地讲,这完全合乎情理。一方面,由于人们的惰性以及通过Google、StackOverflow、邮件列表、问题跟踪系统等可以获得大量的信息和知识,告诉人们如何有效地按照“经典的”方式使用Jenkins。另一方面,一般说来,我们的社区太忙于构建这个“现代的”Jenkins,而没有从整体上花费太多的精力告诉人们如何有效地按照“现代的”方式使用Jenkins。
所以,我听到这《Jenkins 2权威指南》要出版的消息非常高兴,这是对挑战的正面迎击。在这《Jenkins 2权威指南》中,Brent退一步忽略了过去十年中我们所熟悉的Jenkins的一切,然后进一步重构了今天的Jenkins应该如何使用。不像从Google、StackOverflow等获得的知识都是零碎的,这《Jenkins 2权威指南》给你一个系统的路径来展现整幅美景,这使得它非常有价值。
这是一本非常理想的书,既适合CI/CD的新手,也适合使用Jenkins多年的老手。这《Jenkins 2权威指南》将帮助你发现以及重新发现Jenkins中的未知世界。
——KohsukeKawaguchi
Jenkins创始人
CloudBees公司CTO
2018年2月