Jenkins 三十六计

Jenkins 三十六计

[参考文档] :《DevOps 三十六计》 电子工业出版社

总说

是什么能够驱动持续交付与DevOps 的转型与落地?是什么能真正打破部门墙,实现端到端的服务交付?答案就是:Jenkins!

相信大部分IT 从业人员都听说过或者使用过Jenkins,研发工程师使用Jenkins 执行编译打包,测试工程师使用Jenkins 执行自动化测试,运维工程师使用Jenkins执行批量操作和自动化部署,Jenkins可谓居家必备的神器。

Jenkins的前身Hudson 诞生于2004年,由Sun公司的一名年轻工程师 Kohsuke Kawaguchi(KK) 研发,一开始主要用于满足工程师个人自动化的需求,后来不断有开源爱好者贡献代码。在2010年Oracle 收购Sun之后不久,Hudson和Sun 公司的其他著名开源软件Java、MySql 等一样面临抉择。2011年年初,社区投票决定:基于Hudson 创建新的开源项目–Jenkins。在社区的努力下,Jenkins的发展远超Hudson,逐渐成为最流行的开源工具之一,可以说是开源赋予了Jenkins全新的生命力。

Jenkins目前由Jenkins Governance Committee (Jenkins 管理委员会负责管理),包括Jenkins 版本的选择与发布,重大缺陷的处理,全球Jenkins Area Meetup 以及Jenkins User Conference 等活动授权和组织等相关工作。目前中国有Jenkins User Conference China 大会,以及北京,上海,深圳等多个城市的Jenkins Area Meetup 沙龙活动。

Jenkins 从解决工程师的切身需求出发,跟随社区一起成长,逐步从自动化工具升级为持续集成引擎,持续交付核心工具,DevOps 核心工具。

目前KK 对Jenkins 的定位是:Jenkins is the Hub of CD/DEVOps Ecosystem,即Jenkins 是持续交付/DevOps 生态的核心,如下图所示:
在这里插入图片描述

截至2017年8月的Jenkins World 大会前夕,Jenkins 已经拥有1400 多个插件,囊括代码管理,自动化构建,自动化代码扫描,自动化测试,制品管理类,自动化部署等多个软件工程领域,具备与众多开源工具及商业产品(如Git,GitHub,Gerrit,Maven,Junit,Nexus,Docker,Kubernetes和Mesos等)的集成能力。

Jenkins Core 提供了一个平台,借助Jenkins 开源社区的力量,以插件的方式实现一个持续交付与DevOps 的生态系统。尤其是2.0版本以后,Jenkins 提供了对PipeLine 的原生支持,而Pipeline 又是持续交付的核心实践,PipeLine 可以帮助团队打通从代码提交到发布上线的端到端的交付过程,整合多角色(研发,测试,运维,安全等)的职能,实践与工具集合,再配合BlueOcean 的Pipeline 可视化查看和编辑功能,能够让持续交付流水线设计变得更加容易实现。结合Jenkinsfile的使用,将流水线的编排以文件的方式采用版本控制系统管理起来,能够轻松实现Pipeline As Code。

Jenkins 拥有众多的优点,比如开源,平台化,分布式调度,出色的流水线编排,插件种类齐全,入门简单,社区活跃等,但众多优点也难掩其企业级与规模化应用下的不足,比如单体架构,本地化文件存储,界面易用性差,性能瓶颈明显,安全问题较多等。我们希望通过自己多实践持续交付和使用Jenkins 的经验分享,帮助大家少走弯路,早日走上持续交付与DevOps的康庄大道。

三十六计

综合

  1. Jenkins 用得好,插件不能少。
  2. 插件虽好,可不要贪多;插件越多,Jenkins UI 越慢。
  3. Jenkins API 很强大,Python Jenkins 让API 使用起来更简单。
  4. Jenkins 不仅仅是自动化工具,Jenkins Pipeline 和 Blue Ocean能实现可视化部署流水线,帮你迈向持续交付与DevOps。

