Gitlab二三事
2019-07-04 20:46:07 阿炯

本站赞助商链接,请多关照。 官方对数据删除事件的说明
从 12.1 版本开始将不再支持 MySQL
禁止员工使用Windows
正在考虑出售
官宣重组:摒弃 CREDIT,拥抱 “狼性文化”


Gitlab官方对数据删除事件的说明

事件回放:GitLab.com 官方网站发布声明称由于其产品数据库问题导致的网站无法正常访问。据国外媒体报道称 Gitlab 网站疲惫的系统管理员深夜在进行数据库维护时,使用 rm -rf 删了300GB 生产环境数据。等到清醒过来紧急按下ctrl + c,只有4.5GB保留下来。然后恢复备份失败,网站已经宕了10个小时,现在还没恢复。目前可以确认的是 Gitlab 的数据备份是无效的。报告称此次数据丢失并非仓库的数据,而是仓库相关的 issue 以及合并请求操作。GitLab.com 号称有五重备份机制:常规备份(24小时做一次)、自动同步、LVM快照(24小时做一次)、Azure备份(只对 NFS 启用,对数据库无效)、S3备份。这次事故发生时,所有备份全部无效!为了纪念这个事件,已经有人提议,将2月1日定为“世界备份日”。恢复期间 Gitlab 在 Youtube 上直播了整个数据恢复过程。根据官方对整个事情的描述大概可以推断 Gitlab 使用的是故障发生前6个小时的备份数据。因此就算恢复了整个平台,这6个小时时间内的数据还是丢失了,目前官方已经确定了数据丢失的这个问题。

我们(GitLab.com)丢失了 6 小时的数据库数据(问题、合并请求、用户、评论、片段等),Git / wiki 存储库和自托管安装不受影响。丢失生产数据是不可接受的,未来几天内,我们将会发布此次事故发生的原因及一系列措施的落实情况。

更新 18:14 UTC:GitLab.com 重新在线

截至撰写本文时,我们正在从 6 小时前的数据库备份中恢复数据。这意味着在 GitLab.com 再次生效的时候,17:20 UTC和 23:25  UTC 之间数据库丢失的任何数据都将恢复。

Git数据(存储库和维基)和 GitLab的自托管实例不受影响。

以下是本次事件的简要摘要,详细内容请查阅文档。

事件一:

在 2017/01/31 18:00 UTC ,我们检测到垃圾邮件发送者通过创建片段来攻击数据库,使其不稳定。然后,我们开始了解发生了什么问题进行故障排除,以及如何防范。

在2017/01/31 21:00 UTC,问题被升级导致在数据库上的写入锁定,这导致网站出现了一些时间段的宕机。

措施:

根据IP地址阻止了垃圾邮件发送者

删除了使用存储库作为某种形式的CDN 导致 47 000 个IP 使用同一个帐户登录(导致高DB负载)的用户

已移除用户发送垃圾邮件(通过创建代码段)
    
事件二:

在 2017/01/31 22:00 UTC, - 我们被分页,因为 DB 复制滞后太远,导致不能有效地阻止。发生这种情况是因为在辅助数据库没有及时处理写入。

措施:

尝试修复 db2,此时丢失数据约4 GB

db2.cluster 拒绝复制,/var/opt/gitlab/postgresql/data 擦拭以保证复制

db2.cluster 拒绝连接到 db1,max_wal_senders太低。此设置是用来限制数量 WAL (= replication)的客户端

团队成员1调整max_wal_senders 到 32上db1,重启 PostgreSQL 。PostgreSQL 因同时打开信号量太多而拒绝重启。

团队成员1调整 max_connections 8000 到 2000。PostgreSQL 重启成功(尽管8000已经使用了近一年)

db2.cluster 可以链接,但仍然复制失败,只是挂在那里没有执行任何的操作。今晚 23:00左右(当地时间),团队成员1明确提到他要签字,并未想到会突然出现复制问题。

事件三:

