Sonarqube 质量门未向詹金斯发送 webhook

2024-04-25

我将 Jenkins 配置为与 sonarqube 扫描仪一起使用。扫描工作正常。詹金斯管道正在工作,詹金斯日志中没有任何问题。

SonarQube 扫描仪 3.0.3.778 詹金斯:2.70 适用于 Jenkins 的 SonarQube 扫描仪插件:2.6.1

我使用这段代码:

    stage('SonarQube analysis') {
        sh 'sed -ie "s|_PROJECT_|${PROJECT_CODE}|g" $WORKSPACE/_pipeline/sonar-project.properties'
        // requires SonarQube Scanner 3.0+
        def scannerHome = '/opt/sonar/bin/sonar-scanner';
        withSonarQubeEnv('mscodeanalysis') {
            sh "${scannerHome}/bin/sonar-scanner -Dproject.settings=$WORKSPACE/_pipeline/sonar-project.properties"
        }
    }
    }
    }
}
    }
    // No need to occupy a node
    stage("Quality Gate"){
        timeout(time: 15, unit: 'MINUTES') { // Just in case something goes wrong, pipeline will be killed after a timeout
        def qg = waitForQualityGate() // Reuse taskId previously collected by withSonarQubeEnv
            if (qg.status != 'OK') {
                error "Pipeline aborted due to quality gate failure: ${qg.status}"
            }
        }
    }

我的问题来自质量门。它永远不会将 json 有效负载 POST 到 jenkins。我在 jenkins 日志中没有看到 json 条目。但我知道 jenkins 和 sonarqube 服务器之间的连接正在工作,因为我能够使用来自 sonarqube VM 的curl 发送 POST。

这里是詹金斯作业的输出:

