---
url: /zh/develops/badge.md
description: |
  介绍 CNB 平台的徽章功能， 包括云原生构建徽章的访问路径、徽章类型， 以及如何在 README 中嵌入构建状态等指标徽章。
---
徽章用于展示指标数据，通过颜色区分是否达标。

## 云原生构建相关徽章

### 徽章访问路径

云原生构建徽章的访问路径：

* precise：`https://cnbprod.alpha.qq.com/{group}/{repository}/-/badge/git/{sha}/{metrics}`

* latest：`https://cnbprod.alpha.qq.com/{group}/{repository}/-/badge/git/latest/{metrics}`

* 分支 latest：`https://cnbprod.alpha.qq.com/{group}/{repository}/-/badge/git/latest/{metrics}?branch={branch}`

* 参数说明：
  * `group`：仓库所在组织路径
  * `repository`：仓库名
  * `sha`：CommitId 前 8 位
  * `latest`：未指定 branch 时，获取默认分支最新 commit 的徽章；指定 branch 时，获取该分支最新 commit 的徽章
  * `metrics`：指标名，如 `ci/status/push`，表示 push 事件触发的构建耗时

* `branch`：分支名，如 `main`，仅在 sha 为 `latest` 时生效

### 徽章类型

云原生构建时会报告相关构建指标的徽章数据：

#### 1. Git 事件

##### `ci/status/push` {#badge-ci-status-push}

push 事件构建耗时与状态