在2017年1月31日23:00 左右 —团队成员1认为, pg_basebackup 拒绝执行是因为 PostgreSQL 的数据目录存在(尽管是空的),于是决定删除该目录。经过一两秒钟,他注意到他运行在 db1.cluster.gitlab.com,而不是 db2.cluster.gitlab.com。

在2017年1月31日23:27 时,团队成员1 -终止删除操作,但为时已晚。大约 300 GB 左右的数据只剩下约4.5 GB,我们不得不把 GitLab.com 下线,并在 Twitter 上公布信息。

我们正在执行紧急数据库维护,https://t.co/r11UmmDLDE 将脱机。

GitLab.com 状态(@gitlabstatus)2017年1月31日。

遇到的问题

默认情况下,LVM 快照每 24 小时采取一次。为了数据库的工作负载平衡,团队成员1 在停电前 6小时手动操作过。

定期备份似乎也只能每24小时执行一次,虽然团队成员1目前仍未能找出它们的存储位置。团队成员2表示 ,这些似乎没有奏效,产生的文件大小只有几个字节。

团队成员3:看起来 pg_dump 可能会失败,因为 PostgreSQL 的 9.2 二进制文件正在运行,而不是 9.6 的二进制文件。这是因为 omnibus 只使用 Pg 9.6 ,如果 data / PG_VERSION 设置为 9.6,但在 workers 上这个文件不存在。因此,它默认为 9.2,静默失败。因此没有做出 SQL 转储。Fog gem 可能已清理旧备份。

为Azure 服务器启用 Azure 中的磁盘快照,而不是 DB 服务器。

同步过程在 Webhooks 数据同步到暂存后删除。我们只能从过去24小时的定期备份中提取内容,否则将丢失

复制过程是超级脆弱,容易出错,依赖少数随机 shell 脚本并记录

我们的备份到 S3 显然也不运行:bucket 是空的

换言之,部署的 5 个备份/复制技术中没有一个可靠地运行或设置。我们最终还原了6 小时前的备份。

pg_basebackup 将等待主机启动复制进程,据另一个生产工程师称,这可能需要 10 分钟。这可能导致进程被卡住。使用 “strace” 运行进程没有提供的有用信息。

所以换句话说,在部署的5套备份/复制方法中,没有一套在可靠运行或当初设置正确。此话一出,网上炸开了锅。为了概述所犯的错误,这家初创公司坦率地作了如下详述:

LVM快照在默认情况下每24小时做一次。在故障发生前大概6小时,YP正好手动运行了一次。

常规备份似乎也是每24小时做一次,不过YP还未能查清楚它们存储在何处。据JN声称,这些似乎未奏效,只生成了几个字节大小的文件。

SH:pg_dump似乎失效了,原因是运行的是PostgreSQL 9.2二进制代码,而不是9.6二进制代码。之所以会出现这种情况,是由于如果data/PG_VERSION被设成9.6,omnibus只使用Pg 9.6,但是在worker节点上,该文件并不存在。因而,它在默认情况下运行9.2,悄然失效。因而没有SQL转储出现。Fog gem可能清除掉了早些时候的备份。

已为NFS服务器启用了Azure中的磁盘快照,但是没有为数据库服务器启用Azure中的磁盘快照。

一旦将数据同步到试运行环境,同步过程就消除Web勾子(webhook)。除非我们可以在过去的24小时内从常规备份中获取这些数据,否则它们将丢失殆尽。

复制程序很不可靠,容易出错,依赖几个随机性的外壳脚本,而且缺少完备的说明文档。

我们备份到S3的内容显然也没有奏效:存储桶(bucket)空空如也。


恢复

正在使用临时数据库中的数据库备份来立即恢复。不小心删除了生产数据,可能必须从备份中还原。谷歌文档与现场笔记 https://t.co/EVRbHzYlk8

GitLab.com 状态(@gitlabstatus)2017年2月1日

2017年2月1日00:36 -备份 db1.staging.gitlab.com 数据

2017年2月1日00:55 -在 db1.cluster.gitlab.com 安装 db1.staging.gitlab.com

从分段复制数据 /var/opt/gitlab/postgresql/data/ 到生成 /var/opt/gitlab/postgresql/data/

