展开全部

主编推荐语

软件工程生产力独到见解,Jenkins pipeline入门实践,持续集成与交付,ChatOps自动化运维。

内容简介

本书首先介绍笔者对软件工程生产力的独到见解。其次通过一个Hello world带领初学者入门Jenkins pipeline。接着详细介绍Jenkins pipeline的语法,以及在Jenkins pipeline中如何实现持续集成、持续交付中各个阶段,包括构建、测试、制品管理、部署等;在发现现有pipeline的步骤不能满足需求时,扩展Jenkins pipeline多种方式。本书第17章介绍了Jenkins如何整合多个第三方系统,以实现ChatOps及自动化运维。为避免读者“不知从哪下手”的情况,本书通过一个简单的案例介绍从无到有的设计pipeline。

目录

  • 封面
  • 作者简介
  • 版权页
  • 前言
  • 目录
  • 1 关于软件工程生产力
  • 1.1 从另一个角度看“提高软件工程生产力”
  • 1.1.1 从劳动力要素考虑提高软件工程生产力
  • 1.1.2 从劳动对象要素考虑提高软件工程生产力
  • 1.1.3 从生产工具要素考虑提高软件工程生产力
  • 1.1.4 生产力三要素的意义
  • 1.2 Jenkins介绍
  • 1.3 Jenkins与DevOps
  • 1.4 本章小结
  • 2 pipeline入门
  • 2.1 pipeline是什么
  • 2.2 Jenkinsfile又是什么
  • 2.3 pipeline语法的选择
  • 2.4 创建第一个pipeline
  • 2.5 从版本控制库拉取pipeline
  • 2.6 使用Maven构建Java应用
  • 2.7 本章小结
  • 3 pipeline语法讲解
  • 3.1 必要的Groovy知识
  • 3.2 pipeline的组成
  • 3.2.1 pipeline最简结构
  • 3.2.2 步骤
  • 3.3 post部分
  • 3.4 pipeline支持的指令
  • 3.5 配置pipeline本身
  • 3.6 在声明式pipeline中使用脚本
  • 3.7 pipeline内置基础步骤
  • 3.7.1 文件目录相关步骤
  • 3.7.2 制品相关步骤
  • 3.7.3 命令相关步骤
  • 3.7.4 其他步骤
  • 3.7.5 小贴士
  • 3.8 本章小结
  • 4 环境变量与构建工具
  • 4.1 环境变量
  • 4.1.1 Jenkins内置变量
  • 4.1.2 自定义pipeline环境变量
  • 4.1.3 自定义全局环境变量
  • 4.2 构建工具
  • 4.2.1 构建工具的选择
  • 4.2.2 tools指令介绍
  • 4.2.3 JDK环境搭建
  • 4.2.4 Maven
  • 4.2.5 Go语言环境搭建
  • 4.2.6 Python环境搭建
  • 4.3 利用环境变量支持更多的构建工具
  • 4.4 利用tools作用域实现多版本编译
  • 4.5 本章小结
  • 5 代码质量
  • 5.1 静态代码分析
  • 5.1.1 代码规范检查
  • 5.1.2 使用PMD进行代码规范检查
  • 5.1.3 各静态代码分析器之间的区别
  • 5.2 单元测试
  • 5.2.1 JUnit单元测试报告
  • 5.2.2 JaCoCo实现代码覆盖率
  • 5.2.3 代码覆盖率越高,软件的质量就越高吗
  • 5.3 性能测试
  • 5.3.1 准备性能测试环境
  • 5.3.2 运行JMeter测试
  • 5.4 SonarQube:持续代码质量检查
  • 5.4.1 Maven与SonarQube集成
  • 5.4.2 Jenkins与SonarQube集成
  • 5.4.3 使用SonarQube Scanner实现代码扫描
  • 5.4.4 SonarQube集成p3c
  • 5.4.5 将分析报告推送到GitLab
  • 5.5 Allure测试报告:更美观的测试报告
  • 5.5.1 Allure测试报告介绍
  • 5.5.2 集成Allure、Maven、Jenkins
  • 5.6 当我们谈质量时,谈的是什么
  • 5.7 本章小结
  • 6 触发pipeline执行
  • 6.1 什么是触发条件
  • 6.2 时间触发
  • 6.2.1 定时执行:cron
  • 6.2.2 轮询代码仓库:pollSCM
  • 6.3 事件触发
  • 6.3.1 由上游任务触发:upstream
  • 6.3.2 GitLab通知触发
  • 6.3.3 在pipeline中实现GitLab trigger
  • 6.4 将构建状态信息推送到GitLab
  • 6.5 使用Generic Webhook Trigger插件实现触发
  • 6.5.1 从Webhook请求中提取参数值
  • 6.5.2 触发具体某个Jenkins项目
  • 6.5.3 根据请求参数值判断是否触发Jenkins项目执行
  • 6.5.4 控制打印内容
  • 6.5.5 控制响应
  • 6.6 本章小结
  • 7 多分支构建
  • 7.1 创建多分支pipeline
  • 7.2 根据分支部署到不同的环境
  • 7.3 when指令的用法
  • 7.4 GitLab trigger对多分支pipeline的支持
  • 7.5 Generic Webhook Trigger插件在多分支pipeline场景下的应用
  • 7.6 本章小结
  • 8 参数化pipeline
  • 8.1 什么是参数化pipeline
  • 8.2 使用parameters指令
  • 8.2.1 parameters指令支持的参数类型
  • 8.2.2 多参数
  • 8.3 由另一个pipeline传参并触发
  • 8.4 使用Conditional BuildStep插件处理复杂的判断逻辑
  • 8.5 使用input步骤
  • 8.5.1 input步骤的简单用法
  • 8.5.2 input步骤的复杂用法
  • 8.6 小贴士
  • 8.6.1 获取上游pipeline的信息
  • 8.6.2 设置手动输入步骤超时后,pipeline自动中止
  • 8.7 本章小结
  • 9 凭证管理
  • 9.1 为什么要管理凭证
  • 9.2 凭证是什么
  • 9.3 创建凭证
  • 9.4 常用凭证
  • 9.4.1 Secret text
  • 9.4.2 Username with password
  • 9.4.3 Secret file
  • 9.4.4 SSH Username with private key
  • 9.5 优雅地使用凭证
  • 9.6 使用HashiCorp Vault
  • 9.6.1 HashiCorp Vault介绍
  • 9.6.2 集成HashiCorp Vault
  • 9.7 在Jenkins日志中隐藏敏感信息
  • 9.8 本章小结
  • 10 制品管理
  • 10.1 制品是什么
  • 10.2 制品管理仓库
  • 10.3 过渡到制品库
  • 10.4 管理Java栈制品
  • 10.4.1 使用Maven发布制品到Nexus中
  • 10.4.2 使用Nexus插件发布制品
  • 10.5 使用Nexus管理Docker镜像
  • 10.5.1 Nexus:创建Docker私有仓库
  • 10.5.2 创建Docker私有仓库凭证
  • 10.5.3 构建并发布Docker镜像
  • 10.5.4 小贴士
  • 10.6 管理原始制品
  • 10.6.1 创建raw仓库
  • 10.6.2 上传制品,获取制品
  • 10.7 从其他pipeline中拷贝制品
  • 10.8 版本号管理
  • 10.8.1 语义化版本
  • 10.8.2 版本号的作用
  • 10.8.3 方便生成版本号的Version Number插件
  • 10.9 小贴士
  • 10.9.1 Nexus匿名用户权限问题
  • 10.9.2 制品库的容量要大
  • 10.10 本章小结
  • 11 可视化构建及视图
  • 11.1 Green Balls插件
  • 11.2 Build Monitor View插件
  • 11.3 使用视图
  • 11.3.1 使用项目的维度建立视图
  • 11.3.2 设置默认视图
  • 11.4 本章小结
  • 12 自动化部署
  • 12.1 关于部署有什么好说的
  • 12.1.1 部署不等于发布
  • 12.1.2 什么是自动化部署
  • 12.1.3 自动化运维工具解决的问题
  • 12.2 Jenkins集成Ansible实现自动化部署
  • 12.2.1 Ansible介绍
  • 12.2.2 Jenkins与Ansible集成
  • 12.2.3 Ansible插件详解
  • 12.3 手动部署比自动化部署更可靠吗
  • 12.4 如何开始自动化部署
  • 12.5 小贴士
  • 12.6 本章小结
  • 13 通知
  • 13.1 邮件通知
  • 13.1.1 使用Jenkins内置邮件通知功能
  • 13.1.2 使用Email Extension插件发送通知
  • 13.2 钉钉通知
  • 13.3 HTTP请求通知
  • 13.4 本章小结
  • 14 分布式构建与并行构建
  • 14.1 Jenkins架构
  • 14.2 增加agent
  • 14.2.1 对agent打标签
  • 14.2.2 通过JNLP协议增加agent
  • 14.2.3 通过JNLP协议增加Windows agent
  • 14.2.4 通过Swarm插件增加agent
  • 14.2.5 agent部分详解
  • 14.2.6 小结
  • 14.3 将构建任务交给Docker
  • 14.3.1 在Jenkins agent上安装Docker
  • 14.3.2 使用Docker
  • 14.3.3 配置Docker私有仓库
  • 14.4 并行构建
  • 14.4.1 在不同的分支上应用并行构建
  • 14.4.2 并行步骤
  • 14.4.3 并行阶段与并行步骤之间的区别
  • 14.5 本章小结
  • 15 扩展pipeline
  • 15.1 为什么要扩展pipeline
  • 15.2 在pipeline中定义函数
  • 15.3 使用共享库扩展
  • 15.3.1 创建共享库
  • 15.3.2 使用共享库
  • 15.3.3@Library的更多用法
  • 15.3.4 共享库结构详细介绍
  • 15.3.5 使用共享库实现pipeline模板
  • 15.4 通过Jenkins插件实现pipeline步骤
  • 15.4.1 生成Jenkins插件代码骨架
  • 15.4.2 启动Jenkins测试:mvn hpi:run
  • 15.4.3 在Jenkinsfile中使用 greet步骤
  • 15.4.4 全局配置插件
  • 15.5 本章小结
  • 16 Jenkins运维
  • 16.1 认证管理
  • 16.1.1 使用Jenkins自带的用户数据库
  • 16.1.2 使用LDAP认证
  • 16.2 授权管理
  • 16.2.1 使用Role-based Authorization Strategy插件授权
  • 16.2.2 管理角色
  • 16.2.3 权限大全
  • 16.2.4 角色分配
  • 16.2.5 小结
  • 16.3 Jenkins监控
  • 16.3.1 使用Monitoring插件监控
  • 16.3.2 使用Prometheus监控
  • 16.4 Jenkins备份
  • 16.4.1 JENKINS_HOME介绍
  • 16.4.2 使用Periodic Backup插件进行备份
  • 16.5 汉化
  • 16.6 Jenkins配置即代码
  • 16.7 使用init.groovy配置Jenkins
  • 16.8 本章小结
  • 17 自动化运维经验
  • 17.1 小团队自动化运维实践经验
  • 17.1.1 先做监控和告警
  • 17.1.2 一开始就应该做配置版本化
  • 17.1.3 Jenkins化:将打包工作交给Jenkins
  • 17.1.4 将制品交给Nexus管理
  • 17.1.5 让Jenkins帮助我们执行Ansible
  • 17.1.6 小结
  • 17.2 ChatOps实践
  • 17.2.1 Rocket.Chat
  • 17.2.2 Hubot
  • 17.2.3 Hubot与Jenkins集成
  • 17.2.4 Jenkins推送消息到Rocket.Chat
  • 17.3 本章小结
  • 18 如何设计pipeline
  • 18.1 设计pipeline的步骤
  • 18.2 以X网站为例,设计pipeline
  • 18.3 X网站pipeline详解
  • 18.3.1 尽可能将所有的具体操作都隐藏到共享库中
  • 18.3.2 只生成一次制品
  • 18.3.3 对不同环境采用同一种部署方式
  • 18.3.4 配置版本化
  • 18.3.5 系统集成测试
  • 18.3.6 如何实现指定版本部署
  • 18.3.7 主干开发,分支发布
  • 18.4 本章小结
  • 后记
展开全部

评分及书评

评分不足
2个评分

出版方

电子工业出版社

电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。