GitLab CI/CD 新书发布,助企业降本增效

在这里插入图片描述

前言

大家好,我是CSDN的拿我格子衫来, 昨天我的第一本书《GitLab CI/CD 从入门到实战》上架啦,这是业内第一本详细讲解GitLab CI/CD的书籍。
历经无数个日夜,最终开花结果。感触良多,今天就借这篇文章来谈一谈这本书的创作。

写书前

在正式写书前,我已经写了很多有关GitLab CI/CD的文章,有的只是简单的记录,有些是自己的思考,当时也没想着以后会写书,但无疑,这些前期积累的资料都给了我很大的支撑,是我最初始的素材。我写的最早的GitLab CI/CD文章可以追溯到2020年7月份,那是我刚进入滴普科技的第二个月,新的工作总是充满了挑战性,在两个月内我也熟练使用了Docker,接触了一些开源的K8s相关的项目,这些知识都让我以后使用某个平台变得轻而易举。一行docker命令就将项目部署起来。

在2021年的某一天,在CSDN的博客专家群里,热心分享的博主们开始讨论了写书这件事。有些博主已经写了三本书,而且还在写书,有些新作者也开始尝试。这给我的心里埋下了一颗种子。这颗种子在上班路上发芽,在下班路上发芽,在我写博文时成长,最终我不得不深刻思考写书这件事。

就像我写了几年的博客,得到了社区的博客专家称号,前端领域优秀作者称号,积累到一定的程度就会有一个里程碑,不是开始,也不是结束,只是一个里程碑。而成书也是对某一个细分领域的深刻,系统学习,总结的一个里程碑。技术人偶尔要站起来跳一跳,看看自己到底能达什么样的高度。别人的认可是一部分因素,更重要的自己想写书,写书的价值是毋庸置疑的。
衡量一个人的价值,不是他拥有什么,而是看他给后来者留下了什么。

书,我一定要写。

当我在博主群里询问是否有编辑推荐时,邹老师向我推荐了人邮的编辑。这里再次感谢。

当时可供我选择的选题有三个Node-REDThingsBoardGitLab CI/CD
这三个选题在2021年我都有一定的研究和专栏(感兴趣的同学可以看看我的相关专栏),最重要的很认同他们都是非常好的优秀项目,相信在不久的将来会有更多人的需要学习,了解,研究它们。其实现在这三个开源项目也有很多的社区和社群。

在Node-RED被否定后,我硬着头皮申请了GitLab CI/CD这个选题。

为什么说是硬着头皮?因为严格来说GitLab CI/CD 属于DevOps领域,在写书的时候必然需要一些相关概念,理论基础。除了这些,最大的拦路虎是 作为一个前端,我的shell脚本技能只局限于 ls -l, mkdirtouchvim,这几个简单命令🙃。为了解决这个短板,我向编辑申(bai)请(piao)了四本书,其中就有《鸟哥的Linux 私房菜 第四版》,《持续交付 2.0》。刚开始会怕这些未知的问题。但后来想通了,兵来将挡,遇水搭桥,而且当时坐我旁边的就是一个运维大拿。我怕谁,谁阻挡我,我就解决谁。带着豪气干云的决心,开始了我的写作之旅。在真正写的时候,针对shell脚本这一块,是我当初夸大了问题的复杂度,一本书里三行的shell脚本都不超过五处。所以如果你想在书里学习shell脚本,那很大程度会失望😂。刚入门的小白也不要担心,书里没什么很深奥的代码片段。

有关之前的教程可以查看这篇文章我是如何把一套GitLab CI/CD课程做到全网第一的?

写书中

写书是很枯燥的,而且不像我写博客那样随心所意。

很多个周末我都是待在村口的肯德基,边听音乐边写作。这篇文章就是坐在这个肯德基里写的,还有免费空调。有时为了心无旁骛地写作,也会去公司写,坐一个小时的公交。
写作的时候,女儿都是母亲带着,那段时间很辛苦,自己还要备考。