2017年2月1日01:05 - nfs-share01 服务器 征用临时存储/var/opt/gitlab/db-meltdown

2017年2月1日01:18 - 复制剩余的生成数据,包括pg_xlog,升级为20170131-db-meltodwn-backup.tar.gz

此外,我们要感谢在Twitter 和其他渠道通过#hugops获得的惊人支持。

参考来源:GitLab.com Database Incident
点击这里可以看到德哥对些事件的点评,在酷壳上也有对此事的分析。

或因驱动器故障,FreeDesktop.org GitLab 持续崩溃

2022年6月上旬消息,由于 FreeDesktop.org 的 GitLab 托管服务的持续崩溃,围绕 Mesa、X.Org Server 和数十个其他开源项目的集中式开发一直处于停滞状态。其 GitLab 托管着 Mesa、X.Org、Wayland 和其他开源代码存储库,例如 LibreOffice 和 GStreamer。此外它还为参与这些项目的开发人员托管着个人的开发仓库,并通过 GitLab 合并请求、CI 和协调上游的开发。

大约在 6 月 12 日的中午 12 点开始出现 402 ,继而转向 404 ,且在过去的 12 小时内持续关闭,官方没有公布计划完成修复的具体时间点。据外媒 phoronix 介绍,FreeDesktop.org 服务受到影响是因为为其供电的两个固态驱动器损坏了,但官方尚未公布具体原因。用户可以通过 #freedesktop 的 IRC 频道查看关于该问题的实时讨论和最新情况。FreeDesktop.org 的管理员在过去几个小时内一直在努力尝试恢复集群,但到目前为止无济于事。

Gitlab 从 12.1 版本开始将不再支持 MySQL

Gitlab 官方于2019年7月上旬宣布将从 12.1 版本开始不再支持 MySQL 数据库。早在 2017年7月,Gitlab 就计划将弃用对 MySQL 的支持。而目前这个决定将从 12.1 版本开始。官方列出几个 MySQL 不能满足 Gitlab 要求的地方:
无法支持嵌套分组查询
必须使用黑科技来提升 MySQL 对列的限制,这将导致 MySQL 拒绝存储数据
MySQL 无法添加 TEXT 类型字段的长度限制
MySQL 不支持分区索引
还有类似 Geo


为了解决上面这些问题,Gitlab 创建了许多专门针对 MySQL 的代码。 在某些情况下,这导致合并请求的复杂性要高一倍,因为它们必须支持第二个数据库后端。创建和维护这些代码会消耗我们的循环时间和速度,并且会降低我们的迭代值。它也使我们变慢,因为我们的CI系统将运行我们的测试套件两次,每个后端一次。 删除对MySQL的支持可缩短CI作业的时间,并降低成本。 这些成本最终变得相当可观。

总而言之,Gitlab 觉得同时支持 MySQL 和 PostgreSQL 两个数据库,让开发团队觉得烦不胜烦。此外据 Gitlab 调查发现,使用 MySQL 的多是 11 版本之前的用户。所以如果想升级到 Gitlab 12.1 版本的话,那么你老的 MySQL 数据库可能会让你比较痛苦。可以参考官方的移植指南。


GitLab禁止员工使用Windows

2022年8月上旬消息,GitLab 被发现在其入职培训的政策中明确指出,禁止在公司使用微软的 Windows 操作系统,除了不会向员工发放 Windows 系统的电脑,GitLab 也要求在公司使用个人设备的员工不能使用 Windows 系统。GitLab 仅推荐员工使用 macOS 和 Linux。其官网有一个专门供 GitLab 新员工阅读的指导手册,里面列出了十分详尽的设备管理流程,其中包括新员工如何订购电脑、公司设备采购和运输流程、可以申请的设备配置、如何进行更新换代、设备回收等内容。

