ubuntu安装配置Jenkins与SonarQube
Xhofe Lv3

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。

Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

Jenkins安装部署所需条件及作用

Jenkins安装部署所需条件

机器要求
  • 最少256 MB 的内存,建议大于 512 MB
  • 10 GB 的硬盘空间(用于 Jenkins 和 Docker 镜像)
环境要求
  • Java 8 ( JRE 或者 JDK 都可以)
  • Docker (如果需要使用docker来部署)
  • Maven (如果需要使用Maven构建项目)
  • Tomcat (如果基于Tomcat安装)

Jenkins的作用

Jenkins的主要作用是用来做CI&CD,在软件工程中,CI / CD或CICD通常是指持续集成以及持续交付或持续部署的组合实践(from wiki)。具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持。

所以在此处,Jenkins的主要作用是,我们将代码提交到SVN,Jenkins自动从SVN获取最新的代码,然后进行一系列自动的打包、测试、部署的工作,不需要我们手动去完成。

Jenkins安装部署

首先是JDK的安装

1
2
3
cd /mnt/java
wget xxx.com/jdk-8u251-linux-x64.tar.gz
tar -zxvf jdk-8u251-linux-x64.tar.gz

因为环境变量中已经配置了Jdk1.7,所以不再配置环境变量。

然后是安装Maven ;

安装maven
1
2
3
4
5
6
7
8
9
10
mkdir /mnt/maven
cd /mnt/maven
wget xxx.com/apache-maven-3.6.3-bin.tar.gz
tar -zxvf apache-maven-3.6.3-bin.tar.gz
vim /etc/profile
# 添加
export M2_HOME=/mnt/maven/apache-maven-3.6.3
export PATH=${M2_HOME}/bin:$PATH
#使环境变量生效
source /etc/profile
更改默认的仓库位置与maven阿里云镜像:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 新建仓库文件夹
mkdir /mnt/maven/repository
# 备份默认的配置文件
cd /mnt/maven/apache-maven-3.6.3/conf
cp settings.xml settings-backup.xml
vim settings.xml
# 在settings标签中添加
<localRepository>/mnt/maven/repository</localRepository>
# 添加mirrors子节点
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>

安装Jenkins

此处采用war包方式安装:

  • 首先设置Jenkins_home

    1
    2
    3
    4
    5
    6
    7
    8
    # 创建文件夹
    mkdir /mnt/jenkins
    mkdir /mnt/jenkins/jenkins-home
    vim /etc/profile
    # 添加
    export JENKINS_HOME=/mnt/jenkins/jenkins-home
    #使环境变量生效
    source /etc/profile
  • 拉取免安装war包(建议先在本地下载,然后在传上去)

    1
    2
    cd /mnt/jenkins
    wget http://mirrors.jenkins.io/war-stable/2.249.1/jenkins.war
  • 添加Jenkins运行脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    cd /mnt/jenkins
    # 新建日志存放目录
    mkdir jenkins-logs
    vim run.sh
    # 添加
    #!/bin/bash
    pid=`ps -ef | grep jenkins.war | grep -v 'grep'| awk '{print $2}'| wc -l`
    if [ "$1" = "start" ];then
    if [ $pid -gt 0 ];then
    echo 'jenkins is running...'
    else
    /mnt/java/jdk1.8.0_251/bin/java -jar jenkins.war --httpPort=8080 >jenkins-logs/log1.log 2>&1 &
    echo 'jenkins is starting'
    fi
    elif [ "$1" = "stop" ];then
    exec ps -ef | grep jenkins | grep -v grep | awk '{print $2}'| xargs kill -9
    echo 'jenkins is stop..'
    else
    echo "Please input like this:"./run.sh start" or "./jenkins stop""
    fi
    # 赋予脚本执行权限
    chmod +x run.sh
  • 运行

    1
    bash run.sh start

Jenkins的配置

系统配置
  • 打开域名/ip:8080

  • 获取初始密码,在/mnt/jenkins/jenkins-logs/log1.log日志文件中寻找,或者

    1
    cat /mnt/jenkins/jenkins-home/secrets/initialAdminPassword
  • 输入初始密码,继续

  • 安装推荐的插件/选择插件安装,都不选,直接叉掉跳过,然后在用户名-configure-修改密码

  • 汉化:System configurationplugin manageavailable pluginsearch cn–选择Chinese simplified安装,然后重启Jenkins

  • 设置jdk和maven

    • jdk:系统管理-全局工具配置-新增JDK-别名:JDK1.8;JAVA_HOME:/mnt/java/jdk1.8.0_251
    • maven:系统管理-全局工具配置-新增Maven-别名:MAVEN3.6.3;MAVEN_HOME:/mnt/maven/apache-maven-3.6.3
  • 安装需要的插件:(勾选直接安装,视情况选择)

新建Job(此处以cloudweb为例)
  • 新建任务

  • 选择构建一个maven项目

  • 勾选丢弃旧的构建,保持构建的天数与保持构建的最大个数都填10

  • 源码管理选择git或者Subversion,填入URL

  • Credentials-添加-Jenkins-username with password

  • 构建触发器-去掉Build whenever a SNAPSHOT dependency is built勾选

  • build:root pom:pom.xml Goals and options:package -Dmaven.test.skip=true

  • 保存-立即构建

