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

news2025/2/25 23:30:58

在这里插入图片描述

前言

大家好,我是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.coloradmin.cn/o/427504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

贯穿设计模式第一话--单一职责原则

🥳🥳🥳 茫茫人海千千万万,感谢这一刻你看到了我的文章,感谢观赏,大家好呀,我是最爱吃鱼罐头,大家可以叫鱼罐头呦~🥳🥳🥳 从今天开始,将…

基于51单片机的智能婴儿看护床设计

需要源码及原理图文件请私信!!!! 基于51单片机的智能婴儿看护床设计1、引言2、功能设计系统结构框图3、系统硬件设计3.1声音电路的设计3.2语音播报电路的设计3.3独立按键电路的设计3.4模拟摇床(步进电机驱动电路&#…

Springboot项目快速实现过滤器功能

前言很多时候,当你以为掌握了事实真相的时间,如果你能再深入一点,你可能会发现另外一些真相。比如面向切面编程的最佳编程实践是AOP,AOP的主要作用就是可以定义切入点,并在切入点纵向织入一些额外的统一操作&#xff0…

尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】

视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】尚硅谷大数据技术Spark教程-笔记02【SparkCore(核心编程、案例实操)】尚硅谷大数据技术Spark教程-笔记03【SparkSQL…

Scala之面向对象(2)

目录 单例对象(伴生对象): 创建对象常用的两种方法: (1)使用构造器构造(new) (2)使用静态方法 伴生对象的定义: apply方法: app…

图像分割技术及经典实例分割网络Mask R-CNN(含基于Keras Python源码定义)

图像分割技术及经典实例分割网络Mask R-CNN(含Python源码定义) 文章目录图像分割技术及经典实例分割网络Mask R-CNN(含Python源码定义)1. 图像分割技术概述2. FCN与语义分割2.1 FCN简介2.2 反卷积2.2 FCN与语义分割的关系3. Mask …

Midjourney以图生图的详细教程(含6种案例介绍)

🏆 文章目标:学习并介绍Midjourney以图生图的详细教程 🍀 Midjourney以图生图的详细教程 ✅ 创作者:熊猫Jay 🎉 个人主页:Jay的个人主页 🍁 展望:若本篇讲解内容帮助到您&#xff0c…

SQL Server 单表数据查询

提示: 本篇文章详细介绍怎样向SQLServer中导入表格数据,导入之后根据不同的查询条件完成查询任务. 文章目录前言一、向SQL Server中导入数据二、例题1.查询所有学生的全部信息2.查询学生的学号和姓名3.查询所有学生的姓名和出生年4. 查询所有学生的姓名和出生年&…

【关于Linux中----生产消费模型】

文章目录一、生产消费模型1.1概念的引入1.2 321原则二、条件变量2.1概念的引入2.2理解条件变量2.3条件变量的使用三、基于BlockingQueue的生产者消费者模型3.1BlockingQueue的介绍3.2C queue模拟阻塞队列的生产消费模型3.3对生产消费任务的模拟封装四、遗留问题一、生产消费模型…

基于YOLOv5的水下海洋目标检测

摘要:水下海洋目标检测技术具有广泛的应用前景,可以用于海洋环境监测、海洋资源开发、海洋生物学研究等领域。本文提出了一种基于 YOLOv5 的水下海洋目标检测方法,使用数据增强方法进行了大量实验,并与其他方法进行了对比&#xf…

(SQL学习随笔3)SQL语法——SELECT语句

导航基本认识FROM关键字LIMIT与OFFSETORDER BYWHERE条件查询单值比较多条件组合范围筛选空值匹配LIKE通配条件分组运算符和函数数据变换分组运算表连接内连接左(右)外连接全外连接外键约束窗口函数UNION:表上下拼接子查询条件判断PostgreSQLMySQL基本认识 SELECT t…

【论文阅读】BiSeNet V2用于实时语义分割的双边网络

前言BiSeNet V2延续了v1版本的双边结构,分别处理空间细节信息、高层语义信息。同时设计更简洁高效的结构,进行特征提取,实现高精度和高速度。在训练模型时,使用了增强训练策略 ,添加多个辅助训练分支来促进不同浅层网络…

Spring-aop面向切面

1、理解必要的专业术语 先看看上面图,这是我的个人理解。(画的丑,主打真实) 1)Advice,通知/增强:类方法中提出来的共性功能(大白话就是提出来的重复代码) 2)Pointcut,切入点/切点&#…

【微服务】微服务架构下你不得不知的3种部署策略

文章目录前言滚动部署蓝绿部署金丝雀部署总结前言 不知道大家有了解过你们公司的软件产品是如何部署的么?采用的什么部署策略?其实在软件开发生命周期中,部署是非常关键的一环,你需要考虑多方面的因素,如何保证你部署…

【推荐算法】CTR中embedding层的学习和训练

note 连续特征处理:facebook DLRM模型,对连续值的处理方式是把所有的连续值输入到一个神经网络,然后通过神经网络把它压缩到一个embedding维度大小的一个向量上,然后将Embedding和其他离散特征Embedding Concat起来,再…

springboot-分页功能

1.分页功能的作用 分页功能作为各类网站和系统不可或缺的部分(例如百度搜索结果的分页等) ,当一个页面数据量大的时候分页作用就体现出来的,其作用有以下5个。 (1)减少系统资源的消耗 (2&#…

redis设计与实现读书笔记

这里主要记录一下在阅读redis设计与实现中碰到的一些没有记录过的知识。 引用计数技术 Redis的对象系统实现了基于引用计数技术的内存回收机制,当程序不再使用某个对象的时候,这个对象所占用的内存就会被自动释放;另外,Redis还通过引用计数…

低调且强大--iVX低代码平台

iVX目录前言一、低代码那么多 为什么选择iVX?二、“拼”出来的低代码平台,真的好用吗?三、iVX与其他低代码有啥可比性?前言 首先我们应该明白自动编程突破可能是:领域内Mini LLM 现在的思路都是搞LLM,几乎像…

通俗举例讲解动态链接、静态链接

参考动态链接 - 知乎 加上我自己的理解,比较好懂,但可能在细节方面有偏差,但总体是一致的 静态链接的背景 静态链接使得不同的程序开发者和部门能够相对独立的开发和测试自己的程序模块,从某种意义上来讲大大促进了程序开发的效率&#xf…

NPC 也有了生命?当 ChatGPT 注入游戏你能想象吗

🍎道阻且长,行则将至。🍓 目录引言:西部世界元宇宙,还记得吗ChatGPT 的世界?下图就是一个 ChatGPT 小镇: 引言:西部世界 《西部世界》以一个虚构的游戏般的“西部世界”为背景&am…