Jenkins是开源的CI&CD软件领导者,提供超过1000个插件支持构建、部署、自动化,满足任何项目需要。
CI,持续集成,团队内开发成员经常集成各自组件,每次集成通过自动化的构建(编译,自动化测试,打包)来验证,从而尽早的发现集成错误。(监控版本变化并自动构建)。

在这里插入图片描述

CD,持续交付,在持续集成的基础之上,将集成后的代码自动部署、自动测试,并自动或手动的部署生产环境。减少软件开发的成本和时间,减少风险。更快的给用户提供价值。
在这里插入图片描述
持续集成,自动构建,自动化测试,降低风险,量化覆盖率,代码检查,监控版本变化,回滚,自动化部署,一键部署,简化交付过程。
Jenkins特性

  • 持续集成&持续交付
  • 简易安装
  • 配置简单
  • 插件丰富
  • 可扩展
  • 分布式
  • 最广泛的CI&CD工具
    下面借助于Docker安装实践Jenkins,实现项目的构建,部署,自动化测试。 首先根据需求选择自己需要的版本,这里选择最新版本。
    下载镜像
docker pull jenkins/jenkins:lts

如果是第一次现在Docker镜像,下载会比较慢,这时候我们可以使用国内的镜像下载源,下面使用阿里云的下载源。
阿里云为注册用户提供了免费的镜像源,需要开通使用,登录阿里云控制台首页,打开容器镜像服务,镜像加速器,阿里云为您提供了专有的镜像下载URL,提高了镜像下载速度。复制链接,在/etc/docker/目录下创建daemon.json,并新增如下内容

{
  "registry-mirrors": ["https://x7resce5.mirror.aliyuncs.com"]
}

其中链接是你的专有链接,然后重启docker服务

service docker restart

启动容器

下载完成后,通过命令可以看到已经下载完成的docker镜像

[root@localhost]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
jenkins             latest              cd14cecfdb3a        2 years ago         696MB

创建Jenkins数据目录,并进入目录。

mkdir -p jenkins/data
cd jenkins

运行Jenkins容器
使用命令

docker run -itd --rm --name jenkins --privileged=true -p 80:8080 -p 50000:50000 -v $PWD/data:/var/jenkins_home jenkins/jenkins:lts

命令的意义为
-i,开启容器的标准输入STDIN
-t,容器分配伪终端
-d,后台运行容器
–rm,删除已有名称为jenkins的容器
–name jenlins,指定容器的名称为jenkins
–privileged=true,给予容器root权限,避免权限问题,根据情况使用
-p 80:8080,容器的8080端口映射到宿主机的80端口
-p 50000:50000,容器的5000端口,映射到宿主机的5000端口
-v $PWD/data:/var/jenkins_home,当前目录的data目录挂载到容器的/var/jenkins_home目录,存储jenkins数据
jenkins/jenkins:lts,指定镜像以及镜像版本
启动成功后,使用宿主机的ip进入jenkins页面

配置Jenkins

安装完成之后,安装插件,如果想要中文版,安装汉化插件。还需要安装SVN或者Git的源码管理插件,对于Java Maven的项目构建,需要安装Maven Integrate插件,还需要配置Java和Maven的环境。
对于安装插件这里不再赘述,具体的操作界面,按照页面操作操作即可。具体在Jenkins的系统管理页面可以找到。
下面使用sonarqube作为代码检查工具,检查代码质量。

配置Sonarqube

安装配置postgreSQL,作为Sonarqube的存储数据库
选择12.3版本,下载镜像

docker pull postgres:12.3

创建数据目录和日志目录,用于存储数据和目录

$ mkdir postgres
$ cd postgres
$ mkdir data
$ mkdir logs

启动postgresql容器

$ docker run --name="postgres" --privileged=true --restart=always -e POSTGRES_PASSWORD=postgres -p5432:5432 -itd -v $PWD/data:/var/lib/postgresql/data -v $PWD/logs:/var/logs/postgresql postgres:12.3

创建sonarcube使用的数据库和用户名,创建sonarcube用户,创建sonarcube数据库,并授权给sonarcube用户

$ docker exec -it postgres psql -U postgres
psql (12.3 (Debian 12.3-1.pgdg100+1))
Type "help" for help.
postgres=# 
postgres=# create user sonarqube with password 'sonarqube';
CREATE ROLE
postgres=# create database sonarqube owner sonarqube;
CREATE DATABASE
postgres=# grant all  on database sonarqube to sonarqube;
GRANT
postgres=# create schema my_schema;
CREATE SCHEMA
postgres=# ALTER USER postgres with encrypted password 'postgres';
exit

重新启动postgresql

$ docker restart postgres

安装配置SonarQube
选择lts(long time support)版本,下载镜像

$ docker pull sonarqube:lts

创建安装目录

$ mkdir sonarqube
$ cd sonarqube/
$ mkdir conf
$ mkdir extensions
$ mkdir logs
$ mkdir data

在conf目录下创建sonar.properties配置文件,并增加配置

sonar.jdbc.username=sonarqube
sonar.jdbc.password=sonarqube
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube?currentSchema=my_schema
sonar.web.host=0.0.0.0
sonar.web.port=9000

启动容器

$ docker run --restart=always --privileged=true --name="sonarqube" -p 9000:9000 -v $PWD/conf:/opt/sonarqube/conf -v $PWD/extensions:/opt/sonarqube/extensions -v $PWD/logs:/opt/sonarqube/logs -v $PWD/data:/opt/sonarqube/data sonarqube:lts

-itd,后台运行,启动stdin标准输入,并开启容器伪终端
–restart=always,设定重启策略为always,即容器退出后自动重启
–privileged=true,给予容器运行最高root权限
–name=“sonarqube”,容器名称为sonarqube
-p 9000:9000,宿主机的9000端口映射容器的9000端口
-v $PWD/logs:/opt/sonarqube/logs,当前目录下的logs目录,挂载到容器的/opt/sonarqube/logs目录
-v $PWD/extensions:/opt/sonarqube/extensions,当前目录下的extensions目录挂载到容器的/opt/sonarqube/extensions目录
-v $PWD/logs:/opt/sonarqube/logs,当前目录下的logs目录,挂载到容器的/opt/sonarqube/logs目录
-v $PWD/data:/opt/sonarqube/data,当前目录下的data目录,挂载到容器的/opt/sonarqube/data目录
sonarqube:lts,指定镜像名称和版本号
其中各个命令的意义为
测试sonar,打开 http://{ip}:9000/
默认用户名admin,默认密码admin,可以开始使用sonarqube了。

jenkins集成Sonarqube

登录搭建好的sonarqube,安装汉化包,安装需要检查的代码插件如ckeckstyle,findbugs等,在安装插件的过程会比较慢,可能需要线下安装,只需要下载插件,放到sonarqube安装目录的/extensions/plugins目录下就可以使用了。
在sonarqube中创建项目,填写项目标识。
在jenkins安装sonarqube scanner插件,创建Jenkins任务,配置Java,Maven的运行环境,配置代码库,在Post Steps栏配置如下。
在这里插入图片描述
其中Analysis properties详细如下:

sonar.host.url=http://{IP}:9000
sonar.login=admin
sonar.password=admin
sonar.projectKey=sonar中的项目标识
sonar.projectName=sonar中的项目名称
sonar.projectVersion=v1.0
sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE/service/target  #编译后的class所在路径

在jenkins构建成功后,生成的报告如下图。
在这里插入图片描述
下面就可以根据sonar检查出的问题,提高代码质量了。
(完^_^)

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