其中在电脑配置一览中,GitLab 明确指出他们仅批准使用 Linux 和苹果的 macOS,并禁止员工使用微软的 Windows,给出的原因如下:
由于微软 Windows 在桌面操作系统中的主导地位,Windows 是间谍软件、病毒和勒索软件攻击的主要目标平台。
macOS 已经预装在苹果电脑上,Linux 可以免费使用。为了批准使用 Windows,GitLab 必须购买 Windows 专业版的许可证,而 Windows 家庭版不符合 GitLab 的安全准则。
Windows 家庭版是出了名的难以保护。

除此之外,GitLab 还在文档中强调到,如果员工在入职时因为一些特殊原因没能第一时间拿到公司分配的电脑,还可以使用个人设备或临时租用设备,但允许的设备中仍然不包含 Windows 电脑:
使用个人非 Windows 硬件(Mac、Linux、移动设备)
租用并报销非 Windows 硬件的费用
购买并报销 Chromebook

GitLab 在官网详细列出了笔记本电脑供应商的选择标准,其表示目前推荐的设备是安全团队平衡隐私、安全和合规性,以及采购设备后能否及时交付到员工手中等多个因素后的结果,因为这些设备可以更好地满足 GitLab 的需求。其向员工提供的硬件配置如下,根据职位和工作内容不同,配置上会有所差异:

苹果硬件
Macbook Pro 14"和 16" - M1 Max / 10-Core CPU / 24-core GPU / 32GB 统一内存 / 512GB 或 1TB 存储(性能机型)
MacBook Pro 16" - 英特尔 i7 或 i9 / 512 SSD / 32 RAM(传统的性能机型)
Macbook Pro 13" - M1 / 16Gb / 512GB(标准机型)

Linux 硬件
戴尔 Precision 移动工作站 5500 或 5700 系列的笔记本电脑(配置不低于 15.6 英寸显示器 / 512GB 固态硬盘 / 32GB 内存 / 英特尔 i9 或 i7 处理器)
戴尔 Latitude 7300 系列的笔记本电脑(配置不低于 13.3 英寸显示屏 / 256GB 固态硬盘 / 16GB 内存 / 英特尔四核 i5 处理器)


GitLab正在考虑出售

根据路透社于2024年7月中旬独家报道,美国云软件开发工具供应商 GitLab 正在考虑出售,该公司目前市值约 80 亿美元(约 582.43 亿元人民币),投资者包括谷歌母公司 Alphabet。消息人士称,GitLab 正在与投资银行家合作启动出售流程,该流程吸引了包括云监控公司 Datadog 在内的同行的兴趣。

Datadog 是一家 SaaS 公司,提供服务器、数据库等的监控服务,当前市值达 440 亿美元(约 3203.38 亿元人民币)。据熟悉内情的消息人士称,距离达成协议仍需数周时间,不过目前还不确定是否能达成协议。由于此事属于机密,因此消息人士要求匿名。GitLab 和 Datadog 没有回应置评请求。 Alphabet 通过其风险投资部门持有 GitLab 22.2% 的投票权,该公司也没有回应置评请求。


官宣重组:摒弃 CREDIT,拥抱 “狼性文化”

2026年5月11日,GitLab CEO Bill Staples 向全员发了一封公开信。信的开头不算特别。一家科技公司宣布重组 —— 削减业务覆盖国家、精简管理层、调整研发架构、开放自愿离职窗口。2023 年以来,这类信在硅谷每周都有人写。
 
但这封信的结构不同寻常。Staples 把重组公告和战略愿景拆成两部分,重组的部分只占三分之一篇幅,剩下的全部在讲一件事:GitLab 为什么必须为 “Agentic 时代” 重新设计自己 —— 包括删除了他们一直以来引以为傲的 “CREDIT” 文化。
 
从 130 美元到 24 美元
GitLab 在 2021 年 10 月登陆纳斯达克,上市首日股价暴涨 35%,市值达到 149 亿美元。那时候它是 GitHub 最大的对手,也是最旗帜鲜明的远程优先公司 —— 全员远程办公,价值观写在手册里、代码仓库里、每一次全员会议上。
 
“CREDIT” 六个字母,六条价值观:协作(Collaboration)、客户成果(Results)、效率(Efficiency)、多元包容归属感(Diversity, Inclusion & Belonging)、迭代(Iteration)、透明(Transparency)。这套体系伴随 GitLab 从初创公司走到 IPO,又从 IPO 走到年收入突破 10 亿美元。
 