Timeout set to expire in 15 min
[Pipeline] {
[Pipeline] waitForQualityGate
Checking status of SonarQube task 'AV3irVJXpvBxXXNJYZkd' on server 'mscodeanalysis'
SonarQube task 'AV3irVJXpvBxXXNJYZkd' status is 'PENDING'
Cancelling nested steps due to timeout

这是我从未到达詹金斯管道的有效负载: 网址:http://sonar-server:9000/api/ce/task?id=AV3irVJXpvBxXXNJYZkd http://sonar-server:9000/api/ce/task?id=AV3irVJXpvBxXXNJYZkd

{"task":{"organization":"default-organization","id":"AV3irVJXpvBxXXNJYZkd","type":"REPORT","componentId":"AV3hrJeCfL_nrF2072FH","componentKey":"POOL-003","componentName":"POOL-003","componentQualifier":"TRK","analysisId":"AV3irVkZszLEB6PsCK9X","status":"SUCCESS","submittedAt":"2017-08-14T21:36:35+0000","submitterLogin":"jenkins","startedAt":"2017-08-14T21:36:37+0000","executedAt":"2017-08-14T21:36:38+0000","executionTimeMs":650,"logs":false,"hasScannerContext":true}}

我无法插入图像,但质量门已通过并且分析任务成功。

如果我需要提供更多信息,请告诉我。 谢谢


问题可能是 Jenkins 使用带有自签名证书的 https。那么解决办法就是:

  1. 为 SonarQube 生成信任库:

    keytool -import -trustcacerts -alias jenkins-host-name -file cert.crt -keystore sonarqube.jks
    

    密钥库密码:密码

    其中 cert.crt - 是用于 jenkins ssl 的证书,jenkins-host-name - 是 docker 网络中 jenkins 的主机名(在 webhook 中使用)

  2. 将信任库添加到 SonarQube Dockerfile:

    FROM sonarqube
    COPY sonarqube.jks /var/sonar_cert/
    COPY sonar.properties /opt/sonarqube/conf/sonar.properties
    
  3. 更新 sonar.properties

    sonar.ce.javaAdditionalOpts=-Djavax.net.ssl.trustStore=/var/sonar_cert/sonarqube.jks -Djavax.net.ssl.trustStorePassword=password
    

然后,如果您在 webhook URL 中提供了正确的 Jenkins 用户和密码,那么一切都应该可以正常工作。

尝试过:Jenkins 2.107.2、SonarQube 7.1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sonarqube 质量门未向詹金斯发送 webhook 的相关文章

  • 在全球范围内压制 StyleCop 警告

    如何在解决方案中全局抑制 StyleCop 警告 该解决方案是使用 Jenkins 持续构建和集成工具 持续构建的 并且应用了所有 StyleCop 规则 该解决方案使用 TAB 字符而不是 4 个空格 因为这是我的开发团队采用的标准 因此
  • 如何在声明性 Jenkins 管道的阶段之间传递变量?

    如何在声明性管道的阶段之间传递变量 在脚本化管道中 我收集的过程是写入临时文件 然后将该文件读入变量 如何在声明式管道中执行此操作 例如 我想根据 shell 操作创建的变量触发不同作业的构建 stage stage 1 steps sh
  • Sonar Xerces 与 Findbugs 和 ivy 发生冲突:报告

    我正在尝试让声纳为一个包含 Findbugs 规则的质量配置文件的项目工作 然而 在分析项目时 声纳蚂蚁任务崩溃并出现以下错误 Caused by java io IOException SAX2 driver class org apac
  • Jenkins + Gerrit 触发器未自动构建

    Jenkins 似乎不会自动引入需要 Gerrit 审核的更改 我们正在使用 Gerrit 触发器 另外 如果我尝试手动触发一些 似乎什么也没有发生 Gerrit Trigger管理区域中的 控制 似乎没有多大 闪烁 启动 停止 或 重新启
  • SonarQube 从 6.4 升级到 6.5 破坏了扫描仪

    我使用的是sonarQube6 4并且已经升级到6 5 声纳扫描仪是 3 0 3 现在 升级后 只要源路径中存在 java 文件 扫描仪就会失败 如果我不扫描 java 文件 一切都会正常 但是 如果我回滚使用 6 4 版本 一切正常 那么
  • Jenkins - 如何暂停排队作业的运行并让新构建优先

    詹金斯任何版本 我有两个版本 1 642 3 或 2 32 3 我有一份詹金斯工作jobA 我们假设此作业将工件部署到目标部署服务器 它需要 2 个参数 工件名称和目标部署服务器 执行并发构建当前已禁用 即未选中 假设我手动启动了此作业的多
  • 无法连接到存储库:执行 git 命令时出错:git ls-remote -h ***public github url *** HEAD

    I have installed jenkins on ec2 instance when i try to configure my public github repo with the ec2 instance then it thr
  • Jenkins - 配置 Jenkins 以轮询 SCM 中的更改

    我正在与 jenkins 合作 当 svn 存储库发生更改时 我想运行 Maven 目标 我附上了一张我当前配置的图片 我知道每 5 分钟检查一次存储库是疯狂的 我想只有当有新的变化时才运行它 但我找不到方法 无论如何 它不会检查存储库 我
  • 如何在sonar.properties中配置SMTP?

    SonarQube 的 SMTP 设置可以在 Web UI 中更改 我如何在中设置这些 SMTP 设置sonar properties配置文件 您还可以使用sonar properties定义 smtp 设置 但不推荐这种方法 因此几乎没有
  • Jenkins 脚本化管道或声明式管道

    我正在尝试将旧式项目基础工作流程转换为基于 Jenkins 的管道 在经历的同时docs https jenkins io doc book pipeline 我发现有两种不同的语法名为scripted and declarative 比如
  • 整合 Jenkins 电子邮件通知

    我有一个 Jenkins 项目 由 3 个简单的自由式作业组成 每个作业都有自己的构建从站 每个作业都与一个单独的平台相关联 linux mac 或 windows 当开发人员提交代码时 Jenkins 很快就会轮询存储库 在每个构建从属设
  • Hudson/Jenkins Git 构建所有分支

    我们有很多开发人员创建了我想要构建的功能分支 每晚我们都会运行一个需要在每个分支上运行的代码质量工具 我也不喜欢静态配置 因为分支数量每隔几周就会发生变化 在 Git 配置中有一个字段 分支说明符 默认为空白 如果你放在那里 它将构建来自所
  • 在自定义 Sonar 规则中获取 Java 方法注释的正确方法

    我尝试编写一个自定义声纳规则 Java 并努力寻找正确的方法来获取调用的 Java 方法的注释 该规则应该检测对标记为的方法和字段的非法访问 VisibleForTesting 从生产代码访问此类元素是非法的 但从同一类访问此类元素是合法的
  • Jacoco 代码覆盖率在 Jenkins 上显示覆盖率为 0%

    我已阅读了类似问题的大部分答案 但没有一个适合回答我的问题 我的 pom 文件中的配置文件如下所示
  • Sonarqube - 避免捕获通用异常

    声纳在捕获泛型类型时抱怨例外 但有时我们需要对所有 甚至尚未识别 异常类型进行一些常规异常处理 通过这次声纳检查的解决方案是什么 除非你调用一个抛出异常的方法Exception 无需捕获Exception 捕获您知道的异常 编译器会告诉您何
  • 来自 jenkins api 的节点标签

    有什么方法可以从 jenkins API 中提取节点标签吗 这standard https wiki jenkins ci org display JENKINS Remote access API base url computer no
  • 如何将文件参数传递给詹金斯管道中的另一个构建作业?

    如何将当前工作区中的文件作为参数传递给构建作业 例如 build job other project parameters class FileParameterValue 真是一场噩梦 没有文档 查看了詹金斯代码等 尝试了一切 最后发现这
  • 詹金斯上的登录类型选择有什么区别?

    我之前已经在一些机器上通过 war 文件和作为 Windows 服务安装的网页安装了 jenkins 现在我尝试通过 msi 文件将其安装在另一台计算机上 但我遇到了一个问题 在安装步骤中 有一个步骤询问我 登录类型 这给了我 2 个选择
  • 如何在 Jenkins 服务器上运行 Jest 测试

    我正在尝试运行我的Jest https facebook github io jest 在 Jenkins 部署期间进行测试 如果我 ssh 进入服务器 我可以 sudo 进入 Jenkins 用户并从工作区成功运行测试 但是 当我尝试从
  • Gitlab 合并请求事件不触发 Jenkins 多分支管道

    我正在尝试在合并请求事件上使用 GitLab Webhook 触发 Jenkins 多分支管道作业 当我测试 Webhook 时 我收到以下消息 Hook 执行成功但返回 HTTP 409 当我设置不同的 GitLab Webhook 例如

随机推荐