首页 > 其他分享 >水杉在极狐GitLab 的 DevOps 实践

水杉在极狐GitLab 的 DevOps 实践

时间:2024-02-06 19:55:48浏览次数:35  
标签:代码 GitLab DevOps 极狐 水杉 流水线 我们

作者:华东师范大学数据学院 陈烨

如果看图文不过瘾,可以观看视频版

背景

项目

我是来自于华东师范大学数据学院的,我们学院一直非常重视计算机和教育之间相结合,水杉就是我们诸多探索的其中之一。跟很多软件的落地一样,我们水杉也是经历过了从几个人的小规模开发到目前的几十个人开发团队这样一个过程。虽然学生们基本都没有相关工程经验和工作经历,但是我们适应的很快。互相之间非常融洽,像什么老生常谈的开发和运维上的文化矛盾,我们也是不会出现的。人数上不会很多,符合中小团队的规模。所有小规模团队所经历的一些痛点我们都碰到,比如需求的管理、开发协作、应用的部署等等。

在项目开发伊始,我们就意识到了云原生的重要性。

云原生

可以说水杉一路走来,都努力朝着云原生的这四个方向去贴近,在项目实现过程中,就可以发现这四个要素之间是相辅相成的

  • 现在的水杉已经将应用容器化,部署到集群或者单机服务器上
  • 这就需要将模块和模块之间充分解耦,形成微服务的模式
  • 随着服务的增多,手动管理就变得困难,这就需要持续交付的自动化流程
  • 同样这也需要DevOps的有效管理。

GitLab

那么尤其在这个 DevOps 之路的选择上,我们是非常慎重的,我们做了很多的调研,最后才选择了GitLab ,因为它不仅是一个代码托管仓库,更是DevOps集成度非常高的一个统一管理平台,我们可以不必为了实现DevOps而去寻找很多不同的工具。那么非常非常荣幸,在近期,极狐跟我们学院达成了一些战略合作,得以使我们从这个 GitLab 的自托管版本能够迁移到他们的SaaS版本,这让我们节省了很多维护的精力。

实践

项目管理

这里我就举个简单的例子,项目经理说这两周要美化一下前端,然后前后端一起新增一个功能。假设没有合理的计划管理,大家都只管提交代码,那么从项目经理的角度来看,他完全不清楚开发的进度如何。他可能需要一个个打开代码仓库去看代码提交记录,或者需要拿个共享文档画张进度表。那么我们就需要一种高效的计划管理。

接下来就是我们在GitLab上管理这种杂乱信息的方式。

  • 里程碑:代表一段时间内需要达成的小目标,和敏捷计划的Sprint相对应,可以收集议题和合并请求,可以为史诗定义细节。
  • 史诗:往往计划了类似整个网站、整个模块这种较为宏大的目标,时间跨度较长,任务复杂度也很高,但可以慢慢细化。
  • 议题:定义下一步需要完成的小任务,类似修一个bug的主题。可以和提交、合并请求关联以补充其意义。
  • 合并请求:在子仓库/子分支合并代码到主仓库时产生,可以详细地描述此次合并的相关工作以供评审。

我们以前可能会使用某些共享文档做需求的记录,进度的追踪,现在我们可以用GitLab做统一的管理,这是所有事情的唯一入口。

  • 进度可跟踪。因为议题的打开和关闭分别象征着任务的启动和结束
  • 团队管理上也方便了,不同的任务交给不同的角色去做。
  • 过程记录充分,每个节点都可以伴随大量的说明信息去阐述具体的工作,我们实际就会利用这些记录在以后去统计学生的工作量,需求的管理等等,从而生成报表

持续交付

CI/CD工具

我们最终选择在云服务器部署GitLab的原生服务——GitLab Runner实现流水线的运行。

为什么不用强大的Jenkins呢,这个我们也有尝试过,但是对我们学生来讲,他的学习成本和维护成本还是比较大的,需要有人专门去做这件事。

迁移之后我们也同时拥有了一定配额的极狐Group Runner,不过我们还是沿袭了原来的本地化Runner习惯。

GitLab的流水线足够应付我们的项目,学习和维护成本也相对低一点,自然还是选择了原生支持的Runner了。

GitLab 流水线模板

这里截取Test阶段的执行例做一下示范。

在Test阶段我们会并行的发起多个测试任务,他们之间各自没有联系,所以可以并行。我们会对代码、容器、依赖的安全性和单元功能做一系列测试。其中呢,在做代码的相关安全扫描的时候,我们都使用的GitLab所提供的流水线模板,相当于我们只需要提供待扫描的代码,它都会自动调用开源分析工具去测试,并且自动生成安全漏洞报告,集成在流水线的结果页面。

总结