写作的过程中我也收到了很多帮助,让我印象最深的是,我因为手头没有集群去实践k8s部署应用,一个网友知道后,就直接把他的集群配置文件交给我啦。我也在他的帮助下搞通了整个流程,写下了这篇文章《使用GitLab CI/CD部署应用到Kubernetes集群的方案》
在学习的过程中,受助于人,是非常幸运的。我们应该感恩。再次感谢那位朋友。

写书的时候,在啃官方文档上我是下了苦功夫的,GitLab CI/CD有一页文档,是.gitlab-ci.yml 关键词解析。点击此处可以查看
这个页面用A4纸的打印有69页,69页69页。 我就在上班路上啃,下班路上咀嚼。
休息的片刻翻译。

官方文档我看了不止3篇,有的地方看了5篇不止。发现有不对的地方,也给官方提了3个PR。

有很多人在学习技能,看文档时,不止如何下手。
我告诉你,从第一页开始,每一篇文档都要看,完整地看,不留死角地看。
不仅要看,还要看3遍,5遍,10遍。构建一个完整的知识体系。

我的其他几个专栏也都是这样成型的。如果你要练书法,就要先从点,横,竖这些最最基本的做起。

书的内容

在写书前我花了很长时间,把那些东西放进去,那些东西不放进去。知识整理,组织规划一直是我的强项,所以我对书的目录安排还算比较满意。
本书的内容主要分为两大部分,
一部分是GitLab CI/CD的基础知识,包括CI/CD的含义,什么是流水线,GitLab CI/CD的组成部分,GitLab Runner,.gitalb.yml文件。最重要的是34个关键词的使用。

第二部分是项目实战,如果上面的基础知识是点的,实战篇就是将点连成线,聚焦具体的应用项目,解决连续,复杂的业务场景,能够落地实施,提高研发效能。
一共有三个项目实战,作为一名前端,我把前端项目的CI/CD放在第一位,应该不会有人有意见吧。在书中详细描写了三种前端Vue项目的部署方式,分别是使用Docker部署应用,使用阿里云OSS部署,在远程机器上部署。

第二项目是 前后端分离的项目,后端为Java语言,前端是React框架,讲解了在前后的分离的应用架构下,如何使用父子流水线,跨项目流水线来合理设计CI/CD流程。并延伸了一些微服务架构的应用部署。

第三项目是 Python应用,Flask Web 应用框架,部署到Kubernetes集群中。

每一个实战项目都是不同的架构,不同的编程语言,不同的部署方式。这样能够覆盖更多的业务场景,这也是运维人员经常遇到的场景。

除了覆盖到各种业务场景,书中也对探讨了另一个话题——速度,流水线的运行速度,部署速度一直都是软件团队关注的重要指标,也非常影响开发体验。所以在书里也加大力度探讨了如何加快流水线运行速度。每一个实战项目后,都有针对该项目的优化措施,最佳实践。

虽然我尽力覆盖更多的业务场景,但无奈场景是无穷无尽的。使用GitLab CI/CD 解决复杂的业务场景我们只能从基础知识下手,它的能力都是有基础知识支撑起来的。正所谓 万变不离其宗,只有打好基础,我们才能战胜更加复杂的困难(这好像是我初中老师经常说的)。

GitLab CI/CD的流水线都写在一个yml文件中,使它能够保持优美的格式。除了30多个关键词用来覆盖多数业务场景,最让人叹服的是很多时候你可以使用预设变量非常简单地实现不可思议的复杂功能。
你可以在流水线中实现,如果a开发人员的提交信息里包含[pass], 就不运行某个检查作业,也可实现b开发人员的提交必须经过Approval才能合并,这些判断都只是一行表达式,并不需要你写shell脚本去实现,而且会有版本控制,各个分支互不影响。

在书中我根据自己的学习经历给出了合适学习路线,先了解概念,搭建环境,学习7,8个常用的关键词,然后实践。学习更多关键词,优化流水线。

书的内容介绍,目录都可以在商品详情页可以看到,这里就不做太多的介绍啦。

后记