Sonarqube

SonarQube 是一个开源的代码分析平台,用来持续分析和评测代码的质量,支持检测 Java、JavaScript、C#、C、C++ 等二十几种编程语言。通过 SonarQube 可以检测出项目中潜在的Bug、漏洞、代码规范、重复代码、缺乏单元测试的代码等问题,并提供了 UI 界面进行查看和管理。

sonarqube安装

确定要使用的sonarqube版本

当前sonarqube最新版本为8.4,但是需要jdk版本至少为11,且不支持mysql5.7,最近的长期支持版本SonarQube 7.9.4 LTS也是。

所以我选择的是sonarqube 7.7,支持jdk8和MySQL 5.7.

首先下载sonarqube(建议手动下载上传)
1
2
3
mkdir /mnt/jenkins/sonarqube
cd /mnt/jenkins/sonarqube
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.7.zip
安装sonarqube
1
2
# 直接解压即可
unzip sonarqube-7.7.zip
配置sonarqube
  • 首先区mysql中新建一个数据库,名称为sonar

  • 配置sonar.properties中的数据库(这里很坑,地址填localhost无法连接,找了很久)

    1
    2
    3
    4
    5
    vim /mnt/jenkins/sonarqube/sonarqube-7.7/conf/sonar.properties
    # 添加
    sonar.jdbc.url=jdbc:mysql://xhofe.top:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false&serverTimezone=Asia/Shanghai
    sonar.jdbc.username=test
    sonar.jdbc.password=test
启动Sonarqube
  • 因为环境变量中的Java版本是1.7,而sonarqube需要的jdk是8,所以需要手动修改一下启动文件:

    1
    2
    3
    vim /mnt/jenkins/sonarqube/sonarqube-7.7/conf/wrapper.conf
    # 修改 wrapper.java.command
    wrapper.java.command=/mnt/java/jdk1.8.0_251/bin/java
  • sonarqube不能以root用户运行,所以需要创建新用户

    1
    2
    3
    4
    5
    useradd sonar
    passwd sonar
    Enter new UNIX password: sonar
    Retype new UNIX password: sonar
    chown -R sonar:sonar /mnt/jenkins/sonarqube/sonarqube-7.7
  • 修改vm.max_map_count 与max file descriptors

    1
    2
    3
    4
    5
    6
    7
    8
    9
    sudo vim /etc/sysctl.conf
    # 添加
    vm.max_map_count=655360
    # 执行
    sudo sysctl -p
    vim /etc/security/limits.conf
    # 添加
    sonar soft nofile 65536
    sonar hard nofile 65536
  • 启动

    1
    2
    3
      su sonar
    cd /mnt/jenkins/sonarqube/sonarqube-7.7/bin/linux-x86-64
    ./sonar.sh start
  • 汉化(或者手动上传)

    打开http://[url/ip]:9000/默认密码为admin/admin;

    1
    2
    3
    4
    cd /mnt/jenkins/sonarqube/sonarqube-7.7/extensions/plugins
    wget https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.27/sonar-l10n-zh-plugin-1.27.jar
    cd /mnt/jenkins/sonarqube/sonarqube-7.7/bin/linux-x86-64
    ./sonar.sh restart

与Jenkins集成

Jenkins安装SonarQube Scanner
  • Jenkins-系统管理-插件管理-可用插件-SonarQube Scanner-直接安装

  • 重启Jenkins

配置Jenkins与sonarqube集成
  • 首先,在SonarQube中生成一个Token:我的账号-安全-生成令牌-名称填Jenkins(token)

  • 然后,在Jenkins中配置连接sonarqube服务器的地址,这里用到的token就是刚才在sonarqube中创建的那个token:Jenkins-系统管理-系统配置-SonarQube servers-add sonarqube:

Name sonarqube
Server URL http://[url/ip]:9000
Server authentication token 添加-secret text-id/描述:sonarqube,secret:刚刚生成的token

保存应用

  • 最后,配置全局工具配置:Jenkins-系统管理-全局工具配置-SonarQube Scanner-新增SonarQube Scanner-

    名称:sonarqube scanner,勾选自动安装,版本选择4.0.0.1744

    保存应用。

sonarqube中配置svn(选做,如果使用git则不需要)

sonar-runner发现了.svn文件,于是启动了自己的SVN插件,去访问SVN,所以需要配置svn,配置-scm-将Disabled the SCM Sensor设置为true,在svn页面,设置svn的用户名和密码。

如何使用

在Jenkins中创建job时,post-steps中添加excute sonarqube scanner;

Analysis properties:

1
2
3
4
5
6
7
8
9
sonar.projectKey=cloudweb
sonar.projectName=cloudweb
sonar.projectVersion=1.0

sonar.language=java
sonar.sourceEncoding=UTF-8

sonar.sources=$WORKSPACE/src
sonar.java.binaries=$WORKSPACE/target/classes

保存应用。

OK~现在就点击立即构建吧。

参考

  • 本文标题:ubuntu安装配置Jenkins与SonarQube
  • 本文作者:Xhofe
  • 创建时间:2020-09-13 17:20:18
  • 本文链接:https://nn.ci/posts/jenkins-sonarqube.html
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论