首页
/ MongoDB libmongocrypt 项目发布流程详解

MongoDB libmongocrypt 项目发布流程详解

2025-06-24 08:01:36作者:凌朦慧Richard

前言

MongoDB libmongocrypt 是一个用于客户端字段级加密(CSFLE)的 C 语言库,它为 MongoDB 驱动程序提供了加密功能。本文将详细介绍 libmongocrypt 项目的发布流程,帮助开发者理解如何规范地发布新版本。

版本号规范

libmongocrypt 采用严格的版本号命名规则:

  • 正式版本:格式为 1.[0-9].[0-9](例如 1.5.2)
  • 预发布版本:格式为 1.[0-9].[0-9]-(alpha|beta|rc)[0-9](例如 1.5.2-rc1)

这种规范确保了 Linux 发行版包能够被正确发布到指定位置。

发布前安全检查

漏洞扫描

在发布前必须使用 Snyk 和 Silk 工具进行漏洞扫描,确保符合安全开发生命周期(SDLC)的要求。

Snyk 检查步骤

  1. 访问 Snyk 平台并选择 dev-prod 组织
  2. 检查名为 mongodb/libmongocrypt 的 CLI 目标
  3. 更新与即将发布分支对应的参考目标

更新 Snyk 参考目标的详细命令:

# 确保生成源文件存在
cmake -S. -Bcmake-build -D BUILD_TESTING=OFF
cmake --build cmake-build --target mongocrypt

# 打印依赖路径并验证 libbson
snyk test --unmanaged --print-dep-paths

# 创建新的 Snyk 参考目标
snyk auth
snyk monitor \
  --org=$ORGANIZATION_ID \
  --target-reference="<rx.y或master>" \
  --unmanaged \
  --remote-repo-url=https://github.com/mongodb/libmongocrypt.git

增强型 SBOM 检查

检查最近构建中 sbom 任务生成的增强型软件物料清单(SBOM),特别注意其中的"vulnerabilities"字段。

正式发布流程

准备工作

  1. 如果是功能版本发布(x.y.0),需先完成静态分析报告
  2. 检出发布分支:
    • 补丁版本:检出现有 rx.y 分支
    • 新功能版本:创建新的 rx.y 分支
  3. 更新相关文档:
    • CHANGELOG.md
    • etc/purls.txt
    • etc/third_party_vulnerabilities.md

非补丁版本的特殊处理

如果是 x.y.0 版本发布:

  1. 更新 README.md 中的 Linux 包安装指令
  2. 更新持续集成系统中的分支设置

提交和打标签

  1. 提交变更到 rx.y 分支,消息格式为"Release x.y.z"
  2. 创建并推送标签:
    git tag -a <tag>
    git push origin master 1.8.0-alpha0  # 新功能版本示例
    git push origin r1.8 1.8.4           # 补丁版本示例
    

构建验证

确保持续集成系统中基于标签提交的版本已调度,以下任务必须成功:

  • upload-all
  • windows-upload-release
  • 所有 publish-packages 任务

如果 publish-packages 任务失败,可能需要联系发布基础设施团队创建发布路径。

创建正式发布

  1. 在发布页面基于新标签创建发布
  2. 附加以下文件:
    • windows-upload-release 任务获取的 tarball 和签名文件
    • 增强型 SBOM 文件(cyclonedx.augmented.sbom.json)
    • etc/third_party_vulnerabilities.md
    • etc/ssdlc_compliance_report.md

后续工作

  1. 为下一个补丁版本生成新的 SBOM 序列号:
    ./.evergreen/earthly.sh +sbom-generate-new-serial-number
    
  2. 如果是新功能版本:
    • 提交文档更新请求
    • 创建新的 Snyk 参考目标
    • 更新 Webhook 设置包含新分支
  3. 向主分支提交 PR 包含发布变更
  4. 更新 Jira 发布页面
  5. 记录发布信息到 C/C++ 发布信息表
  6. 添加安全测试摘要链接

包管理器发布

Homebrew 发布

提交 PR 更新 Homebrew 公式文件,需要 macOS 环境或请求团队成员协助。

Debian 发布

如果是新功能版本发布,需要 Debian 维护者提交合并请求更新 PPA 配置。

最佳实践建议

  1. 版本规划:提前规划版本路线图,明确功能版本和补丁版本的发布计划
  2. 自动化检查:尽可能将安全检查步骤自动化,减少人为遗漏
  3. 文档同步:确保所有相关文档与代码同步更新
  4. 回滚计划:准备发布失败时的回滚方案
  5. 跨平台验证:在所有支持平台上验证发布包的功能完整性

通过遵循这些严格的发布流程,可以确保 libmongocrypt 的每个版本都达到 MongoDB 项目的高质量标准,为用户提供安全可靠的加密功能。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
178
262
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
868
514
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
130
183
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
272
311
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
373
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
599
58
GitNextGitNext
基于可以运行在OpenHarmony的git,提供git客户端操作能力
ArkTS
10
3