在我分享GitLab CI/CD时,有很多专业的运维朋友向我请教问题,和他们的交流中,让我始终保持着强烈的求知欲和探索欲。一个前端,不去卷前端,便要来混运维,我只想告诉大家,没有人可以给自己打标签,不要把自己圈养,打破固有的知识牢笼。之前有个人告诉我前端不该学GitLab CI/CD,当我用它把公司的前端开发环境部署流程搞成模范时,他又想让我学习Jenkins😅。学习GitLab CI/CD就像程序员业余时间炒股票,弹钢琴,健身,刷短视频,玩塞尔达一样,不要当作养家户口的工具,当作自己的兴趣,而兴趣产生价值就是开花结果。
因为相信所以坚持。

如果你们公司正在使用GitLab 管理代码,请务必使用GitLab CI/CD来做持续集成,持续部署。它会帮助你的团队提高DevOps能力,降本增效。

如果你正在寻找一个自动部署工具,可以试试GitLab CI/CD,诸多特性会让你爱不释手。

这里大胆预测一下,不出两年,
第二本GitLab CI/CD的书籍就会出版

书的出版不是终点,也不是起点,我一直在路上,和无数技术者同行。

推荐阅读

GitLab CI/CD 教程
GitLab CI/CD .gitlab-ci.yml关键词
GitLab CI/CD:开发和运维管理的效率神器
.gitlab-ci.yml keyword reference

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/10029.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java基础(十五):异常处理

Java基础系列文章 Java基础(一):语言概述 Java基础(二):原码、反码、补码及进制之间的运算 Java基础(三):数据类型与进制 Java基础(四):逻辑运算符和位运算符 Java基础(五):流程控制语句 Java基础(六)&#xff1…

Linux内核设备驱动设备树概念与使用

