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

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

问题描述

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



我的设定

  • 安装jenkins


  • 在jenkins后期构建操作中,我有以下属性





  •   -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


    < blockquote>


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

    在此



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



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



    好消息是,现在使用硬编码拉请求号。但我需要动态的方式来获取pull请求号。



    有谁知道如何获取拉取请求没有。动态内部jenkins。



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




  • 安装sonarQube Runner

  • 配置Sonar

  • Git WebHook设置

  • PullRequest Builder安装程序
    < a href =https://i.stack.imgur.com/BlHVd.png =nofollow noreferrer>


    1. 创建自由风格的Jenkins作业


  • 将github网址添加到GitHub项目部分


  • 设置源代码管理部分


  • 设置建立触发器


  • 设置Sonar进行后期构建操作


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





  •   -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}:这将通过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天全站免登陆