JFrog DevOps 是一份围绕 JFrog 平台各组件在 DevOps 流程中如何使用的操作说明,主要涉及 Artifactory(制品仓库)、Xray(安全扫描)、Curation(开源包审查)、JFrog ML 与 AI Catalog(模型管理)等。
一、用途与操作范围 资料以“识别 DevOps 操作”为起点,列出常见操作与对应工具、API/CLI 及是否需要认证,包括:上传/部署制品、下载制品、搜索制品、Docker push/pull、发布构建信息、晋级构建、扫描 CVE、创建 watch/policy、生成报告、导出 SBOM(SPDX 或 CycloneDX)、下载前审查 OSS 包、管理 ML 模型(Hugging Face、MLflow、NIM)、清理旧制品等。
二、认证配置 提供四种方式:
- JFrog CLI(推荐):使用 jf config add 配置访问令牌,并用 jf rt ping 验证连接。
- REST API + curl:通过环境变量读取主机与令牌,使用 Authorization: Bearer 头。资料指出旧版 API key(X-JFrog-Art-Api 头)已于 2024 年第四季度终止生命周期,并在 Artifactory 7.98+ 默认禁用,应改用访问令牌或引用令牌。
- CI 场景的 OIDC(无长期密钥):以 GitHub Actions 的 jfrog/setup-jfrog-cli 为例,说明 v5 运行于 node24,v4 仍受支持;需先在 JFrog 中配置 OIDC 集成,CI 任务在运行时用短期 JWT 换取访问令牌。
- Python 客户端:给出 ArtifactoryClient 示例类,包含 ping、list_repos、deploy_artifact、download_artifact、search_aql、get_build_info、promote_build 等方法。
三、Docker 仓库操作 说明如何登录 Artifactory Docker 仓库(SaaS/子域方式、仓库路径方式、端口方式),以及 docker tag/push/pull 的用法。资料特别指出 jf config add 不会登录 Docker 守护进程,并给出三种可行路径:使用 jf docker push/pull、导出访问令牌后通过 --password-stdin 登录、或由 setup-jfrog-cli 导出令牌。同时提醒不要把令牌放在 docker login -p 参数中。使用 JFrog CLI 进行 Docker 操作时可附带构建信息(--build-name、--build-number)。
四、构建信息与晋级 给出从 CI 流水线发布构建信息的步骤:收集环境变量、上传制品并关联构建信息、发布构建信息、将构建从 staging 晋级到 release。并展示晋级流水线模式:Build → libs-snapshot-local(dev)→ libs-staging-local(QA 通过)→ libs-release-local(可上生产)。
五、Xray 安全扫描 介绍 jf audit、jf docker scan、jf build-scan、jf scan 等命令,以及 SBOM 导出(CycloneDX)。资料强调:
- --min-severity 只过滤显示内容,若无 --watches、--project 或 --repo-path,则不会评估任何策略违规,无法形成门禁。
- --fail 默认即为 true,真正让门禁生效的是 --watches、--project 或 --repo-path,且三者互斥。
- jf audit 与 jf build-scan 门禁的对象不同:audit 解析源码树声明的依赖,build-scan 扫描构建信息与流水线实际发布的制品。
- 列出多种会让门禁静默失效的情况,例如目标仓库未被 Xray 索引、watch 未激活或策略无 fail_build 规则、watch 资源未包含被扫描对象、忽略规则已抑制违规、使用 --format=cyclonedx 丢失策略上下文、--vuln 报告所有漏洞而不论策略、SAST/IaC/上下文分析属于 JFrog Advanced Security 权益、退出码 3 被 continue-on-error 或管道吞掉等。
- Xray 索引是前提条件:新仓库需在 Indexed Resources 中添加后才会被索引,且仅支持特定包类型;可用 POST /xray/api/v1/artifact/status 或 xray_client.py 的 scan-status 验证。
- CycloneDX 是 JFrog CLI 唯一输出的 SBOM 格式,没有 jf scan --format=spdx;SPDX 只能通过 Xray UI 或 POST /xray/api/v2/component/exportDetails 获取。
- jf docker scan 与 jf scan 共享同一套 --format 取值(table、json、simple-json、sarif、cyclonedx)。
- --sbom 是布尔显示开关,不是输入选择器,仅在 --format 为 table 或 cyclonedx 时生效。
- CBOM 指 Cryptography Bill of Materials,是 SBOM 的加密资产增强,不是密钥报告。
- Frogbot 用于 PR 扫描,可评论发现并开修复 PR;其自身开源免费,但扫描器权益不统一:SCA 需要 JFrog 平台连接,SAST、IaC 与上下文分析属于 JFrog Advanced Security。建议固定 @v3,V3 静态扫描不执行包管理器,构建失败时仍能返回结果,并自动检测嵌套与多包仓库;V2 处于日落模式。
六、AI/ML 模型管理 JFrog ML(2025 年 3 月,源自 Qwak 收购)与 AI Catalog(2025 年 9 月)将 Artifactory 与 Xray 扩展到 ML 模型。Machine Learning 仓库类型可在同一格式无关仓库中存放 Hugging Face 模型以及 PyTorch、ONNX、.pkl、.joblib、.pth、.cbm 文件,并支持 FrogML SDK。资料说明 Hugging Face 仓库自 Artifactory 7.77 起受支持,7.111.1 起所有新建本地与远程 Hugging Face 仓库默认使用 Machine Learning 布局;Xet 协议支持专门针对 Hugging Face 仓库。模型扫描方面,jf malicious-scan(beta)针对 pickle 反序列化攻击类,jf docker scan 通过本地 Docker 守护进程解析镜像,不能指向 ML 仓库路径。AI Catalog 让平台团队在统一治理层后管理 OpenAI、Anthropic、NVIDIA NIM(含 Nemotron 开放权重模型)与 Hugging Face 模型的访问,提供扫描、血缘、模型卡与一键部署。
七、AQL 查询模式 给出常见 AQL 示例:查找最近 7 天创建的制品、按名称查找 Docker 镜像、查找大于 100MB 的制品、查找 90 天未下载的未使用制品、按属性查找制品等。
八、适用场景与限制 该资料适用于需要在 CI/CD 中管理制品、镜像、构建信息、安全扫描门禁与 ML 模型的 DevOps 团队。限制方面:部分能力(SAST、IaC、上下文分析、恶意扫描等)属于 JFrog Advanced Security 权益;Xray 索引与 watch 配置是扫描生效的前提;SBOM 格式受限于 CycloneDX(CLI)或 SPDX(UI/API);旧版 API key 已不可用。资料未提供具体收费与价格信息。