cathive/concourse-sonarqube-resource执行SonarQube分析并跟踪SonarQube质量门状态。
此资源适用于SonarCloud和自托管的SonarQube实例。
如果要在构建流水线中实现真正的质量门控制,建议配合使用concourse-sonarqube-qualitygate-task,当SonarQube报告的质量目标未达标时,该任务可中断构建。
in动作时无法获取分析结果(配置项为conf/sonar.properties中的sonar.core.serverBaseURL)在Concourse CI流水线中添加新的资源类型:
yamlresource_types: - name: sonar-runner type: docker-image source: repository: cathive/concourse-sonarqube-resource tag: latest # 为确保构建可重现,建议使用特定标签而非依赖"latest"
host_url: 必填。SonarQube实例地址,例如使用SonarCloud时为"[***]",必须以斜杠结尾。
organization: 提交分析结果到SonarQube实例时使用的组织。使用SonarCloud进行代码分析时必填。
login: 具有"执行分析"权限的SonarQube用户登录名或认证令牌。如果SonarQube实例无需认证,可留空。
password: 与sonar.login用户名对应的密码。如果使用认证令牌,此值应留空。
maven_settings: 执行SonarQube分析时使用的Maven设置。仅在out阶段的scanner_type设置为/确定使用Maven时生效。
__debug: 用于调试资源问题的标志。启用后会在控制台输出额外调试信息,并在shell执行时设置-x标志。生产环境通常不建议设为true,可能导致密码和访问密钥泄露到控制台。
该资源实现了三个动作(check、in和out)。分析由out动作触发,check/in动作用于等待分析结果并获取项目状态。任务可利用这些信息在质量门标准未达标时中断构建(如需)。
project_path: 必填 待分析资源的路径。如果路径中包含"sonar-project.properties"文件,分析时会自动读取。
scanner_type: 使用的扫描器类型。可能值:
auto(默认):如果sources指定的目录中存在pom.xml,则使用Maven扫描器,否则使用CLI扫描器。cli:强制使用命令行扫描器,即使sources目录中存在Maven项目对象模型(pom.xml)。maven:强制使用Maven插件执行扫描。project_key: 项目密钥(默认值从sonar-project.properties读取)
project_key_file: 用于读取项目密钥的文件。指定此选项时,优先级高于project_key参数。
project_name: 项目名称(默认值从sonar-project.properties读取)
project_description: 项目描述(默认值从sonar-project.properties读取)
project_version: 项目版本(默认值从sonar-project.properties读取)
project_version_file: 用于读取项目版本的文件。指定此选项时,优先级高于project_version参数。
autodetect_branch_name: 尝试自动识别分支名称。如果project_path包含受支持的版本控制系统(当前仅支持Git)的SCM元数据,则生效。
branch_name: 分支名称。如已设置,会覆盖autodetect_branch_name。
branch_name_file: 用于读取分支名称的文件。指定此选项时,优先级高于branch_name参数。
branch_target: 短期分支生命周期结束时要合并到的目标分支名称。如留空,默认为主分支。也可用于初始化长期分支时从非主分支同步问题(详见分支插件文档)。
branch_target_file: 用于读取目标分支的文件。指定此选项时,优先级高于branch_target参数。
decorate_pr: 如果设为true,将尝试从拉取请求资源获取拉取请求ID、头部分支名称和基础分支名称,并在分析时启用sonar.pullrequest.key、sonar.pullrequest.branch和sonar.pullrequest.base标志。
支持以下拉取请求资源:
telia-oss/github-pr-resource
zarplata/concourse-git-bitbucket-pr-resource
jtarchie/github-pullrequest-resource
注意:使用此功能需使用
SonarCloud或SonarQube Developer版本。
sources: 包含源文件的目录路径列表。
tests: 包含测试文件的目录路径列表。
additional_sonar_scanner_opts: 传递给$SONAR_SCANNER_OPTS环境变量的可选值。可用于在扫描器进程启动前提供参数,目前主要用于HTTP代理设置。
additional_properties: 运行sonar-scanner时传递的可选对象/字典形式的额外属性。
additional_properties_file: 包含要传递给sonar-scanner的属性的可选文件路径。
maven_settings_file: 要使用的Maven设置文件路径。仅在scanner_type设置为/确定使用Maven时生效。如果资源本身配置了maven_settings,此键会覆盖其值。
sonar_maven_plugin_version: sonar-maven-plugin版本(默认空,使用最新版本)
支持将通配符转换为逗号分隔的路径:
sourcestestsadditional_properties中所有后缀为.reportPaths的键该动作会在资源文件夹中生成两个从SonarQube Web API获取的JSON文件:
quality_gate: 可选 JSON 启用质量门检查并控制get步骤的成功/失败。
ignore_all_warn: bool 忽略所有WARN指标,使get步骤成功ignore_all_error: bool 忽略所有ERROR指标,使get步骤成功ignore_warns: array 质量门检查时忽略的WARN指标键列表ignore_errors: array 质量门检查时忽略的ERROR指标键列表注意:ignore_warns/ignore_errors的可能值可通过以下方式获取:
https://<your-sonar_host>/quality_gates/show/<quality_gate_id>https://<your-sonar_host>/api/qualitygates/show?id=<quality_gate_id>qualitygate_project_status.json
资源在out动作触发的计算引擎任务的质量门状态。
格式:[***]
ce_task_info.json
执行分析的计算引擎任务信息。
格式:[***]
以下示例流水线展示如何使用该资源在项目未满足关联质量门要求时中断构建:
yamlresource_types: - name: sonar-runner type: docker-image source: repository: cathive/concourse-sonarqube-resource tag: latest # 为确保构建可重现,建议使用特定标签而非依赖"latest" resources: - name: sources type: git source: uri: [***] - name: artifact type: s3 # ... 配置省略 - name: code-analysis type: sonar-runner source: host_url: [***] login: ((sonarqube-auth-token)) jobs: # 构建作业从"sources"资源获取代码,执行构建和测试任务。编译、测试等完成后,将整个工作目录复制到输出文件夹"sonarqube-analysis-input",并将构建任务创建的包推送到artifact资源,同时使用sonarqube-resource执行静态代码分析。 - name: build-and-analyze plan: - get: sources trigger: true - task: build config: platform: linux image_resource: type: docker-image source: repository: debian tag: 'jessie' inputs: - name: sources outputs: # 提示:sonar-runner需要的不仅仅是源代码,还需要行覆盖率报告、单元测试报告、Java类文件和变异测试结果等。因此,必须确保构建脚本在Concourse CI构建计划中提供源代码和编译/测试结果。(这也是需要以下输出的原因) - name: sonarqube-analysis-input run: path: build.sh dir: sources - in_parallel: - put: code-analysis params: project_path: sonarqube-analysis-input project_key: com.example.my_project sources: ["."] tests: ["."] additional_properties: # 将作为"-Dsonar.javascript.lcov.reportPaths=coverage/lcov.info"传递给扫描器 sonar.javascript.lcov.reportPaths: coverage/lcov.info get_params: quality_gate: ignore_errors: ['new_coverage', 'violations'] ignore_warns: ['new_duplicated_lines_density', 'violations'] - put: artifact # 质量门任务在SonarQube分析结果表明任何质量指标未达标时中断构建 - name: qualitygate plan: - in_parallel: - get: artifact passed: - build-and-analyze - get: code-analysis passed: - build-and-analyze trigger: true - task: check-sonarqube-quality-gate config: platform: linux image_resource: type: docker-image source: repository: cathive/concourse-sonarqube-qualitygate-task tag: latest # 为确保构建可重现,使用版本化标签! inputs: - name: code-analysis run: path: /sonarqube-qualitygate-check dir: code-analysis # 仅部署通过质量门检查的制品 - name: deploy plan: - get: artifact passed: - qualitygate
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务