插件

  1. LDAP 集成域用户,轻松搞定统一用户管理,Active Directory Plugin 和LDAP Plugin 都可以实现LDAP 管理
  2. Role Strategy Plugin 可以实现精细化权限管理。
  3. Cofig History Plugin 可记录Job和Slave 配置版本,轻松实现回滚。
  4. Build Monitor Plugin 可以让Build 菜单可视化,方便团队监控 Build。
  5. SafeRestart Plugin 可以安全重启Jenkins。
  6. Jenkins Job Builder 可以将Job 创建变得模板化和脚本化,给你不一样的规模化Job管理。
  7. Promoted Builds Plugin可以标记Build结果,实现Build 结果质量门控制。
  8. Promoted Builds Plugin可以标记Build 结果,实现Build结果质量门控制。
  9. Mask Passwords Plugin 可以实现敏感信息控制台加密输出。
  10. GitLab Plugin 可以集成GitLab,实现代码提交或Merge Request 即构建。
  11. SonarQube Scanner for Jenkins 可以集成SonarQube,帮忙随时查看代码扫描结果。
  12. Jira Plugin 可以集成Jira,实现问题状态自动化流转。
  13. Junit Plugin可以生成测试覆盖率报告,方便洞察代码质量趋势。

使用规范

  1. 推荐使用LTS 安装报包部署Jenkins,安装升级更简单,War包只适合再应用服务器有特殊配置时使用。
  2. Jenkins 文件数据备份和恢复验证要常做,备份Archive 要谨慎。
  3. Job和View 命名要规范,View 配置要想好,正则表达式是法宝。
  4. 清除旧的构建有必要,按天还是按量,需要看磁盘大小和业务需求。
  5. Job少用Archive,磁盘IO 不再高。
  6. 禁止在Jenkins Master 上跑业务Job。
  7. 及时清理无用的Job,用Shelve Project Plugin 实现转存比直接删除强。
  8. Jenkins Credentials 管理认证信息,勿在脚本中写账好密码。
  9. 保持Master和Slave 节点时间一致,灵异问题将不再出现。
  10. Build邮件不乱发,定位个人很重要。
  11. Job和Build 数量较多时,避免使用Reload Configuration from Disk。

使用技巧

  1. 善用Job参数,强大的参数化构建可以实现job动态配置。
  2. 善用文件Fingerprint 实现Job异步关联。
  3. Pipeline as Code ,以Jenkins 的方式编写和存储流水线脚本,实现统一管理与版本控制。
  4. Pipeline 支持并行(parallel) 执行,多环境并行执行不再是梦。
  5. 善用PipeLine Syntax 提示功能,快速编写PipeLine脚本。
  6. 使用Slave 执行Job ,充分利用分布式构建优势,性能与隔离两不误。
  7. 标准化Slave 配置,资源池化Slave,Job执行更加灵活。
  8. Slave标签可以分类构建资源,实现简易构建集群。
  9. 使用Swarm 或 Kubernetes 搞定构建集群。
  10. 单独监控Build时长,日志大小,队列等待,及时发现问题。
  11. Build 日志是财富,能帮我们统计构建成功率,时长和用户信息。
  12. 按需在构建前或构建后清理WorkSpace,安全又省空间。
  13. 环境变量生效顺序:Job injected 环境变量——>Job 参数——>slave 配置环境变量——>全局环境变量,系统变量一般不会被Override。
  14. 有问题查文档,官方Jenkins User Handbook 来帮忙。

案例:企业级Jenkins 之构建环境标准化,集群化,弹性化

Jenkins 基于Master-Slave 的架构提供分布式调度的能力,Jenkins Master 会将任务分发到Slave 上执行,我们可以通过横向扩展Slave 数量或提高配置来提升Jenkins 任务执行的效率,基于容器技术,可以轻松实现Slave 的标准化,集群化,弹性化,从而保障构建环境的一致性,构建效率以及资源的有效利用率。
Jenkins 支持创建传统的Slave ,比如通过SSH 方式添加一个机器作为Slave,配置一个或多个executor,此Slave 一般保持长连接状态,等候构建任务的分配和运行,构建任务的并发规模受限于Slave 及其executor 数量。这种类型的Slave 往往直接挂载物理机或者虚拟机,通过Jenkins UI 可以查看Salve 的状态,并对Slave进行管理等。
除此之外,Jenkins 对容器化Slave 的支持也很好,通过使用Docker 镜像固化构建环境,使用诸如Docker 插件,Kubernetes 插件,Mesos 插件等根据需求动态提供容器作为Jenkins Slave,运行构建任务后及时销毁容器Slave。这种方式在Slave 的自动扩缩容上弹性比较好,也能大幅提高资源利用率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焱宣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值