jenkins + sonar + github 集成 [英] jenkins + sonar + github integration

查看:46
本文介绍了jenkins + sonar + github 集成的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题:我正在设置 jenkins + sonar + github 集成以通过声纳进行自动 pullrequest 静态代码检查.

我的配置:

  1. 使用 github 安装声纳

  2. 安装 jenkins

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

<块引用>

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

  1. 令牌是从我的 github 帐户中生成的.

在这个

我添加了除了 sonar.github.pullRequest 属性之外的所有属性.我不知道如何动态获取此属性值. 似乎上述四个属性必须正常工作.

我找到了添加属性的方法 -Dsonar.github.pullRequest=pullrequestNo

好消息是它现在工作得很好,没有硬编码的拉取请求.但我需要动态方式来获取拉取请求号.

有谁知道如何获得拉取请求号.动态地在詹金斯内部.?

我发现拉取请求构建器可以工作,但我最终没有运气.我无法在声纳属性中使用拉取请求构建器环境变量.

  • 安装 sonarQube Runner
  • 配置声纳
  • Git WebHook 设置
  • PullRequest 构建器设置

    1. 创建 Free Style Jenkins 作业

  • 将 github url 添加到 GitHub 项目部分

  • 设置源代码管理部分

  • 设置构建触发器

  • 为后期构建操作设置声纳

  • 在附加属性部分提供以下声纳属性

  • <块引用>

    -Dsonar.sourceEncoding=UTF-8-Dsonar.analysis.mode=预览-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}:这将通过 github pullrequest builder 插件提供

    注意:该作业应通过 pullrequest 构建器插件触发,否则 ${ghprbPullId} 将返回空白.如果您手动运行作业,这将不起作用,因为您必须将此 ${ghprbPullId} 属性作为构建参数传递.如果您想检查可用的环境参数,请按照此 Git用于执行 Jenkins shell 脚本的环境变量

    我希望这会有所帮助.

    Problem: I am setting up jenkins + sonar + github integration for automatic pullrequest static code check through sonar.

    My Configuration:

    1. Installed Sonar with github

    2. Installed jenkins

    3. In jenkins post-build action I have the following properties

    -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
    

    1. Token was generated from my github account.

    In this link I have read that I have to provide the following properties while running sonarqube:

    I have added all except sonar.github.pullRequest properties. I don't know how do I get this property value dynamically. Seems like above four properties are must to work properly.

    Edit: I have found the way to add property -Dsonar.github.pullRequest=pullrequestNo

    And the good news is it is working perfectly fine now with hardcoded pull request no. but I need the dynamic way to get the pull request no.

    Does anyone know how to get the pull request no. dynamically inside jenkins.?

    I have found that pull request builder will work but no luck at my end. I am not able to use pull request builder environment variables inside sonar properties.

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

    解决方案

    Finally I am able to solve this issue. Here is the detail:

    1. Install Sonar with GitHub plugin.
    2. Install Jenkins with the following plugins

      • GitHub Pull Request Builder
      • SonarQube Plugin
      • GIT plugin
      • GitHub plugin

    Follow this link to setup pull request builder plugin: https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin#GitHubpullrequestbuilderplugin-EnvironmentVariables

      1. Global Jenkins System Setup:

    • Goto Manage Jenkins -> Configure System
    • Configure jdk
    • Install sonarQube Runner
    • Configure Sonar
    • Git WebHook Setup
    • PullRequest Builder Setup

      1. Create Free Style Jenkins job

    • add github url to GitHub Project section

    • Setup Source Code Management Section

    • Setup Build Trigger

    • Setup Sonar for post build actions

    • In the additional properties section provide the following sonar properties

    -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
    

    Note: The job should be triggered through pullrequest builder plugin otherwise ${ghprbPullId} will return blank. If you run the job manually this will not work for that you have to pass this ${ghprbPullId} property as a build parameter. If you want to check the environment parameter available follow this Git environment variables for use in executing Jenkins shell scripts

    I hope this helps.

    这篇关于jenkins + sonar + github 集成的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