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 | cd /mnt/java |
因为环境变量中已经配置了Jdk1.7,所以不再配置环境变量。
然后是安装Maven ;
安装maven
1 | mkdir /mnt/maven |
更改默认的仓库位置与maven阿里云镜像:
1 | # 新建仓库文件夹 |
安装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
2cd /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
22cd /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 configuration
–plugin manage
–available plugin
–search 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 | mkdir /mnt/jenkins/sonarqube |
安装sonarqube
1 | # 直接解压即可 |
配置sonarqube
-
首先区mysql中新建一个数据库,名称为
sonar
-
配置
sonar.properties
中的数据库(这里很坑,地址填localhost无法连接,找了很久)1
2
3
4
5vim /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
3vim /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
5useradd 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
9sudo 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
3su sonar
cd /mnt/jenkins/sonarqube/sonarqube-7.7/bin/linux-x86-64
./sonar.sh start -
汉化(或者手动上传)
打开
http://[url/ip]:9000/
默认密码为admin/admin;1
2
3
4cd /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 | sonar.projectKey=cloudweb |
保存应用。
OK~现在就点击立即构建吧。
参考
- 本文标题:ubuntu安装配置Jenkins与SonarQube
- 本文作者:Xhofe
- 创建时间:2020-09-13 17:20:18
- 本文链接:https://nn.ci/posts/jenkins-sonarqube.html
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!