Back to skills
SKILL.md
Infra Sonarqube Ops
ASecuritySonarQube 代码质量平台 day-2 运维:探活、项目管理、质量门禁、扫描触发与结果解读、Token 管理。配套 CLI sonarqubectl。当用户提到 SonarQube、sonarqubectl、代码质量扫描、质量门禁、sonar-scan 时触发。
- 21 stars
- 0 votes
- 0 copies
- 1 view
- Added September 4, 2026
Works with
Security analysis
100/100Pro scans all 8 files and shows the line behind each finding
npx -y skills add seed-forge/harness-ai-kit --skill infra-sonarqube-ops --agent claude-codeAre you the author of Infra Sonarqube Ops?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/seed-forge-infra-sonarqube-ops)---
name: infra-sonarqube-ops
description: SonarQube 代码质量平台 day-2 运维:探活、项目管理、质量门禁、扫描触发与结果解读、Token 管理。配套 CLI sonarqubectl。当用户提到 SonarQube、sonarqubectl、代码质量扫描、质量门禁、sonar-scan 时触发。
---
# infra-sonarqube-ops
SonarQube Community Edition 代码质量平台的 day-2 运维操作手册。覆盖健康检查、项目管理、质量门禁配置与查询、扫描任务触发与结果解读、Token 生命周期管理。
## 平台信息
| 项 | 值 |
|----|-----|
| 主机 | <host> (<host>) |
| 版本 | 10.7.0 Community Edition |
| 域名 | sonarqube.{base_domain} |
| 端口 | 19000 |
| 直连 URL | http://sonarqube.{base_domain}:19000 |
| 镜像 | sonarqube:10.7.0-community |
| 部署路径 | 1panel/apps/sonarqube/sonarqube/ |
| 数据存储 | data→/opt/sonarqube/data, extensions→/opt/sonarqube/extensions, logs→/opt/sonarqube/logs |
## 用途
- 平台健康检查与探活
- 项目 CRUD 管理
- 质量门禁列表、详情、项目状态检查
- 扫描任务触发与状态查询
- 项目指标(Bugs/Vulnerabilities/Coverage 等)查看
- 用户 Token 生成/列表/撤销
## 输入
- 项目 Key(project key)
- Token 名称
- 环境变量 `SONARQUBE_URL` + `SONARQUBE_TOKEN`
## 输出
- 健康检查报告(版本、状态)
- 项目列表/详情
- 质量门禁状态(PASSED/ERROR + 条件明细)
- 扫描任务状态(PENDING/IN_PROGRESS/SUCCESS/FAILED)
- 项目指标摘要
## 工作流
### 1. 探活
```bash
# 快速健康检查
sonarqubectl health
# 预期: ✅ SonarQube 10.7.0.96327 — status: UP
# 带 JSON 输出
sonarqubectl --json health
```
### 2. 项目管理
```bash
# 列出所有项目
sonarqubectl project list
# 搜索项目
sonarqubectl project list -q "my-app"
# 查看项目详情
sonarqubectl project get my-project-key
# 创建项目
sonarqubectl project create my-new-project --name "My New Project"
# 删除项目(需确认)
sonarqubectl project delete my-old-project
```
### 3. 质量门禁
```bash
# 列出所有质量门禁
sonarqubectl qualitygate list
# 查看门禁详情(含条件列表)
sonarqubectl qualitygate get 1
# 检查项目的门禁状态
sonarqubectl qualitygate check my-project-key
# 预期输出:
# ✅ Quality Gate: OK
# new_reliability_rating: A (<= A) → OK
# new_security_rating: A (<= A) → OK
```
### 4. 扫描任务
```bash
# 查看最近扫描状态
sonarqubectl scan status my-project-key
sonarqubectl scan status my-project-key -n 10 # 最近 10 条
# 触发扫描提示(实际扫描需要 sonar-scanner)
sonarqubectl scan trigger my-project-key
```
### 5. Token 管理
```bash
# 列出当前用户 Token
sonarqubectl token list
# 生成新 Token(输出仅显示一次)
sonarqubectl token create ci-token
# ⚠️ Save this token — it won't be shown again.
# 撤销 Token(需确认)
sonarqubectl token revoke old-token
```
### 6. Jenkins 集成(L3)
Jenkins Shared Library 的 `sonarScan.groovy` 实现完整的 L3 集成:
```groovy
// Jenkinsfile 中调用
sonarScan(
projectKey: 'my-project',
serverUrl: env.SONAR_URL,
token: env.SONAR_TOKEN,
qualityGate: true,
qualityGateTimeout: 120
)
```
流程:触发 sonar-scanner → 轮询 CE task 完成 → 查询 quality gate → FAILED 则 `error()` 阻断 → 输出指标摘要。
### 7. Woodpecker 集成
Woodpecker config-extension 的 `sonar.py` 提供完整的多层配置合并 + event/branch 过滤 + step 构建能力。通过环境变量控制:
- `WOODPECKER_SONAR_ENABLED` — 总开关
- `WOODPECKER_SONAR_HOST_URL` — SonarQube 地址
- `WOODPECKER_SONAR_PROJECT_KEY` — 项目 Key
- `WOODPECKER_SONAR_EVENTS` — 触发事件(默认 push)
- `WOODPECKER_SONAR_BRANCHES` — 触发分支(默认 main,master)
## 配置上下文
本技能依赖以下配置,AI 在运行时按如下优先级解析:
1. 用户对话中明确提供的值(最高优先级)
2. `~/.harness-ai-kit/config.yaml` 中 `assets.infra-sonarqube-ops` 或 `global` 段
3. `config.defaults.yaml` 中的默认值
如用户未提供且无默认值的 required 字段,**必须主动询问用户**。
禁止从 AGENTS.md 或脚本中读取硬编码配置值。
## 推荐输出格式
执行完毕后输出极简回执:**状态**(✅ 成功 / ⚠️ 部分成功 / ❌ 失败)+ **关键结果**(1-2 行,如操作对象、产出位置、下一步)。无需强制套用大表格。
## 约束
- **社区版限制**: 不支持分支分析(Branch Analysis)、PR Decoration
- **环境适配**:主机名 <host>/<host> 为逻辑名示例;IP/域名使用占位符(`{hs_host}`/`{base_domain}`/`{root_domain}` 等),解析自 `~/.harness-ai-kit/config.yaml` 顶层字段,规范见 docs/config-governance.md。
- **主干扫描模式**: 所有扫描结果合并到 main 分支视图
- **网络模式**: Docker host network,端口变更需同步改 compose + DDNS + OpenResty
- **认证**: 使用 User Token(非密码),Token 生成后仅显示一次
- 配套 CLI `sonarqubectl` 提供命令行操作入口
- Jenkins 集成通过 `sonarScan.groovy` Shared Library 实现
## CE 与 DE 功能差异
| 功能 | Community Edition | Developer Edition+ |
|------|:--:|:--:|
| 代码扫描 | ✅ | ✅ |
| 质量门禁 | ✅ | ✅ |
| API 完整 | ✅ | ✅ |
| 分支分析 | ❌ | ✅ |
| PR Decoration | ❌ | ✅ |
| 高级规则 | 部分 | ✅ |
## 专题引用
| 文件 | 用途 |
|------|------|
| [REFERENCE-API.md](references/REFERENCE-API.md) | SonarQube Web API 端点参考 |
## 示例
**场景**: 用户说「帮我看看 SonarQube 是否正常,然后检查一下 my-app 的质量门禁」
**合格输出**:
1. `sonarqubectl health` 确认平台在线
2. `sonarqubectl qualitygate check my-app` 查看门禁状态
3. 如果 ERROR,列出失败条件并给出修复建议
4. `sonarqubectl scan status my-app` 查看最近扫描时间
## Human Decisions
> 结构化同源见 `decisions.yaml`;以下为人类可读汇总。
| # | 决策点 | 触发条件 | 选项 | 默认行为 |
|---|--------|---------|------|---------|
| HD-1 | 删除项目 | 准备删除 SonarQube 项目时 | 确认后删除 / 取消 | 必问 |
| HD-2 | 重置 Token | 准备重置/重新生成 Token 时 | 确认后重置 / 取消 | 必问 |
参考文档:
- references/REFERENCE-SONARQUBECTL-CLI.md
Files in this skill
- CHANGELOG.md
- README.md
- SKILL.md
- USAGE.md
- config.defaults.yaml
- decisions.yaml
- references/REFERENCE-SONARQUBECTL-CLI.md
- skill.json
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.