Docker安装实践Jenkins
Docker安装实践Jenkins启动容器配置Jenkins配置SonarQubejenkins集成SonarQube欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公
Docker安装实践Jenkins
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检查出的问题,提高代码质量了。
(完^_^)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)