![push 事件](//cnbprod.alpha.qq.com/svg/badge/push?message=pending%2C%2010s\&color=pending)
![push 事件](//cnbprod.alpha.qq.com/svg/badge/push?message=success%2C%2010s\&color=success)
![push 事件](//cnbprod.alpha.qq.com/svg/badge/push?message=failure%2C%2010s\&color=failure)

##### `ci/status/commit.add` {#badge-ci-status-commit-add}

commit.add 事件构建耗时与状态

![commit.add 事件](//cnbprod.alpha.qq.com/svg/badge/commit.add?message=pending%2C%2010s\&color=pending)
![commit.add 事件](//cnbprod.alpha.qq.com/svg/badge/commit.add?message=success%2C%2010s\&color=success)
![commit.add 事件](//cnbprod.alpha.qq.com/svg/badge/commit.add?message=failure%2C%2010s\&color=failure)

##### `ci/status/branch.create` {#badge-ci-status-branch-create}

branch.create 事件构建耗时与状态

![branch.create 事件](//cnbprod.alpha.qq.com/svg/badge/branch.create?message=pending%2C%2010s\&color=pending)
![branch.create 事件](//cnbprod.alpha.qq.com/svg/badge/branch.create?message=success%2C%2010s\&color=success)
![branch.create 事件](//cnbprod.alpha.qq.com/svg/badge/branch.create?message=failure%2C%2010s\&color=failure)

##### `ci/status/pull_request` {#badge-ci-status-pull-request}

pull\_request 事件构建耗时与状态

![pull\_request 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request?message=pending%2C%2010s\&color=pending)
![pull\_request 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request?message=success%2C%2010s\&color=success)
![pull\_request 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request?message=failure%2C%2010s\&color=failure)

##### `ci/status/pull_request.update` {#badge-ci-status-pull-request-update}

pull\_request.update 事件构建耗时与状态

![pull\_request.update 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.update?message=pending%2C%2010s\&color=pending)
![pull\_request.update 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.update?message=success%2C%2010s\&color=success)
![pull\_request.update 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.update?message=failure%2C%2010s\&color=failure)

##### `ci/status/pull_request.target` {#badge-ci-status-pull-request-target}

pull\_request.target 事件构建耗时与状态

![pull\_request.target 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.target?message=pending%2C%2010s\&color=pending)
![pull\_request.target 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.target?message=success%2C%2010s\&color=success)
![pull\_request.target 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.target?message=failure%2C%2010s\&color=failure)

##### `ci/status/pull_request.merged` {#badge-ci-status-pull-request-merged}

pull\_request.merged 事件构建耗时与状态

![pull\_request.merged 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.merged?message=pending%2C%2010s\&color=pending)
![pull\_request.merged 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.merged?message=success%2C%2010s\&color=success)
![pull\_request.merged 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.merged?message=failure%2C%2010s\&color=failure)

##### `ci/status/pull_request.approved` {#badge-ci-status-pull-request-approved}

pull\_request.approved 事件构建耗时与状态

![pull\_request.approved 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.approved?message=pending%2C%2010s\&color=pending)
![pull\_request.approved 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.approved?message=success%2C%2010s\&color=success)
![pull\_request.approved 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.approved?message=failure%2C%2010s\&color=failure)

##### `ci/status/pull_request.changes_requested` {#badge-ci-status-pull-request-changes-requested}

pull\_request.changes\_requested 事件构建耗时与状态

![pr.changes\_requested 事件][pr-cr-pending]
![pr.changes\_requested 事件][pr-cr-success]
![pr.changes\_requested 事件][pr-cr-failure]

[pr-cr-pending]: //cnbprod.alpha.qq.com/svg/badge/pull_request.changes_requested?message=pending%2C%2010s&color=pending

[pr-cr-success]: //cnbprod.alpha.qq.com/svg/badge/pull_request.changes_requested?message=success%2C%2010s&color=success

[pr-cr-failure]: //cnbprod.alpha.qq.com/svg/badge/pull_request.changes_requested?message=failure%2C%2010s&color=failure

##### `ci/status/pull_request.mergeable` {#badge-ci-status-pull-request-mergeable}

pull\_request.mergeable 事件构建耗时与状态

![pull\_request.mergeable 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.mergeable?message=pending%2C%2010s\&color=pending)
![pull\_request.mergeable 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.mergeable?message=success%2C%2010s\&color=success)
![pull\_request.mergeable 事件](//cnbprod.alpha.qq.com/svg/badge/pull_request.mergeable?message=failure%2C%2010s\&color=failure)

##### `ci/status/issue.comment@npc` {#badge-ci-status-issue-comment-npc}

issue.comment@npc 事件构建耗时与状态

![issue.comment@npc 事件](//cnbprod.alpha.qq.com/svg/badge/issue.comment%40npc?message=pending%2C%2010s\&color=pending)
![issue.comment@npc 事件](//cnbprod.alpha.qq.com/svg/badge/issue.comment%40npc?message=success%2C%2010s\&color=success)
![issue.comment@npc 事件](//cnbprod.alpha.qq.com/svg/badge/issue.comment%40npc?message=failure%2C%2010s\&color=failure)

##### `ci/status/pull_request.comment@npc` {#badge-ci-status-pull-request-comment-npc}

pull\_request.comment@npc 事件构建耗时与状态

![pr.comment@npc 事件][pr-comment-npc-pending]
![pr.comment@npc 事件][pr-comment-npc-success]
![pr.comment@npc 事件][pr-comment-npc-failure]

[pr-comment-npc-pending]: //cnbprod.alpha.qq.com/svg/badge/pull_request.comment%40npc?message=pending%2C%2010s&color=pending

[pr-comment-npc-success]: //cnbprod.alpha.qq.com/svg/badge/pull_request.comment%40npc?message=success%2C%2010s&color=success

[pr-comment-npc-failure]: //cnbprod.alpha.qq.com/svg/badge/pull_request.comment%40npc?message=failure%2C%2010s&color=failure

##### `ci/status/tag_push` {#badge-ci-status-tag-push}

tag\_push 事件构建耗时与状态

![tag\_push 事件](//cnbprod.alpha.qq.com/svg/badge/tag_push?message=pending%2C%2010s\&color=pending)
![tag\_push 事件](//cnbprod.alpha.qq.com/svg/badge/tag_push?message=success%2C%2010s\&color=success)
![tag\_push 事件](//cnbprod.alpha.qq.com/svg/badge/tag_push?message=failure%2C%2010s\&color=failure)

#### 2. 准备工作区

##### `ci/git-clone-yyds` {#badge-ci-git-clone-yyds}

工作区大小与准备耗时：
![git-clone-yyds 事件](//cnbprod.alpha.qq.com/svg/badge/git-clone-yyds?message=2.7s%2C%20163.77%20GB\&color=success)

#### 3. 流水线配置

##### `ci/pipeline-as-code` {#badge-ci-pipeline-as-code}

云原生构建的配置文件：
![pipeline-as-code 事件](//cnbprod.alpha.qq.com/svg/badge/pipeline-as-code?message=.cnb.yml\&color=orange)

#### 4. 云原生开发

##### `code/vscode-started` {#badge-code-vscode-started}

准备开发环境耗时：![vscode-started](//cnbprod.alpha.qq.com/svg/badge/准备开发环境?message=22s\&color=success)

#### 5. 单元测试

使用内置任务 [testing:coverage](../build/internal-steps/testing/coverage.md) 可上报单元测试徽章数据

##### `testing/unit/coverage` {#badge-testing-unit-coverage}

单元测试全量覆盖率

![coverage](//cnbprod.alpha.qq.com/svg/badge/coverage?message=18.67%25\&color=l2)
![coverage](//cnbprod.alpha.qq.com/svg/badge/coverage?message=38.67%25\&color=l3)
![coverage](//cnbprod.alpha.qq.com/svg/badge/coverage?message=58.67%25\&color=l4)
![coverage](//cnbprod.alpha.qq.com/svg/badge/coverage?message=78.67%25\&color=l5)

##### `testing/unit/coverage-pr` {#badge-testing-unit-coverage-pr}

本次 `pull_request` 的单元测试增量覆盖率

![coverage-pr](//cnbprod.alpha.qq.com/svg/badge/coverage%20%40pr?message=18.67%25\&color=l2)
![coverage-pr](//cnbprod.alpha.qq.com/svg/badge/coverage%20%40pr?message=38.67%25\&color=l3)
![coverage-pr](//cnbprod.alpha.qq.com/svg/badge/coverage%20%40pr?message=58.67%25\&color=l4)
![coverage-pr](//cnbprod.alpha.qq.com/svg/badge/coverage%20%40pr?message=78.67%25\&color=l5)

#### 6. 安全

##### `security/tca` {#badge-security-tca}

腾讯云代码分析（TCA）：![tca](//cnbprod.alpha.qq.com/svg/badge/TCA?message=致命/错误:%204\&color=error)

#### 7. 定时任务

##### `ci/status/crontab` {#badge-ci-status-crontab}

定时任务构建耗时与状态

![定时任务事件](//cnbprod.alpha.qq.com/svg/badge/crontab?message=pending%2C%2010s\&color=pending)
![定时任务事件](//cnbprod.alpha.qq.com/svg/badge/crontab?message=success%2C%2010s\&color=success)
![定时任务事件](//cnbprod.alpha.qq.com/svg/badge/crontab?message=failure%2C%2010s\&color=failure)

#### 8. 自动合并

##### `ci/status/auto_merge` {#badge-ci-status-auto-merge}

自动合并耗时与状态

![自动合并](//cnbprod.alpha.qq.com/svg/badge/auto_merge?message=pending%2C%2010s\&color=pending)
![自动合并](//cnbprod.alpha.qq.com/svg/badge/auto_merge?message=success%2C%2010s\&color=success)
![自动合并](//cnbprod.alpha.qq.com/svg/badge/auto_merge?message=failure%2C%2010s\&color=failure)

## 仓库相关徽章

### fork 徽章

展示仓库的 Fork 数量：![fork徽章](//cnbprod.alpha.qq.com/svg/badge/fork?message=18\&color=orange)

访问路径：`https://cnbprod.alpha.qq.com/{group}/{repository}/-/badge/fork`

参数含义：

* `group`：仓库所在组织路径
* `repository`：仓库名

### star 徽章

展示仓库的 Star 数量：![star徽章](//cnbprod.alpha.qq.com/svg/badge/star?message=20\&color=orange)

访问路径：`https://cnbprod.alpha.qq.com/{group}/{repository}/-/badge/star`

参数含义：

* `group`：仓库所在组织路径
* `repository`：仓库名

### 部署环境徽章

展示仓库部署环境的最新部署状态和版本：

* 有成功部署记录时：![deploy徽章](//cnbprod.alpha.qq.com/svg/badge/Environment?message=production%3A%20v1.2.3\&color=success)
* 无部署记录时：![deploy徽章](//cnbprod.alpha.qq.com/svg/badge/Environment?message=production\&color=orange)

访问路径：`https://cnbprod.alpha.qq.com/{group}/{repository}/-/badge/deploy?name={name}`

点击跳转路径：`https://cnbprod.alpha.qq.com/{group}/{repository}/-/badge/deploy.link?name={name}`

参数含义：

* `group`：仓库所在组织路径
* `repository`：仓库名
* `name`：部署环境名称（必填），如 `production`、`staging` 等

### Release 徽章

展示仓库最新 Release 的版本号。
如果手动将某个 Release 的 tag 设置为最新版本（Latest Release），徽章优先展示该 Release；否则默认展示最近创建的 Release：

* 有 Release 时：![release徽章](//cnbprod.alpha.qq.com/svg/badge/Latest%20Release?message=v1.2.3\&color=success)
* 无 Release 时：![release徽章](//cnbprod.alpha.qq.com/svg/badge/Latest%20Release?message=none\&color=orange)

访问路径：`https://cnbprod.alpha.qq.com/{group}/{repository}/-/badge/release`

点击跳转路径：`https://cnbprod.alpha.qq.com/{group}/{repository}/-/badge/release.link`

参数含义：

* `group`：仓库所在组织路径
* `repository`：仓库名

## 在 Markdown 中使用徽章

支持以下两种格式在 Markdown 中以图片形式嵌入徽章：

带域名和仓库：`![完整路径的徽章](https://cnbprod.alpha.qq.com/groupname/reponame/-/badge/git/latest/ci/git-clone-yyds)`

不带域名和仓库，以 `/-/badge/git` 开头的会被识别为徽章：`![相对路径徽章](/-/badge/git/latest/ci/git-clone-yyds)`
