Open Code Review 项目解析知识图谱 / 分组目录 / 工程保障 / 构建与发布体系

构建与发布体系

工程保障高级工程保障G-F · 工程保障

What · 是什么

npm 包(6 平台 optionalDependencies)+ GitHub Release 二进制 + install.sh/ps1,Makefile 覆盖率 90% 门禁
npm 包 @alibaba-group/open-code-review 作为分发入口,bin 指向 bin/ocr.js,postinstall 钩子自动下载对应平台原生二进制
6 平台覆盖:@alibaba-group/ocr-{darwin-x64,darwin-arm64,linux-x64,linux-arm64,win32-x64,win32-arm64} 作为 optionalDependencies 按平台安装
install.sh:经 GitHub API 解析 latest tag → 下载后 sha256sum 校验完整性 → 安装到 OCR_INSTALL_DIR(默认 /usr/local/bin),支持 OCR_VERSION 锁定版本与 OCR_GITHUB_MIRROR 镜像加速
install.ps1:面向 PowerShell 5.1+,安装到 %LOCALAPPDATA%\Programs\ocr,免管理员权限
Makefile 提供完整构建链:build / test(race 检测) / coverage(90% 阈值门禁,低于即失败) / vet / check / build-all(6 平台交叉编译,CGO_ENABLED=0 静态二进制) / sha256sum / dist
启动时后台运行 update.js 检查新版本,18 分钟冷却防频繁请求,OCR_NO_UPDATE 可禁用自动更新

Why · 为什么

原理 · Principle

单一 npm 入口 + postinstall 下载二进制,兼顾『一条命令安装』与『原生性能』,比纯 Go 发布链更贴近 JS 生态用户

sha256sum 校验保证供应链安全,镜像变量解决部分网络环境 GitHub 不可达问题

90% 覆盖率门禁与 race 检测保证发布质量,交叉编译产出静态二进制降低运行时依赖

自动更新让用户及时获得修复与安全补丁,冷却与开关避免打扰

How · 怎么做

npm 安装:npm install -g @alibaba-group/open-code-review,postinstall 自动下载当前平台二进制
脚本安装(Linux/macOS):curl -sSL https://raw.githubusercontent.com/alibaba/open-code-review/main/install.sh | bash;自定义目录用 OCR_INSTALL_DIR=/opt/ocr,锁版本用 OCR_VERSION=v1.x.x,国内加速用 OCR_GITHUB_MIRROR
Windows 安装:以 PowerShell 5.1+ 执行 install.ps1,二进制落于 %LOCALAPPDATA%\Programs\ocr
本地开发构建:make build 编译当前平台;make build-all 交叉编译 6 平台;make test 带 race 检测;make coverage 触发 90% 门禁
产出发布物:make sha256sum 生成校验和,make dist 打包分发包
禁用自动更新:设置 OCR_NO_UPDATE=1 后启动不再检查新版本,适合受控生产环境

案例 · Cases

代表性案例
团队统一安装:运维脚本指定 OCR_VERSION 固定版本 + sha256sum 校验,避免版本漂移
离线内网环境:使用 OCR_GITHUB_MIRROR 指向内网镜像完成安装与更新
开发迭代:make test 的 race 检测捕获并发 bug,make coverage 门禁在合并前拦截覆盖率下滑
Windows 无管理员权限:install.ps1 装入用户目录,无需 UAC 即可使用

反模式 · Anti-patterns

正反实例论证 · Evidence

正例 · Pro
install.sh + sha256sum 校验安装
curl -sSL https://raw.githubusercontent.com/alibaba/open-code-review/main/install.sh | bash# 经 GitHub API 解析 latest tag 后下载,sha256sum 校验通过才落盘OCR_INSTALL_DIR=/opt/ocr OCR_VERSION=v1.x.x ./install.sh
固定版本 + 校验和验证保证供应链安全,OCR_INSTALL_DIR 自定义安装目录,国内环境可用 OCR_GITHUB_MIRROR。
反例 · Con
跳过校验直接下载 Release 二进制
curl -sSL https://github.com/alibaba/open-code-review/releases/download/xxx/ocr-linux-x64 -o ocrchmod +x ocr
绕过 npm postinstall 与 sha256sum 校验,无法确认二进制完整性,供应链风险敞口,内网场景易被替换。
正例 · Pro
make coverage 90% 门禁守住发布质量
make test # race 检测make coverage # 覆盖率低于 90% 即失败make build-all # CGO_ENABLED=0 六平台交叉编译make sha256sum dist
race 检测 + 覆盖率门禁 + vet/check 在发布前拦截质量问题,静态二进制降低运行时依赖。
反例 · Con
CI 每次装最新版不锁版本
curl -sSL .../install.sh | bash # 无 OCR_VERSION
上游发布即影响构建结果,昨日通过的流水线今日失败且不可复现,排障成本高。
正例 · Pro
受控环境禁用自动更新
export OCR_NO_UPDATE=1ocr review
启动时不再触发后台 update.js 版本检查(默认 18 分钟冷却),版本行为可预期,适合生产与离线环境。
反例 · Con
内网安装失败后改用不校验方式
# GitHub 直连超时后,不走 OCR_GITHUB_MIRRORwget <不可信镜像> && chmod +x ocr
放弃校验的下载方式换来可用性,二进制来源不可信,供应链风险与可用性改善不成比例。

实践资产 · Assets

构建发布
构建链:build / test(race) / coverage(90% 门禁) / build-all 6 平台交叉编译
Makefile · 3469 B
构建发布
Linux/macOS 安装脚本(latest tag + sha256 校验 + OCR_GITHUB_MIRROR)
install.sh · 4260 B
构建发布
Windows 安装脚本(PowerShell 5.1+)
install.ps1 · 5628 B
构建发布
npm 包定义(bin: ocr → bin/ocr.js)
package.json · 1385 B
构建发布
Go 依赖清单(cobra / anthropic-sdk-go / openai-go / MCP go-sdk / otel 等)
go.mod · 4600 B

相关边

本节点没有与其他节点的关系边。