Devops架构-Jenkins-03
今日内容:
- Jenkins构建docker项目
- SonarQube漏洞分析工具上手
一、案例06:基于Docker的案例实现静态代码
1.1 环境准备
1、主机准备
主机 |
角色 |
IP |
gitlab |
代码仓库 |
10.0.0.71/172.16.1.71 |
jenkins |
jenkins、生成docker镜像 |
10.0.0.72/172.16.1.72 |
docker02 |
registry仓库、docer部署web页面 |
10.0.0.82/172.16.1.82 |
2、静态页面代码准备
使用github的开源项目:JS-Flappy-Bird-master
创建一个gitlab项目,并把源码上传上去
添加完如图所示:
1.2 创建Docker镜像(手动)
基于Nginx官方镜像,结合bird代码制作一个新的镜像
1、安装Docker,并配置阿里云加速
参考之前的笔记:https://gblog.site/2024/05/24/07_85%E6%9C%9F%E8%BF%90%E7%BB%B4/03_%E8%87%AA%E5%8A%A8%E5%8C%96%E6%9E%B6%E6%9E%84/day59-%E5%AE%B9%E5%99%A8%E6%9E%B6%E6%9E%84-docker-1/
2、bird代码放到指定目录中
3、书写Dokerfile
4、构建镜像,测试运行
网页访问,镜像能正常使用
1.3 将镜像上传到私有仓库(手动)
准备Docker私有仓库(registry),将制作好的Bird镜像,上传到私有仓库中
1、创建私有仓库
在docker02机器中,运行registry容器
2、jenkins机器配置通过http方式访问私有仓库
3、重新生成镜像,并上传到私有仓库
1.4 创建jenkins任务
将2、3创建和推送Docker镜像的任务自动化,并完成将容器部署在web服务器的任务。
0、前提准备
需要把Dockerfile放到到bird项目中,重新打tag – 2.0
1、新建自由风格任务
2、填写Git项目信息
3、创建git参数,识别项目tag
4、添加shell执行步骤(包含容器部署)
具体命令如下:
1.5 测试运行
1.5.1 正常流程
1、选择tag并运行
2、运行成功,部署正常
3、测试访问页面
1.5.1 问题汇总
1、docker机器没有配置registry仓库,导致项目运行失败,不能download镜像,报错内容
解决方法:在客户端机器加上配置
2、HOSTS不能解析
解决方法:在客户端机器加上hosts解析
二、SonarQube快速上手
2.1 SonarQube概述
2.1.1 什么是Sonar?
是一个开源的代码质量管理系统,用于检测代码中的错误,漏洞和代码规范。它可以与Gitlab、Jenkins集成,以便在项目拉取后进行连续的代码检查
2.1.2 环境要求
1、硬件要求:
SonarQube服务器的小型(个人或小型团队)实例需要至少2GB的RAM
才能高效运行,操作系统需要1GB的空闲RAM。如果您正在为大型团队或企业安装实例,需要考虑官网的附加建议。
2、软件要求:
版本 |
JDK |
数据库 |
7.7 |
1.8 |
MySQL |
10.6.0 |
17 |
从7.9后支持MySQL、PostgreSQL(PSQL)、Oracle等 |
2.2 安装SonarQube
安装版本:10.6.0,数据库选择PostgreSQL
以下操作在devops03机器(10.0.0.73)操作
配置:1C2G
2.2.1 关闭防火墙和SELinux
2.2.2 部署PSQL数据库
1、安装依赖
2、配置PSQL的yum源(版本15)
3、安装PSQL15
4、初始化数据库
5、启动服务,查看端口在5432
6、创建sonar数据库和sonar用户,并授权访问
7、修改PSQL配置文件,把认证方法改为md5
8、修改系统配置文件
2.2.3 部署SonarQube
1、获取二进制包
2、部署到/usr/local
3、创建sonar用户
4、sonarqube连接psql数据库
5、启动sonarqube(不能用ROOT启动!启动前需要先启动PSQL)
不能用root启动,只能普通用户,否则会报错!
像组件中带的elasticsearch
6、查看日志
确保服务已经成功启动,如果启动失败可以查看对应的日志文件夹
2.3 安装插件
网页访问sonarque的管理页面,默认端口9000
默认账户:admin/admin
2.3.1 安装中文语言包
页面上找到Administration –> Marketplace –> 搜索框chinese,出现一个Chinese Pack,然后点击install
重启sonarqube服务,打开页面即可改为中文
2.4 创建项目与分析
2.4.1 分析java项目(本地分析方式)
1、创建新项目
填写项目名称,之后一直下一步
3、选择分析方法 — 本地
4、创建令牌
保存生成的令牌
5、选择分析的技术 — maven
6、按指示执行命令,分析代码
分析day76用到的hello-world-war的代码
结果分析成功
2.4.2 在页面检查分析结果
2.4.3 扩展-如何分析其他语言的项目(如HTML)
未实践,了解即可,后续涉及到直接百度
1、对于java代码如何处理?需要使用sonar-scanner扫描,在jenkins主机上面部署sonar-scanner即可。
2、使用sonar-scanner扫描代码
2.5 Jenkins与SonarQube集成
2.5.1 环境准备
环境 |
ip |
gitlab |
10.0.0.71 |
jenkins |
10.0.0.72 |
sonarqube |
10.0.0.73 |
互相设置hosts
2.5.2 配置jenkins项目
沿用day76创建的05-hello-war-job
项目,修改maven构建步骤,在里面添加sonarqube检测
修改前
修改后
注意事项:
- 这个
${JOB_BASE_NAME}
对应的项目名在sonarqube中一定要有,不然会报错找不到项目
建议:
- 将jenkins的项目名和sonarqube的项目名保持一致
测试执行成功
构建时间对应,可以查看到分析结果