Releaserun/releaserun-cli

GitHub: Releaserun/releaserun-cli

一个轻量级CLI工具,扫描项目依赖文件检测技术栈的EOL状态、CVE风险并给出A-F健康评级,支持CI集成和README徽章生成。

Stars: 1 | Forks: 0

# releaserun [![npm version](https://badge.fury.io/js/releaserun.svg)](https://badge.fury.io/js/releaserun) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Node.js 22 Health](https://img.releaserun.com/badge/health/nodejs/22.svg)](https://releaserun.com/nodejs/22/) [![TypeScript 5.3 Health](https://img.releaserun.com/badge/health/typescript/5.3.svg)](https://releaserun.com/typescript/5.3/) 扫描你的项目,查找生命周期结束 (EOL) 的依赖、已知 CVE 和版本健康问题。在几秒钟内为你的整个技术栈获得 A-F 评级。 **版本感知**:徽章和评级固定在你的项目实际使用的版本上,而不是通用的“最新版本”数据。 ``` npx releaserun check ``` ## 它的功能 将其指向任何项目目录。它会读取你的依赖文件,找出你正在运行的内容,并告诉你哪些是健康的,哪些即将 EOL,以及哪些存在已知 CVE。 ``` releaserun v1.4.0 — Stack Health Check ┌─────────────┬─────────┬────────┬──────┬───────┐ │ Technology │ Version │ EOL │ CVEs │ Grade │ ├─────────────┼─────────┼────────┼──────┼───────┤ │ Node.js │ 22 │ Apr 27 │ 0 │ A │ │ React │ 19 │ -- │ 0 │ B │ │ TypeScript │ 5.7 │ -- │ 0 │ A │ │ PostgreSQL │ 16 │ Nov 28 │ 0 │ A │ │ Redis │ 7.4 │ -- │ 0 │ A │ └─────────────┴─────────┴────────┴──────┴───────┘ Overall Grade: A ``` 版本来自你的实际文件。`.nvmrc` 中的 Node.js 22,`docker-compose.yml` 中的 PostgreSQL 16,`package.json` 中的 React 19。绝非猜测。 ## 安装 ``` # 不安装直接运行 npx releaserun check # 或者全局安装 npm install -g releaserun ``` 需要 Node.js 18+。 ## 命令 ### `releaserun check` 扫描并评估你的技术栈。 ``` releaserun check # scan current directory releaserun check --path ./my-app # scan a specific path releaserun check --json # JSON output for scripting releaserun check --fail-on D # exit non-zero if anything grades D or worse releaserun check --verbose # show what's being scanned and fetched ``` ### `releaserun badges` 为你的 README 生成特定版本的徽章 Markdown。 ``` releaserun badges # health badges (default) releaserun badges --type eol # EOL status badges releaserun badges --type cve # CVE count badges releaserun badges --style flat-square # flat-square style ``` 输出(已复制到剪贴板): ``` [![Node.js 22 Health](https://img.releaserun.com/badge/health/nodejs/22.svg)](https://releaserun.com/nodejs/22/) [![Python 3.12 Health](https://img.releaserun.com/badge/health/python/3.12.svg)](https://releaserun.com/python/3.12/) [![PostgreSQL 16 Health](https://img.releaserun.com/badge/health/postgresql/16.svg)](https://releaserun.com/postgresql/16/) ``` 徽章固定在你的项目中检测到的版本。`PostgreSQL 16` 来自你的 `docker-compose.yml`,而不是 `pg` npm 包的版本。 ### `releaserun readme` 通过自动更新标记将徽章直接注入到你的 README 中。 ``` releaserun readme # preview what would be injected releaserun readme --write # write badges into README.md releaserun readme --readme DOCS.md # target a different file ``` 徽章位于 `` 和 `` 标记之间。再次运行它会用新的徽章替换旧的。还没有标记?它会在第一个标题后插入它们。 ### `releaserun ci` CI 优化的输出。无颜色,无表格格式。 ``` releaserun ci --json --fail-on D ``` ## 扫描内容 | 文件 | 检测内容 | |------|-----------------| | `package.json` | Node.js (来自 `engines`), React, Vue, Angular, TypeScript, webpack 等 | | `pyproject.toml` | Python (来自 `requires-python`), Django, Flask, 数据库客户端 | | `requirements.txt` / `Pipfile` | Python 包, 框架检测 | | `go.mod` | Go 版本 (来自指令), 数据库客户端检测 | | `Gemfile` | Ruby 版本, Rails | | `Cargo.toml` | Rust (来自 `rust-version` 或 edition), crate 检测 | | `pom.xml` | Java 版本, Spring Boot | | `composer.json` | PHP 版本, Laravel, Symfony | | `Dockerfile` | 基础镜像 (node:22, python:3.12, postgres:16 等) | | `docker-compose.yml` | 服务镜像 (postgres:16, redis:7.4 等) | | `.nvmrc` / `.node-version` | Node.js 版本 | | `.python-version` | Python 版本 | | `.ruby-version` / `.go-version` | Ruby/Go 版本 | | `.tool-versions` | asdf 管理的运行时 | **版本准确性很重要。** 客户端库版本绝不会与服务器版本混淆。`package.json` 中的 `pg:8.13` 检测到“正在使用 PostgreSQL”,但不会声称它是 PostgreSQL 8.13。实际版本来自你定义 `postgres:16` 的 Dockerfile 或 docker-compose.yml。 ## 版本检测原理 按优先级顺序检查来源: 1. **版本文件** (`.nvmrc`, `.python-version`) - 你本地实际运行的内容 2. **锁定/配置文件** (`package.json engines`, `pyproject.toml requires-python`, `go.mod go 指令`, `Cargo.toml rust-version`) 3. **依赖列表** - 直接匹配的包 (react 19 = React 19) vs 指示符 (express 4.18 = “正在使用 Node.js,版本未知”) 4. **Dockerfile** - 基础镜像标签 (`FROM python:3.12-slim`) 5. **docker-compose.yml** - 服务镜像 (`image: postgres:16`) 后续来源会填补空白。如果 `package.json` 中的 `pg` 检测到 PostgreSQL(版本未知),而 docker-compose.yml 中有 `postgres:16`,则最终结果为 PostgreSQL 16。 ## 评级 | 评级 | 含义 | |-------|---------| | **A** | 完全支持,无 CVE,还有很长的支持周期 | | **B** | 受支持,将在 6-12 个月内 EOL | | **C** | 即将 EOL(<6 个月)或存在轻微 CVE | | **D** | EOL 迫在眉睫(<3 个月)或存在中等 CVE | | **F** | 已过 EOL 或存在严重 CVE | | **?** | 版本未知,无法确定健康状况 | 版本未知的技术会得到 `?`,而不是虚假的评级。我们宁愿诚实也不愿误导。 ## CI 集成 ``` # GitHub Actions - name: Check stack health run: npx releaserun check --fail-on D # 或者使用具有 PR 评论和 badge 自动更新功能的 dedicated action - uses: Releaserun/releaserun-action@v2 with: path: '.' comment: 'true' update-readme: 'true' ``` 退出代码:`0` = 一切正常,`1` = 某些项评级为 C/D,`2` = 某些项评级为 F。 ## 所有选项 | 标志 | 描述 | 默认值 | |------|-------------|---------| | `--path ` | 要扫描的目录 | `.` | | `--json` | JSON 输出 | `false` | | `--fail-on ` | 在此评级或以下时非零退出 | `F` | | `--style ` | 徽章样式:`flat` 或 `flat-square` | `flat` | | `--type ` | 徽章类型:`health`, `eol`, `v`, `cve` | `health` | | `--write` | 将徽章写入 README (readme 命令) | `false` | | `--readme ` | readme 命令的目标文件 | `README.md` | | `--no-color` | 禁用终端颜色 | `false` | | `--no-cache` | 跳过本地响应缓存 | `false` | | `--verbose` | 显示扫描详情 | `false` | ## 隐私 不会上传任何依赖文件。唯一的网络调用是通过公共 API 检查版本状态([endoflife.date](https://endoflife.date),[ReleaseRun badge API](https://releaserun.github.io/badges))。响应在本地缓存 1 小时。 ## 链接 - [ReleaseRun](https://releaserun.com) - 300 多种技术的发布生命周期跟踪 - [Badge API 文档](https://releaserun.github.io/badges) - 完整的徽章参考 - [GitHub Action](https://github.com/Releaserun/releaserun-action) - 带有 PR 评论和健康徽章的 CI 集成([Marketplace](https://github.com/marketplace/actions/releaserun-stack-health-check)) - [免费开发者工具](https://releaserun.com/tools/) - 57 种免费开发者工具:K8s 安全检查器、GitHub Actions 审计工具、npm 健康检查器、漏洞扫描器等(无需注册) ## 许可证 MIT
标签:CVE, DevSecOps, EOL检测, GNU通用公共许可证, IPv6支持, MITM代理, Node.js, npm, npx, TypeScript, 上游代理, 云安全监控, 代码健康度, 依赖扫描, 威胁情报, 安全可观测性, 安全插件, 开发者工具, 开源合规, 数字签名, 文档安全, 文档结构分析, 暗色界面, 模型提供商, 版本扫描, 版本控制, 生命周期管理, 自动化攻击, 自动化检查, 软件供应链安全, 远程方法调用, 静态分析