前言
如何使用本书
这本书很大——比我曾经预想的还要大。我也曾经有一定程度的担心,但是最后决定以两种方式之一往下写:要么限制必要的内容写成一个基本的指导书籍,要么花一些篇幅解释概念、创建代码示例以及探究流水线即代码中术语、函数以及程序的真正含义。如果你已经浏览了本书,你大概能够推断出我选择了后者。
我这样做的原因,出于我多年培训人们使用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以及其他相关方面取得进步。
推荐序一
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月