2024 年 12 月,联合创始人 Sid Sijbrandij 因癌症治疗卸任 CEO,Bill Staples 接手。5 个月后,Act 2 来了。
 
股价的走势或许更能说明 GitLab 目前的处境。2021 年 11 月,上市刚满一个月,GitLab 股价触及历史高点 130.88 美元。到 2026 年 5 月,这个数字是 24.29 美元。52 周内从 54 美元跌到 26 美元以下,市值蒸发超过一半。
 
股价承压之下,Staples 宣布了四项同步进行的结构性调整。
 
第一刀砍在版图上。GitLab 的业务覆盖近 60 个国家,现在要砍掉最多 30% —— 那些只有少数几名员工的据点将被关闭,客户服务转交给合作伙伴网络;第二刀砍在管理层。公司一度膨胀到 8 个管理层级,现在最多砍掉 3 层。“让管理者更接近实际工作。” 这是官方的说法;第三刀动在研发。GitLab 将 R&D 拆分成大约 60 个小团队,赋予端到端的自主权,独立团队数量几乎翻倍;第四刀最微妙:用 AI Agent 自动化内部审批流程,然后 “相应调整岗位规模”。
 
时间节点也很明确,5 月 18 日前开放自愿离职申请,6 月 1 日前敲定最终架构,6 月 2 日的财报电话会议将公布具体财务影响。
 
“我想直接一点,”Staples 在信里说,“我想一次做对,不打算在可预见的未来再改组织架构。”
 
价值观也重组
重组公告之外,Staples 同时宣布了一个文化层面的决定: 正式废除 CREDIT 价值观体系。
 
替代它的是三项新原则: 速度与质量、主人翁意识、客户成果。底层基础被定义为 “卓越文化” —— 也就是中文互联网熟悉的 “狼性” 文化。
 
这个变化的传播速度比重组本身还快。Hacker News 上,一条评论获得了大量共鸣:“所以翻译过来就是 —— 更努力工作,别再提 DEI(多元、平等、包容) 了。”
 
更有讽刺意味的是,GitLab 选择在宣布这个决定的同时,把 “透明”(Transparency)从核心价值观中移除。
 
GitLab 曾是硅谷最激进的透明文化实践者。它的内部手册是公开的,全员会议录像对公众开放,甚至连薪资计算公式都公布在官网上。CREDIT 体系中的 T,正是这家公司区别于几乎所有同行的标志。
 
现在它被删掉了。
 
「Agentic 时代」的叙事
Staples 为这场重组搭建了一个更大的叙事框架。他在信中列出了 10 条核心信念,分三类:世界正在变成什么样、GitLab 要做什么样的技术赌注、以及如何执行。
 
第一条信念直接定调:“软件将由机器构建,由人指挥。”
 
第二条是整场赌注的经济逻辑:“随着软件生产成本下降,需求会扩张。去年,开发者平台市场的客单价还是每月几十美元,今年已经到了几百美元,正在向几千美元走。” 他押注的是一种软件行业的杰文斯悖论 —— 当某种资源的使用效率提高时,对它的总需求不会减少,反而会增加。
 
技术层面的赌注更具体。Staples 说 GitLab 正在做 “代际级别的底层重构”,包括重新设计 Git 本身以承受机器速率的工作负载,将 CI/CD 流水线重新想象为 Agent 协调的运行时。
 
他还对竞争对手放了一箭:“在非 Agent 架构的平台上外挂 AI,是这个时代最大的错误。”
 
7% 或者更多
GitLab 没有在公告中给出具体的裁员比例。外部估算约为 7%,对应 2,580 名员工中的约 180 人。
 
但批评者指出了一个矛盾:Staples 声称 Agentic 时代是 GitLab 历史上最大的机会,同时却在裁减负责构建这个机会的团队。
 
宣布重组的当天,GitLab 股价盘后下跌 8%。
 