一、设备树概念以及作用 1.1设备树概念 设备树(Device Tree),将这个词分开就是“设备”和“树”,描述设备树的文件叫做 DTS(DeviceTree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比…

python入门:cl.exe‘ failed with exit status 2错误通用解决方案

文章目录 错误一错误二pypi.org独立安装正确安装错误一 error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/ 这个错误在windows系统上安装python工…

Spring《三》DI依赖注入

🍎道阻且长,行则将至。🍓 上一篇:Spring《二》bean的实例化与生命周期 下一篇:敬请期待 目录一、setter注入🍉1.注入引用数据类型2.注入简单数据类型二、构造器注入🍊1.注入引用数据类型2.简单数…

Spring 源码分析(二)——GenericBeanDefinition 分析

BeanDefinition 中存储着 Bean 的定义信息,它具有属性值、构造函数参数值以及具体实现 Bean 提供的进一步信息,在学习 Spring 的 Bean 初始化流程之前,还是非常有必要先了解一下 BeanDefinition。 一、注册 Bean 示例 首先,本文…

SpringCloud微服务技术栈之网关服务Gateway

文章目录SpringCloud微服务技术栈之网关服务Gateway前言网关服务Gateway的基本概念Gateway的体系结构Gateway的主要功能网关服务Gateway的架构设计架构设计方案示例代码网关服务Gateway的实践操作1. 创建工程2. 配置路由规则3. 实现过滤器4. 集成服务注册中心5. 启动网关服务器…

2020年11月信息系统项目管理师真题(综合+案例)

请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! 1、( )使系统的描述及信息模型的表示与客观实体相对应,符合人们的思维习惯,有利于系统开发过程中用户与开发人员的…

Redhat6.7离线安装rabbitmq

一、下载资源文件(.rpm文件) 链接: https://pan.baidu.com/s/1j2Ze_Jjm0oMrP-r95PPCtA?pwdv3is 提取码: v3is 复制这段内容后打开百度网盘手机App,操作更方便哦 创建rabbit文件夹Mkdir rabbit 三、通过ftp上传文件 四、安装erlang环境 …

强大到让人无法想象的ChatGPT-5即将发布,上千名人士却紧急叫停

目录 【ChatGPT 5简介】 【ChatGPT 5的潜在应用】 【ChatGPT 5的潜在危险】 ChatGPT4还没有好好体验,比GPT4强大1000倍的ChatGPT5又即将发布!届时将彻底改变人工智能领域,并改变我们现有的世界 【ChatGPT 5简介】 OpenAI计划在2023年12月发…

面试了上百位性能测试后,我发现了一个令人不安的事实...

在企业中负责技术招聘的同学,肯定都有一个苦恼,那就是招一个合适的测试太难了!若要问起招哪种类型的测试最难时,相信很多人都会说出“性能测试”这个答案。 每当发布一个性能测试岗位,不一会就能收到上百份简历&#…

kafka-4 生产者和消费者

kafka的生产者和消费者四、 生产者4.1 分区分配策略4.2 副本和消息消费4.2.1 副本(AR、ISR、OSR)4.2.2 HW与LEO4.2.3 ISR 集合和 HW、LEO的关系五、消费者5.1 分区分配策略5.2 消费者offset的存储四、 生产者 4.1 分区分配策略 (1&#xff…

Webpack 实践:配置、性能优化和最佳实践

总结 通过以下的配置示例和性能优化策略,我们希望能帮助你在 Webpack 实践中获得更好的开发体验和项目性能。这里仅仅是冰山一角,Webpack 的功能还有很多等待你去探索。 在本篇文章中,我们将深入探讨 Webpack 的实践,包括配置示例…

Python 小型项目大全 71~75

七十一、声音模拟 原文:http://inventwithpython.com/bigbookpython/project71.html 类似于西蒙电子玩具,这款识记游戏使用第三方playsound模块,播放四种不同的声音,分别对应键盘上的A、S、D、F键。当你成功地重复游戏给你的图案时…

【SSL】ssl证书简介、ssl证书生成工具与ssl证书生成步骤

ssl证书简介、ssl证书生成工具与ssl证书生成步骤一、ssl证书是什么?二、ssl证书生成工具有哪些?2.1、工具一:CFSSL2.2、工具二:OpenSSL2.3、工具三:XCA三、ssl证书有什么用?四、ssl证书生成步骤4.1 步骤1&a…

6基于二阶锥规划的主动配电网最优潮流求解

matlab代码:基于二阶锥规划的主动配电网最优潮流求解 参考文献:主动配电网多源协同运行优化研究_乔珊 摘要:最优潮流研究在配 电网规划运行 中不可或缺 , 且在大量分布式能源接入 的主动配 电网环境下尤 为重要 。传统的启发式算…

【安全防御】防火墙(二)

目录 1、防火墙如何处理双通道协议 2、防火墙如何处理nat 3、防火墙支持哪些NAT,主要应用的场景是什么? 4、当内网PC通过公网域名解析访问内网服务器的时候,会存在什么问题,如何解决?请详细说明 5.防火墙使用VRRP…

2023-04-10 网络流和最大流问题

网络流和最大流问题 1 网络流和最大流问题阐述 网络流基本概念 网络流图中,从源点出发,在满足每条边容量限制的条件下,汇点t最多能接收多少流量 s:sourcet:target 网络流需要满足的限制 容量限制平衡限制:除了源点s和汇点t&a…

第三章 spring IOC与Bean环境搭建与应用

1、手动导入Lib包搭建环境 1.1、下载Apache Common Logging API https://commons.apache.org/proper/commons-logging/download_logging.cgi 1.2、下载spring https://repo.spring.io/ui/native/release/org/springframework/spring/5.3.13/ 名称作用docs包含 Spring 的 …

李宏毅2021春季机器学习课程视频笔记9-再谈宝可梦分类器

宝可梦与数码宝贝很类似。 明显数码宝贝的线条更加复杂,宝可梦更简单,可以从这个角度出发。 利用一些边缘检测工具(canny),e用来计算线条的复杂程…

CSDN,感谢遇见【我的一周年创作纪念日】

机缘 第一次遇见CSDN已经是7年前的事了,那时的我还是一名初二的学生,由于沉迷于玩具战争这款游戏(很遗憾这款游戏已经停服),里面有许多大佬利用各种手段去开挂,所以我意外的接触到了浏览器抓包等计算机技术…
最新文章