GitLab 中文 笔记

GitLab 中文

GitLab 博客是一个分享软件开发和 DevOps 实践新闻、见解和观点的平台。它包括 GitLab 团队成员、客户和行业专家的文章,涵盖 CI/CD、GitOps、云原生开发等主题。该博客为开发者、运营专业人士和技术领导者提供了一个宝贵的资源,以了解软件开发最新的趋势和最佳实践。通过创新、协作和社区,GitLab 博客促进了知识共享,并鼓励读者之间的讨论。无论您是 GitLab 的新手还是经验丰富的用户,该博客都提供了有价值的信息和见解,以帮助您改进软件开发工作流程。从技术深入分析到思想领导文章,GitLab 博客为所有对软件开发未来感兴趣的人提供了内容。通过订阅 GitLab 博客,随时了解最新的新闻、趋势和最佳实践。

笔记线程

关注数据主权的组织可以通过确保代码驻留位置受控,采用如 GitLab Duo 等 AI 编码工具。GitLab Duo Self-Hosted 允许管理员将其功能连接到部署在选定基础设施上的模型,包括 Microsoft Foundry。这提供了对托管位置、区域、网络路径和凭据的控制,从而满足数据驻留和监管需求。Microsoft Foundry 是一个多功能平台,支持多种 AI 模型,包括 OpenAI GPT、Anthropic Claude 和 Meta Llama。GitLab 的灵活性使得可以将特定模型分配给各个 Duo 功能,以优化不同工作负载的成本效益。模型系列的设置流程保持一致,差异仅在于部署的具体模型和配置细节。必须从 GitLab 和 Foundry 双方验证模型支持,因为 Foundry 的新版本并不自动兼容 GitLab 的矩阵。GitLab Duo Self-Hosted 非常适合在 Azure 内运营的组织,提供对部署、访问和网络连接的集中管理。其架构包括自托管的 GitLab 实例、用于请求路由的 AI 网关,以及托管在 Microsoft Foundry 中的模型端点。在完全自托管的配置中,推理数据(如代码输入和模型响应)保留在用户网络内。在选择模型时,应考虑其在不同能力领域的评分,并优先选择当前受良好支持的选项。先决条件包括 GitLab Premium 或 Ultimate 自托管实例,以及拥有 Microsoft Foundry 访问权限的 Azure 订阅。实施步骤包括在 Foundry 中部署模型、安装 AI 网关、配置 GitLab 以连接到网关,然后将每个 Foundry 部署添加到 GitLab。
软件交付中的合规性至关重要,但往往繁琐且依赖人工流程。GitLab 的自定义合规框架提供了解决方案。与其记录合规性,不如一次性定义控制措施,由平台持续验证 adherence。本文详述如何利用模板、持续监控、基于策略的强制执行以及现有标准模板,快速建立 SOC 2 框架,并预览未来针对 AI 的专用合规模板。合规遵从对于满足监管和合同义务(如 SOC 2 和 ISO 27001)至关重要,可防止交易受阻、罚款及信任流失。自定义框架通过为具有特定合规需求的项目创建标签来解决这一问题。在 Ultimate 版本中,这些框架包含要求及自动化控制措施,评估诸如 SAST 运行或分支保护等条件。此举将合规性从偶发的审计快照转变为全年持续的监控。模板简化了框架的创建,为 SOC 2 等标准提供预定义配置。您可以在合规中心从内置模板创建框架,或导入 JSON 文件。应用 SOC 2 模板后,GitLab 控制措施将映射至信任服务标准(Trust Services Criteria),检查漏洞扫描、职责分离及分支保护等项目。合规状态报告(Ultimate)提供持续的遵从可见性。该报告展示不合规项目、失败的控制措施及修复建议,每 12 小时自动更新。这确保合规性漂移可在数小时内被检测,而非每年一次。管理员或安全经理/所有者可查看并导出此报告。除报告外,合规遵从还通过策略进行强制执行。扫描执行、流水线执行及合并请求批准策略可限定于特定合规框架。这将自动为该框架下的所有项目应用护栏,在变更合并前阻止不合规的更改。GitLab 提供不断增长的预定义模板库,涵盖 CIS CSC、CSA CCM、FedRAMP、ISO 27001 和 PCI DSS 等标准。这些模板为可导入的 JSON 文件,可根据组织的具体需求进行配置。未来计划包括针对新兴 AI 治理义务(如欧盟《人工智能法案》)的 AI 专用合规模板。
作者在假期后的初步观察是,大型语言模型已达到能够可靠地生成有用且经济实惠代码的阶段。这促使人们重新审视软件开发经济学,其中代码生成不再成为主要约束。作者发表了相关思考,指出在人类指导下,机器将越来越多地构建软件,这需要架构层面的变革。GitLab 随后展示了适用于机器级并发和生命周期上下文的架构组件。Anthropic 近期发布的《AI 原生 SDLC 指南》进一步强化了这一转变,指出代码已不再是瓶颈。这一转变意味着规划需变为机器可读,交接实现自动化,验证嵌入其中,而人类判断则聚焦于关键决策点。作者关注的是:当人员、智能体和模型以机器速度运行时,什么将变得稀缺,以及企业架构需要如何调整。Stripe、Spotify 和 Amplitude 等公司的经验进一步巩固了这一信念:根本性的变化不仅在于代码生成速度的提升,更在于实现成本降低后所引发的经济与架构层面的转变。约束条件已从“生成代码”转向“信任代码”,而信任取决于模型所处的环境,包括上下文、验证机制与治理体系。过去六十年来,软件工程一直围绕代码的珍贵性与高昂成本组织,影响了从遗留系统维护到开发者生产力优化,再到广泛的发布前仪式。然而,这一约束正在瓦解,正如以往的技术抽象一样,新的问题随之暴露。代码生产正变得充裕,但优质软件依然稀缺。快速实现与正确性、安全性及业务意图遵循度之间的差距,构成了新的挑战。廉价的迭代从根本上改变了策略,将重心从前期消除不确定性转向更快的学习与适应。组织知识以往存在于人类头脑中,如今可越来越多地转化为可执行代码,将生产故障转化为回归测试,将安全事件转化为策略。作者提出,关键的经济单位应是“每次被接受变更的成本”,而非“每行代码的成本”,因为 AI 大幅降低了生成成本,使得其他方面的重要性相对提升。Stripe、Amplitude 和 Spotify 等公司已在应对这些变化,其经验表明,AI 智能体并非消除现有的工程约束,而是将其暴露出来。企业开发向 AI 的过渡很可能以三种共存模式发生:人类控制的遗留系统、智能体加速的开发,以及自主开发。
过去在 GitLab 手动创建多步自动化需要对流程注册表模式有深入了解。这带来了障碍,因为最了解工作流程的人往往不是熟悉YAML语法的人。在 GitLab 19.3 中,Flow Creator 代理取消了这一前提条件。用户现在可以用通俗语言描述所需的自动化,代理生成完整的可执行定义。这一新功能赋予了像安全分析师和规划负责人这样拥有关键工作流程知识但缺乏模式专业知识的人员,能够构建自动化。仅仅通过表达需求,他们就能将理解转化为功能自动化。Flow Creator 通过 Agentic Chat 运行,Agentic Chat 是 GitLab Duo 代理平台的一部分。用户描述中的歧义或缺失细节会通过互动提示得到澄清,然后才最终确定流程定义。这些护栏确保了增加流量建设的参与度不会危及安全。每个流程都以有限权限的服务账户运行,确保不会超出作者的访问权限。虽然任何人都可以描述流程,但启用流程仍然需要维护者或更高级别的职位。流程创建器还包含内部检查、审查文档、应用规则以防止常见错误以及执行预输出检查表。这些措施能发现潜在问题,如缺少项目ID、破损的审批门、错误的输出目标,以及在YAML生成前缺少停止指令。输出是一个可粘贴到配置编辑器中的现成定义。Flow Creator 可在 GitLab 19.3 中使用,允许用户绕过模式要求,创建自己的自定义自动化。
默认 Git 克隆操作效率低下,会因传输完整历史而占用服务器和网络资源。代理式 AI 进一步加剧了这一问题,因其频繁且不可预测的克隆需求。GitLab 正在提升后端性能,但客户端可通过浅克隆、单分支克隆或部分克隆来优化请求。尽管手动优化能显著减少克隆时间和磁盘占用,但在各种环境中容易因人为错误而失效。为此,Git 克隆覆盖策略(Git Clone Override Policy)实现了仓库克隆的自动化优化。该策略在仓库内使用一个 TOML 文件定义策略。一个轻量级的 Go 二进制程序拦截未加限定的 git clone 命令并强制执行该策略。此过程包含固定的 13 个步骤,执行浅克隆和部分克隆,配置稀疏检出以跳过二进制文件,并应用经过调优的 Git 配置。这种自动化方法确保这些优化在开发者笔记本电脑、CI 作业和 AI 代理中始终一致地应用。该策略支持以声明式方式配置 Git 设置、获取标志和稀疏检出规则。这种标准化降低了复杂性,提升了采用率,减少了错误,并增强了安全性。策略本身可通过直接读取配置文件进行审计。该策略可通过三种方式使用:一个零足迹的 CLI 工具替代 git clone、Git 别名,或使用策略 URL。这一自动化解决方案保证了高效且一致的 Git 克隆,减轻了大型仓库和频繁克隆带来的成本。其目标是使优化无法被跳过,从而确保所有用户和系统的效率。
安全扫描常因代码中的微小变更(如添加注释或重新格式化文件)而重复报告同一漏洞,导致审计工作徒劳无功,并削弱对扫描结果的信任。为应对这一问题,2022 年引入了高级漏洞跟踪机制,采用 Scope+Offset 指纹方法,通过最窄的包围作用域和行偏移量来识别发现项。然而,该方法仍存在局限性,特别是在处理非功能性变更(如添加注释或空行)时,这些变更可能导致偏移量变化,使跟踪器将同一漏洞识别为重复项。为此,开发了一种改进方法,在计算指纹时忽略非功能性代码,从而确保添加注释或重新格式化文件不再改变指纹。该归一化方法在涵盖多种编程语言的 439 个源代码文件的基准测试中进行了评估,实现了零重复,并将唯一指纹总数减少了 43%。相比之下,原始的 Scope+Offset 方法累计产生了 1,361 个重复指纹,较基线增长了 77%。归一化的 Scope+Offset 方法现已作为 GitLab 中的 scope_offset_compressed 跟踪算法发布,支持多种编程语言,并可与任意组合的 SAST 工具协同工作。题为"Vulnerability Tracking using Normalized Scope+Offset"的该研究方法将于 ASE 2026 Industry Showcase 上发表,其发现对提升安全扫描的准确性和效率具有重要意义。该方法的开发是多位研究人员协作的成果,包括 Julian Thome、Hua Yan、Lucas Charles、Craig Smith 和 Jason Leasure,他们为该研究和文章做出了贡献。
代理式编码正快速发展,速度远超传统企业治理项目。如 Claude 安全指导插件等 AI 编码助手,可在代码编写过程中识别并修复常见漏洞。然而,安全不仅限于初始编码会话,还涵盖合并、依赖更新、基础设施变更及审计等后续阶段。GitLab 提供解决方案以保障这些向生产环境推进阶段的网络安全。Anthropic Claude 至 GitLab 的工作流整合了五个关键交接环节。团队可通过将现有 Claude 安全工具与 GitLab 连接,实现从编写到生产的全流程无缝治理。Claude 负责代码编写阶段的安全,而 GitLab 则在单一平台上管理其余生命周期。GitLab 提供可见性与控制能力,以建立安全编码护栏,该配置一次设定即可在所有项目和流水线中规模化执行。职责分离机制同样适用于 AI 代理,防止其或其提示开发者自行批准变更,而无需指定的人工审查。关键漏洞在获得指定审批人签字前将被阻止合并,从而杜绝其隐蔽地引入生产环境。每一项安全发现均永久记录于 GitLab 全面的安全漏洞报告与安全仪表板中。针对 SOC 2 和 PCI DSS 等合规框架的审计证据收集已实现自动化,证明每一项变更均经过测试、审查与批准。GitLab 允许团队控制发送至 AI 模型的敏感数据,在运行任何扫描之前排除凭据、专有逻辑及受监管数据。GitLab 保障整个软件交付生命周期的安全,除会话中编写的代码外,还涵盖依赖项、容器镜像、基础设施配置及密钥。确定性扫描器与高级 SAST 提供可复现的结果以支持合规审计,而安全审查流程则能捕获自动化扫描可能遗漏的业务逻辑错误。GitLab 的扫描执行与合并请求批准策略确保所有代码(无论由人类还是 AI 代理编写)均获得一致的安全覆盖。最终,GitLab 提供必要的护栏与治理机制,确保 AI 生成代码与人类编写代码均能安全、高效地交付至生产环境。
将 Java 8 现代化至 Java 21 是一项复杂的任务,涉及软件开发的众多方面。像 Cursor 这样的 AI 编码代理能够高效处理诸如修复单个失败测试等聚焦性任务,但无法独立确定多阶段迁移的整体安全策略。GitLab 通过其 Duo Agent 平台,在软件生命周期中编排 AI 工作流,以认证这些由 AI 生成的变更。问题层级结构以及 GitLab 的模型上下文协议(MCP)服务器为 Cursor 提供了必要的上下文,使其能够访问 GitLab 的功能,如 CI/CD、安全扫描和影响分析。本教程展示了三个用例:修复失败的端到端测试、为现代化准备质量门禁,以及现代化 HTTP 连接处理。推进顺序优先考虑从小处着手,逐步增加项目上下文,然后逐个边界进行现代化,并通过严格的审查和测试流程确保安全。第一个用例涉及修复一个缺陷:Java HTTP 指标收集器错误地将所有 2xx 响应视为成功,即使预期的是 503 错误。Cursor 识别了根本原因并修复了该问题,生成的合并请求经过审查并合并,从而建立了行为基线。第二个用例侧重于通过建立稳健的质量门禁来为 Java 8 至 Java 21 的现代化做准备。这包括在 Cursor 中配置 GitLab MCP,将项目上下文引入 IDE,使 Cursor 能够访问规划详情、讨论和依赖项。初始步骤确保 CI/CD 流水线能够并行测试 Java 8 和 Java 21,并逐步提高测试覆盖率。Cursor 随后实施这些变更,合并请求触发 CI/CD 流水线和代码审查,任何反馈均通过 GitLab 的开发者流程进行处理。最后一个用例涉及通过用 Java 21 的 java.net.http.HttpClient 替换遗留的 HttpURLConnection API 来现代化 HTTP 连接处理。这被视为一个有界的工作项,以隔离行为变更。Cursor 实施替换,利用 GitLab MCP 服务器提供上下文,并使用 Docker Compose 设置进行本地验证。这种方法确保每个现代化步骤均可管理、可审查且可回退,在整个迁移过程中保持高标准的安全性。
静态扫描器能够有效识别已知的漏洞模式,例如未清理的输入和硬编码的秘密。然而,它们无法检测逻辑缺陷,即在特定上下文中,正确的代码执行了非预期的操作。这些被忽视的问题往往在开发后期才暴露,修复成本随之大幅增加。安全审查流程(Security Review Flow)是一项新的公开测试版功能,它从安全工程师的视角审视代码变更。该功能追踪代码背后的意图,而非依赖模式匹配,从而在漏洞流入生产环境之前捕获逻辑缺陷。传统扫描器会遗漏由应用程序的授权模型、数据敏感性规则和预期工作流引发的漏洞。例如,对象级授权失效、敏感字段的数据泄露,以及业务逻辑错误(如未支付即完成结账)。手动代码审查和渗透测试成本高昂,且难以适应快速开发节奏。作为 GitLab Duo Agent Platform 的一部分,安全审查流程通过推理代码的预期功能来弥补这一差距。它能够检测多种缺陷,包括授权问题、信息泄露、批量赋值和竞态条件。该工具是对现有扫描器和人工分析的补充,而非替代,在代码变更点进行审查,以实现更具成本效益的修复。当合并请求准备就绪时,用户可以请求 Duo 安全审查进行评审,该功能将分析差异、相关代码及讨论内容。发现结果以差异线程的形式呈现,包含详细解释、严重程度及建议修复方案。审查流程绝不会自动批准变更,从而确保人工监督。安全审查流程目前作为公开测试版,面向各 GitLab 平台的 GitLab Ultimate 客户开放。
软件开发的难点不在于知道该做什么,而在于持续复制复杂的多步流程。目前,基于聊天的解决方案和自制脚本在每个步骤都需要人工干预,且未能随系统变更进行更新,表现不足。这使得关键的团队工作流程被困在无法编码的运行手册中。GitLab 19.2 引入了自定义流程,提供由 AI 驱动的工作流程,定义一次,并由原生 GitLab 事件触发。这些流程可以自动化整个流程,比如自修复流水线,减少人工交接。此外,GitLab Duo 代理聊天中的基础流程现在可以通过匹配专业工作的请求发起,比如实现问题或修复流水线。用户批准推荐流程,并可直接在对话中跟踪其进展。这不仅仅是单回合聊天,允许团队自动化由事件或聊天触发的可信序列,同时在关键阶段保留人工批准。定制流程现已准备好生产环境,实现自修复流水线和事件驱动跟进等任务的自动化。它们可以由各种 GitLab 事件触发,并以复合身份执行以保证安全和归因。用户可以直接从聊天开始专业工作,批准交接并在线观察进展。代码审查自动化还通过排除规则和定制说明增强,以定制审核流程。自定义流程可以从项目或 AI 目录创建,并带有 GitLab 事件触发器和人工循环检查点。代理聊天中的基础流程现在在用户批准后,将请求路由到合适的专业流程。团队可以开始用自定义流程编码他们可信的路径,将部落知识转化为可预测的自动化,超越单回合聊天。
Forrester Consulting 发布的《总经济影响》研究报告发现,采用 GitLab Duo Agent Platform 的组织在三年内实现了 400% 的投资回报率(ROI)和 750 万美元的净现值(NPV),并在不到六个月内收回投资。该研究基于对来自不同行业的四位决策者的访谈,这些决策者均在生产环境中使用该平台。研究将他们的经验整合为一个综合组织案例:一家年收入 30 亿美元、拥有 3000 名员工的全球公司。该组织通过解决手动任务、中断以及代码审查瓶颈,实现了显著收益,包括 400% 的投资回报率和 750 万美元的净现值。在采用该平台之前,团队依赖手动流程、资深工程师的专业知识以及临时性的知识共享来构建、审查和保障软件安全。研究量化了四个收益领域,风险调整后的总收益达 940 万美元,而成本为 190 万美元,涵盖更快的入职、迁移、安全修复以及节省的时间。新入职开发人员入职速度提升 80%,原计划耗时八个月的迁移工作仅用两个月完成,从而带来显著的劳动力成本节约。安全与质量保证工程师也收回了 40% 的工作时间,每位开发人员每周多出 20% 的时间用于功能开发。该研究为构建软件工程中代理型基础设施的商业案例提供了框架,其基础源于四家企业的实践经验。由 GitLab 委托、Forrester Consulting 交付的完整研究报告提供了完整的方法论、财务模型及访谈发现,可供各组织学习并应用于自身情境。