一个更大的背景是:2026 年第一季度,科技行业已裁员超过 15 万人,其中约 20% 明确将 AI 列为裁员理由。Atlassian 在 3 月份裁了 10%(1,600 人),理由同样是 “用节省的资金自我投资 AI”。Coinbase 也在推进类似的管理层扁平化 —— 最多 5 层、取消纯管理岗位、推行 “球员兼教练” 模式。
 
GitLab 不是第一家用 AI 为裁员提供叙事框架的公司。2025 年的一项统计显示,真正由 AI 驱动的岗位流失不到总量的 1%。Sam Altman 曾公开表示,用 AI 来为非 AI 原因的裁员背书是一种普遍做法。
 
下一步动作
GitLab 选择了一种不常见的裁员执行方式:先公开重组计划,再开放自愿离职窗口,然后才确定最终架构。
 
Staples 承认这种做法会制造不确定性:“这让团队在未来几周面临真实的焦虑,但我们相信结果会更好。” 这种 “透明裁员” 的逻辑是,让员工主动选择去留,而非被动等待通知。但风险也很直接:有能力的人往往有更好的外部选择,最先离开的可能是 GitLab 最不想失去的人。
 
一位开发者对这种模式提出了更尖锐的质疑:用 AI Agent 自动化代码审查和审批流程,同时削减人力,结果只会是质量下降和技术债务积累。
 
GitLab 重申了 2027 财年第一季度的营收指引:2.53 亿至 2.55 亿美元,符合分析师预期。市场对这个数字的反应平静 —— 问题的核心不是这个季度,而是下一个时代。
 
6 月 2 日的财报电话会议上,GitLab 将公布重组的最终规模和财务影响。6 月 10 日,GitLab Transcend 活动将展示下一波技术路线图。Staples 在信的结尾写道:“这是公司有史以来最重要的工作。”
 
2021 年,GitLab 用 CREDIT 价值观和全员远程模式定义了一种公司形态。5 年后,它亲手废掉了那个定义。“谢谢你们构建的一切。谢谢你们将要构建的一切。”
 
参考来源:
GitLab 官方博客《GitLab Act 2》
Business Insider(CEO 内部信全文)
GitLab 股价历史(高点 130.88,当前 130.88,当前 24.29)

宣布重组并裁员 14%

作为2026年5月公布的广泛重组计划的一部分,GitLab 已于2026年6月上旬裁员约 14%,即约 350 名员工。该公司在 5 月份表示将退出 22 个国家/地区,精简管理层级,并投资基础设施以扩展其平台,应对 AI 工作流带来的流量增长,公司将裁减员工,同时更加专注于研发工作。其首席执行官 Bill Staples 在电话会议上表示AI 工作负载给开发者基础设施带来的压力已经超过了其设计承受能力。这并非 GitLab 独有的问题。GitHub 也同样面临着大量 AI 驱动的提交带来的挑战,这些请求已对其系统正常运行时间造成了影响。智能体以机器规模运行,它们正将竞争对手逼到绝境。本季度,我们启动了 Git 的代际重构,以支持 100 倍增长所需的规模和功能。这是以前从未存在过的规模需求,现在已成为每个团队在智能体转型之旅中面临的真正痛点。

Staples 表示,公司已与一家未透露名称的 AI 实验室合作,共同设计和重建其 AI 工作负载的基础设施,并构建 “针对智能体进行优化的 API,用于存储和检索上下文信息,包括代码”。此外,Staples 还在投资开发用于协调 AI 智能体和开发人员之间软件开发的编排工具,构建上下文层,并将治理工具直接集成到其平台中。Statista 统计数据显示,科技行业今年已裁员超过 10 万人,如果裁员趋势持续下去,今年的裁员人数将超过 2024 年和 2025 年。

TechCrunch 指出,这种模式现在已经很常见了:公司报告称收入创历史新高,同时却在缩减员工规模,AI 既是增长的原因,也是裁员的理由。GitLab 公布第一季度营收为 2.64 亿美元,同比增长 23%,毛利率为 88%。作为重组计划的一部分,该公司预计将产生 3000 万至 3500 万美元的重组费用。