本书主要介绍GitLab CI/CD的相关内容。首先介绍GitLab CI/CD的基础知识,包括CI/CD的几个基本概念(pipeline、stages、job、GitLab Runner和.gitlab-ci.yml文件);然后介绍GitLab CI/CD的35个关键词、每个关键词的语法及其使用场景,并给出一些示例;最后介绍CI/CD的实践,通过3种不同的项目详细讲解各种部署方式,包括微服务架构项目流水线开发、GitLab CI/CD与Kubernetes的集成,以及如何将项目部署到Kubernetes集群中等。本书还给出了两个附录,分别是GitLab CI/CD中的预设变量和GitLab CI/CD测试题。
本书适用于想要提高研发团队的软件集成、软件交付效率的开发和运维人员。
1.国内少有的系统讲解GitLab CI/CD的图书,从理论到落地,内容丰富实用
2.作者为CSDN认证技术专家,网名"拿我格子衫来",前端领域优质创作者,拥有过硬的技术实力
3.初学者了解GitLab CI/CD的有效工具书,代码可在作者博客和代码仓库检索到,方便学习
庞孟臣 (网名:拿我格子衫来)滴普科技高级前端开发人员,主要从事一线软件开发、CI/CD 工作流搭建等工作。工作之余,他热衷技术分享,是CSDN 前端领域优秀创作者,先后出品了“Monaco Editor 教程”“GitLab CI/CD 教程”“Node-RED 教程”等专栏。已申请技术专利 6 项。
第 1章 认识GitLab CI/CD 1
1.1 CI/CD的含义 2
1.2 GitLab CI/CD简介 2
1.3 GitLab CI/CD的几个基本概念 3
1.4 小结 6
第 2章 CI/CD环境GitLab Runner 7
2.1 介绍 7
2.2 安装GitLab Runner 8
2.2.1 使用Docker安装GitLab Runner 8
2.2.2 在Linux系统上安装GitLab Runner 9
2.3 注册runner 9
2.4 不同执行器的特点 12
2.5 配置runner 14
2.6 runner的工作流程 17
2.7 小结 18
第3章 流水线内容.gitlab-ci.yml 19
3.1 存放位置 19
3.2 新建与编辑 20
3.3 流水线的结构 23
3.4 简单流水线示例 24
3.5 关键词 26
3.6 小结 27
第4章 初阶关键词 28
4.1 stages 29
4.2 stage 29
4.3 script 31
4.4 cache 32
4.5 image 35
4.6 tags 35
4.7 variables 37
4.7.1 在.gitlab-ci.yml文件中定义变量 37
4.7.2 在CI/CD设置中定义变量 38
4.7.3 预设变量 40
4.8 when 41
4.9 artifacts 42
4.10 before_script 44
4.11 after_script 44
4.12 only与except 44
4.12.1 only:refs/except:refs 45
4.12.2 only:variables/except:variables 46
4.12.3 only:changes/except:changes 47
4.12.4 only:kubernetes/except:kubernetes 47
4.13 小结 48
第5章 中阶关键词 49
5.1 coverage 49
5.2 dependencies 50
5.3 allow_failure 51
5.4 extends 52
5.5 default 54
5.6 inherit 55
5.7 interruptible 57
5.8 needs 59
5.9 pages 62
5.10 parallel 63
5.11 retry 65
5.12 timeout 66
5.13 release 66
5.14 小结 67
第6章 高阶关键词 68
6.1 rules 68
6.1.1 rules:if 69
6.1.2 rules:changes 69
6.1.3 rules:exists 70
6.1.4 rules:allow_failure 70
6.1.5 rules:variables 71
6.2 workflow 72
6.3 trigger 73
6.4 include 74
6.4.1 include:local 75
6.4.2 include:file 75
6.4.3 include:remote 76
6.4.4 include:template 77
6.5 resource_group 77
6.6 environment 80
6.6.1 environment:name 81
6.6.2 environment:url 81
6.6.3 environment:on_stop 83
6.6.4 environment:action 85
6.6.5 environment:auto_stop_in 86
6.7 services 86
6.8 secrets 89
6.9 dast_configuration 90
6.10 小结 91
第7章 GitLab CI/CD部署前端项目 92
7.1 准备工作 92
7.2 定义.gitlab-ci.yml的公共配置 94
7.3 安装阶段 94
7.4 测试阶段 96
7.5 编译阶段 99
7.6 部署阶段 100
7.6.1 使用Docker部署 100
7.6.2 使用阿里云的OSS部署 104
7.6.3 远程服务器部署 106
7.7 流水线优化 108
7.7.1 提取公共配置 109
7.7.2 多环境部署 109
7.7.3 自动取消旧流水线 110
7.7.4 部署冻结 112
7.7.5 定时部署 114
7.7.6 在线调试流水线 115
7.8 小结 118
第8章 Java复杂微服务应用的CI/CD方案 119
8.1 复杂应用现状 120
8.2 CI/CD方案 120
8.3 菲兹商城项目 121
8.3.1 Spring Boot后端应用 121
8.3.2 React前端应用 123
8.4 前、后端单独构建的流水线 125
8.5 构建单镜像 129
8.5.1 前端UI流水线 130
8.5.2 后端服务流水线 132
8.6 使用分布式缓存MinIO 134
8.6.1 使用Docker安装MinIO 135
8.6.2 配置GitLab Runner使用MinIO存储缓存 138
8.7 多项目微服务依赖构建单应用 140
8.7.1 项目背景及软件架构 140
8.7.2 多项目同时构建 141
8.7.3 依赖构建 143
8.7.4 自由选择分支tag构建 144
8.7.5 运行流水线 145
8.8 小结 147
第9章 部署Python应用到Kubernetes中 148
9.1 Kubernetes简介 148
9.1.1 命名空间Namespace 149
9.1.2 服务Service 149
9.1.3 工作负载Deployment 150
9.1.4 命令行管理工具kubectl 150
9.2 持续部署方案设计 150
9.3 配置kubectl 151
9.4 Python项目配置 154
9.5 流水线开发 157
9.5.1 构建并推送Docker镜像 157
9.5.2 在流水线中使用kubectl镜像 158
9.6 流水线优化 162
9.6.1 增加钉钉通知 163
9.6.2 外部触发流水线 165
9.6.3 .gitlab-ci.yml权限管控 167
9.6.4 安全部署 168
9.6.5 大项目优化 169
9.7 小结 172
附录1 GitLab CI/CD中的预设变量 173
附录2 GitLab CI/CD测试题 176