当前位置: 首页 > 知识库问答 >
问题:

詹金斯声纳github集成

景鹏飞
2023-03-14

问题:我正在设置詹金斯声纳github集成,用于通过声纳自动提取请求静态代码检查。

我的配置:

>

  • 使用github安装声纳

    詹金斯

    在jenkins post build action中,我有以下属性

    -Dsonar.github.login=bhuwang   
    -Dsonar.github.repository=company/repo  
    -Dsonar.verbose=true 
    -Dsonar.analysis.mode=preview 
    -Dsonar.issuesReport.console.enable=true 
    -Dsonar.forceUpdate=true 
    -Dsonar.github.login=gitusername 
    -Dsonar.github.oauth=token
    

    我已经添加了所有除了sonar.github.pull请求属性。我不知道如何动态获取这个属性值。似乎以上四个属性必须正常工作。

    编辑:我找到了添加属性-Dsonar的方法。github。pullRequest=pullrequestNo

    好消息是,它现在使用硬编码的拉取请求号工作得非常好。但是我需要动态的方法来获得拉取请求号。

    有人知道如何在jenkins内部动态获取pull请求号吗。?

    我发现拉请求生成器将工作,但没有运气在我结束。我不能在声纳属性中使用拉请求生成器环境变量。

    https://issues.jenkins-ci.org/browse/JENKINS-24590

  • 共有3个答案

    谭曦
    2023-03-14

    看到我的项目的实现Jenkins SONAR Github与代码在https://github.com/lqtruong/ci

    全丰
    2023-03-14

    评论太长了,所以我不得不写在这里。

    在网上做了一些研究之后,我发现了一个问题,在尝试建立一个类似系统的过程中,有人在你前面几步就提出了这个问题。他们试图让这一切都与Maven一起工作,我不确定你是否也这样,但不管怎样,你都可以看到他们用来帮助他们编写脚本的链接:

    https://github.com/SonarSource/sonarqube/blob/master/travis.sh

    这表明他们需要编写一个脚本,动态地为他们检索拉数。我认为您可能需要遵循类似的方法并编写一个脚本来为您检索该号码,我相信其中一个github conf文件会出于自己的跟踪目的跟踪当前的拉取请求号码。

    这并不像你希望的那样是一个直截了当的答案,但希望这是帮助你实现目标的新信息。

    韩峰
    2023-03-14

    最后我能够解决这个问题。以下是细节:

    >

    • GitHub Pull请求生成器
    • SonarQube插件
    • GIT插件
    • GitHub插件

    按照此链接设置pull request builder插件:https://wiki.jenkins-ci.org/display/JENKINS/GitHubpull request builder插件#GitHubpullrequestbuilderplugin环境变量

      1. 全球詹金斯系统设置:

    在“附加属性”部分中,提供以下声纳属性

    -Dsonar.sourceEncoding=UTF-8 
    -Dsonar.analysis.mode=preview 
    -Dsonar.github.repository=company/repo
    -Dsonar.github.login=gitusername 
    -Dsonar.github.oauth=oauthtoken
    -Dsonar.host.url=sonarhostedurl
    -Dsonar.login=admin 
    -Dsonar.password=pass
    -Dsonar.github.pullRequest=${ghprbPullId}
    ${ghprbPullId}: this will be provided via github pullrequest builder plugin
    

    注意:作业应该通过pullrequest builder插件触发,否则${ghprbPullId}将返回空白。如果手动运行作业,则此操作将不起作用,因此必须将此${ghprbPullId}属性作为生成参数传递。如果要检查可用的环境参数,请遵循以下Git环境变量,以便在执行Jenkins shell脚本时使用

    我希望这能有所帮助。

     类似资料:
    • 我们能比较詹金斯和声纳吗?如果是,怎么做。我想知道詹金斯和声纳的优缺点。比如为什么要使用声纳,它比詹金斯有什么优势,反之亦然?

    • 我的JUnit测试覆盖范围在jenkins上构建时不会传播到声纳。声纳上的“单元测试覆盖范围”字段保持空白,但“单元测试成功”字段显示正确的值。我正在使用jacoco进行测试覆盖。在jenkins上,jacoco的报告运行良好,并在生成的html中显示了正确的覆盖率。我就是不能把它送到声纳上。 使用jenkins的Jacoco插件,我使用以下参数调用独立的声纳分析。 路径和蚁任务是正确的。也许我错

    • 我尝试使用Jenkins上的java项目运行声纳分析,使用标准的maven sonar:sonar goal,并使用post STEP>>Execute SonarQube Scanner。我使用的maven目标是。 对于SonarQube扫描仪,我使用了下面的maven目标 SonarQube版本-7.7声纳扫描仪版本-3.3.0 Jenkins版本-2.164.3 Maven版本-3.6.1

    • 如何将jenkins sonar(2.1版)插件下载并安装到jenkins(1.532版)? 我们无法使用jenkins更新中心,因为它无法连接到更新站点: 哈德逊。util。IOException2:未能从下载http://jenkins-updates.cloudbees.com/download/plugins/sonar/2.1/sonar.hpi 请注意,打开防火墙到更新站点不是我们想考

    • 我正在运行SonarQube 4.2,并且正在启动来自Jenkins的多项目(主要是JavaScript)分析。但是,我在单元测试中没有得到任何数据——这些数据是用Intern/伊斯坦布尔生成的,并输出到Junit格式。日志中没有错误。我知道报告格式很好,因为它在Jenkins中显示得很好 我的配置是:

    • 我有bash脚本构建,标记和推docker图像到存储库。这是我的Jenkinsfile的一部分; 如何使用podTemplate执行我的步骤。当我使用docker容器进行阶段构建BMF后端时,我有这些错误; 无法连接到UNIX:///var/run/Docker.sock上的Docker守护进程。docker守护进程正在运行吗? /home/jenkins/workspace/bmf/bmf-we