无论是水杉、GitLab还是DevOps,我们都凝聚了大量的心血在上面。尤其是从理论到落地的过程,即使有了对应的工具,你也不能保证它安装之后就万无一失,不能保证今后项目成长起来就没有坑了,你一定是会花费工具的学习成本和维护成本的。目前看下来Gitlab对DevOps的支持很不错,在它上面所花费的心血没有白费,现在的效果还是非常好的。

实际上除了技术上的实现以外,DevOps也不能完全脱离人的范畴。就好比你辛辛苦苦设计了一整套流程,但还是无人遵守,那不就白费功夫,所以我们在实现流程细节的同时也在开发者之间传播着一种DevOps的理念和规则。比如开发者要自觉遵守统一的代码规范,合并请求要绑定issue,对函数功能或者数据库的表有改动时就要对文档进行改动。这也是工程上比较重要的一点。

标签:代码,GitLab,DevOps,极狐,水杉,流水线,我们
From: https://www.cnblogs.com/jihugitlab/p/18010238

相关文章

  • 快速上手极狐GitLab设计管理功能
    什么是设计管理功能设计管理是极狐GitLab议题功能内的一个模块,在这里设计师可以上传议题相关的设计资产,包括线框图、原型图等。与议题相关的研发、产品等职能的同事可以在议题内对设计进行浏览及协作,可以通过这种方式将设计也提供了单一可信源(SSOT)上的协作设计方法。您可以......
  • GitLab--安装部署
    配置信息系统:centos7.8gitlab版本:12.8.8 1 下载gitlabwgethttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.8.8-ce.0.el7.x86_64.rpmyum-yinstallgitlab-ce-12.8.8-ce.0.el7.x86_64.rpm 2 修改配置文件(修改前先备份)[root@localhost~]#cp/etc......
  • 极狐 GitLab 和 Xcode Cloud 集成,实现 iOS 的自动打包
    一直以来,iOS/macOS开发者面临一个难题:大部分云厂商只提供Linux/Windows服务器,而不提供Mac,如果想实现「持续集成自动打包」就需要绑定自己的Mac作为构建机。如果用个人Mac,一旦关机,小组同事就无法构建;如果再买一台公共Mac,又造成浪费。2022年6月,Apple在WWDC(全球开发者......
  • gitlab 502问题解决
    问题现象: Whoops,GitLabistakingtoomuchtimetorespond.Tryrefreshingthepage,orgoingbackandattemptingtheactionagain.PleasecontactyourGitLabadministratorifthisproblempersists. 问题定位分析:一、查看系统资源使用情况磁盘满了g......
  • Gitlab Prometheus 磁盘空间占用
    gitlab默认启用Prometheus,数据存储时长是15天,经观察磁盘占用较大(我这边平均每天1G)如果磁盘紧张的情况下可以修改数据保留时长,或直接关闭Prometheus监控,修改配置文件的方法如下:配置文件位置gitlab/config/gitlab.rb1、修改保留天数,下面的配置内容默认全部是注释掉的,可以去......
  • 如何给极狐GitLab 配置 webhook,自动触发 Pipeline?
    本文根据工作中的痛点来举例介绍如何使用极狐GitLab,让你的日常工作更高效。还在只使用极狐GitLab存放代码?那你就OUT啦。赶紧看看这篇文章,让你的日常工作更高效。使用GitlabWebhook触发Pipeline,打通工作消息通知关于A/B同学的问题,我想可以使用Webhook触发Pipe......
  • git~issue在github/gitlab中的使用
    本文档适用于github和gitlabissue介绍GitHub中的issue功能是一种用于跟踪项目中任务、缺陷、功能请求和讨论的工具。通过issue,项目成员可以提出问题、报告bug、请求新功能,进行讨论,并且能够将issue与代码变更(比如pullrequest)关联起来,以便更好地进行协作和项目管理。......
  • 极狐GitLab在线发布(数据库)方法论
    前言其他公司——邮件“这周五凌晨6点公司产品发布,请相关的产品、设计、测试、运维、DBA、后端、前端、客服准时就位,6点开始我们准时挂维护页面。“产品公告栏“各位客户,我们产品定于xxxx(本周五)版本发布,维护xx小时,由此带来的不便请谅解,特此通告!“极狐GitLabSRE:昨天发布了。......
  • gitlab备份
    1)Gitlab的备份目录路径设置123456789101112[root@code-server~]#vim/etc/gitlab/gitlab.rbgitlab_rails['manage_backup_path']= truegitlab_rails['backup_path']= "/data/gitlab/backups"    //gitlab备份目录gitlab_rail......
  • 采用DevOps的7个主要障碍,你一定不知道!
    尽管DevOps已经相对成熟,DevOps哲学仍然在回避甚至是最著名和最有资源的组织。一份令人震惊的Gartner报告显示,75%的DevOps项目未能实现其目标。为什么DevOps的失败率如此之高?在实施DevOps理念时,组织面临的共同挑战是什么?如何克服这些挑战?本篇文章将解决这些问题,并为企业提供可复制......