zoukankan      html  css  js  c++  java
  • Jenkins+Sonar搭建持续集成和代码质量检查环境

     Jenkins+Sonar搭建

    一、相关环境及下载地址

    系统:Ubuntu

    JDK:1.8

    MySQL:5.7

    软件包:

    jenkins_2.121.3_all.deb

    sonarqube-7.3.zip

    sonar-scanner-cli-3.2.0.1227-linux.zip

    其他环境:

    Maven-3.5

    Node-6.10

    PS:对于JDK,Jenkins在2.6之后就必须要求是1.8,而且只能1.8,低了高了都不支持;对于MySQL,SonarQube要求是5.6以上。

    Jenkins下载:

    https://pkg.jenkins.io/debian-stable/binary/jenkins_2.121.3_all.deb

    Sonar下载:

    https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.3.zip

    Sonar-Scanner下载:

    https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.2.0.1227-linux.zip

     

    二、软件安装

    Jenkins安装

    命令:dpkg –i jenkins_2.121.3_all.deb

    若有报错,执行# apt-get update 和# apt-get –f install, # ln -s /opt/jdk1.8.0_131/bin/java /usr/bin/java

    启动:service Jenkins start

    安装目录:

    1. pid目录:/var/run/Jenkins
    2. war目录:/usr/share/Jenkins
    3. home目录:/var/lib/Jenkins
    4. webroot目录:/var/cache/jenkins/war
    5. log目录:/var/log/Jenkins
    6. config文件:/etc/default/jenkins

    Sonar安装

    解压:unzip -o sonarqube-7.3.zip -d /usr/local/src/

    配置:修改sonar.properties,配置MySQL信息。

    启动:

    cd /usr/local/src/sonarqube-7.3/bin/linux-x86-64/

    ./sonar.sh start

    汉化:

             下载https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases的jar包到sonar安装目录的extensionsplugins目录即可。

    安装目录:(即解压目录)

    1. home目录:/usr/local/src/sonarqube-7.3
    2. log目录:/usr/local/src/sonarqube-7.3/logs
    3. temp目录:/usr/local/src/sonarqube-7.3/temp(运行时临时数据)
    4. data目录:/usr/local/src/sonarqube-7.3/data(H2数据库使用)
    5. config文件:/usr/local/src/sonarqube-7.3/conf/sonar.properties

    Sonar-Scanner安装

    解压:unzip -o sonar-scanner-cli-3.2.0.1227-linux.zip -d /usr/local/src/

    检查:./sonar-scanner –h

    安装目录:

    1. home目录:/usr/local/src/sonar-scanner-3.2.0.1227-linux
    2. config文件:/usr/local/src/sonar-scanner-3.2.0.1227-linux/conf/sonar-scanner.properties

    Nginx转发

    已申请域名:xxx

    需要配置https。

    Nginx配置:

    server {
    server_name xxx;
    listen 80;
    return 301 https://$host$request_uri;
    }


    server {
    server_name xxx;
    listen 443 ssl;
    ssl_certificate /usr/local/nginx/conf/ssl/xxx.crt;
    ssl_certificate_key /usr/local/nginx/conf/ssl/xxx.key;

    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers RC4:HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    access_log /data/weblog/nginx/xxx-access.log main;

    expires 15m;

    ssi on;
    charset utf-8;

    error_page 500 502 503 504 /50x.html;

    client_max_body_size 30m;

    client_header_buffer_size 16k;
    large_client_header_buffers 16 64k;

    location / {
    proxy_set_header Connection "";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://127.0.0.1:9000;
    }

    location /jenkins {  #需要修改jenkins配置文件添加--prefix访问url的前缀,并设置监听地址为127.0.0.1
    proxy_set_header Connection "";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://127.0.0.1:8080/jenkins;
    }

    }

    修改路径

    Jenkins修改路径

    1. 1.         pid目录修改

    a)         修改config文件(/etc/default/jenkins)的PIDFILE值,修改后的目录要保证已经存在。

    1. 2.         war目录修改

    a)         修改config文件的JENKINS_WAR值,修改完成后,需要将原war目录中的jenkins.war文件(/var/share/jenkins/jenkins.war)拷至新目录中。

    1. 3.         home目录修改

    a)         修改config文件的JENKINS_HOME值,修改完成后,需要将原home目录中的所有文件(/var/lib/jenkins/*)拷贝至新目录。

    1. 4.         log目录修改

    a)         修改config文件的JENKINS_LOG值,修改后的目录要保证存在。

    1. 5.         webroot目录修改

    a)         修改config文件中JENKINS_ARGS值的--webroot属性,修改完成后,需要将原webroot目录中的所有文件(/var/cache/jenkins/war/*)拷贝至新目录中。

    Sonar修改路径

    1. 1.         home目录修改

    a)         解压时指定解压目录即可。

    1. 2.         temp目录修改

    a)         修改config文件(sonar.properties)的sonar.path.temp值,修改后的目录要保证存在。

    1. 3.         data目录修改

    a)         修改config文件的sonar.path.data值,修改后的目录要保证存在。

    1. 4.         log目录修改

    a)         修改config文件的sonar.path.logs值,修改后的目录要保证存在。

    PS:由于Sonar启动需要使用非root账户,所以Sonar的启动账户需要对上述目录有读写权限。

    Sonar-Scanner修改路径

    home目录修改

    解压时指定目录即可。

    三、配置环境

    配置Sonarqube

    首先是Sonarqube,因为后续步骤需要Sonarqube中生成的一个Authentication Token值。

    打开Sonarqube,默认情况下是localhost:9000,登录使用admin/admin,然后会进入引导页,需要输入一个key,可以任意,输入确定后会生成一个Authentication Token值,这个比较重要,也只会显示一次,保存下来,然后按照提示操作完OK,我们只需要这个值;当然万一丢失了怎么办,不要慌张,我们重新生成,点击配置》权限》用户》令牌,如下图:

     

    弹出框中,就可以为admin账户重新生成令牌,如下图:

     

    我刚刚就生成了一个名字为new的令牌,横杠那就是令牌值,很重要,需要保存起来。

    配置Jenkins

    初始化密码

    然后Jenkins,进入的时候需要等待,网上有说可以把工作目录中刚刚生成的文件hudson.model.UpdateCenter.xml中的url修改成http://mirror.xmission.com/jenkins/updates/update-center.json,再重启可以跳过等待,大家可以试一下。如果一直等待到离线模式,那么直接点击进入系统(具体按钮名字叫啥忘记了,但是绝对不是那个代理的按钮),或者进入引导式步骤,只要在安装插件的那一步,点击右上角的叉,关闭安装跳过这部就行;不论哪种最后都会到让你输入管理员密码,然后呢,你就需要去日志文件中找生成的密码,如果不修改路劲,那么日志是在/var/log/jenkins/jenkins.log,如下图:

     

    打横线的就是初始化密码,或者去红框中的路劲找也可以的。

    进入系统之后我们看到的界面是如下图:

     

    安装Jenkins插件

    OK,我们需要去安装插件了,系统管理》插件管理》可选插件,我们搜索以下几个:

    1. Git plugin
    2. JUnit Plugin(可能已经安装)
    3. Maven Integration plugin
    4. Subversion Plug-in
    5. SonarQube Scanner for Jenkins

    安装即可,选中点击下方的直接安装,如下图:

     

    配置Sonarqube Server

    进行相关配置,为了让我们能正常运行任务,系统管理》系统设置,然后我们需要新增一个Sonarqube,如下图:

     

    点击了Add SonarQube按钮,之后就能出现框中的TAB页,name随意,Server URL必须要填写刚刚我们安装的Sonarqube服务的地址,而且一点必须是你的计算机能够打开的地址(至于为什么,后面的使用篇再讲),Server authentication token就是刚刚在Sonarqube中配置的Token值。

    配置JDK

    下一项配置,系统管理》全局工具配置,首先JDK,点击JDK安装,如下图:

    填写好当前环境的JAVA_HOME值,别名随意,重要的是去掉自动安装选项。

    配置SonarQube Scanner

    然后SonarQube Scanner安装,如下图:

     

    同样填写好SONAR_RUNNER_HOME的值,然后去掉自动安装选线。

    配置Maven

    然后Maven安装,如下图:

     

    填写好MAVEN_HOME的值,Name随意,去掉自动安装选项。

    最后,访问测试。

     注:jenkins可以升级到最新版本,并熟悉gitlab和gitlab hook等插件的使用。

    添加项目

    添加完成之后,点击构建,成功之后即可在sonar中看到代码分析的结果。

  • 相关阅读:
    python学习第三天
    python学习第二天
    如何解决自学编程的犯困问题
    python学习计划第四天-python第一天
    python学习第三天-Linux入门之二
    python第二天-Linux基础学习
    python入门第一天-Linux的学习入门
    Linux下gdb的使用
    整理一下常见的十种排序
    对指针的理解
  • 原文地址:https://www.cnblogs.com/wsjhk/p/9806843.html
Copyright © 2011-2022 走看看