以Jenkins为主的Docker容器化CICD

目录

 

一.项目环境

二.服务器的安装与配置

三.Jenkins集成SonarQube和Target

1.Jenkins集成SonarQube

1.1首先在Jenkins服务器中安装SonarScanner(SonarScanner是一种静态代码分析工具,用于发现软件项目中的代码质量问题。它是SonarQube生态系统的一部分,能够检测和报告源代码中的潜在问题,如代码复杂性、重复代码、安全漏洞、代码覆盖率等。)

​1.2在Jenkins页面安装连接SonarScanner的插件

1.3在Jenkins页面的系统配置中添加SonarQube,用于连接到SonarQube服务器

 2.Jenkins集成Target

四.实现自由风格的CI操作(包括Jenkins集成其他服务)

1.创建web工程提交到GitLab

1.1在GitLab创建远程仓库 

1.2在IDEA创建一个Git本地仓库并推送工程到远程仓库

1.3在GitLab查看提交情况

 2.Jenkins集成GitLab并从GitLab拉取工程代码

2.1Jenkins新建自由风格的项目

​2.2在Jenkins页面集成GitLab(私有仓库需要用户名和密码)

2.3构建项目成功后,可以看见Jenkins服务器的数据卷目录下存在该项目 

 3.将从GitLab拉取的代码构建为jar包(Jenkins调用本地的maven)

3.1在Jenkins页面的项目添加构建步骤---调用顶层Maven目标

3.2再次构建项目(这里没展示了),可以看见Jenkins服务器中/var/jenkins_home/workspace/my_hellojks中新增了target目录(target目录是 Maven 构建时默认生成的目录,存放构建过程中生成的各种输出文件),target目录下有了构建好的jar包

 4.进行代码质量检测

4.1在Jenkins页面的项目添加构建步骤---Execute SonarQube Scanner

4.2再次构建项目(没展示),可以看见SonarQube的页面新增了一个项目(第二个项目,第一个项目为后续流水线创建的)

 5.在Jenkins服务器把项目构建为镜像并推送到Harbor

5.1Jenkins容器化

5.2在Jenkins服务器修改/etc/docker/daemon.json(用于连接Harbor服务器),还需重启docker服务

5.3在Jenkins页面的项目添加构建步骤---执行shell($htag为后续步骤使用)

5.4再次构建项目(没展示),可以看见Jenkins服务器中有了镜像,Harbor也有了上传过来的镜像

6.Jenkins通知目标服务器在Harbor拉取镜像

6.1在Target服务器修改/etc/docker/daemon.json---跟Jenkins服务器是一样的

6.2在Target服务器PATH路径下,具体为/usr/local/bin目录下创建脚本文件deploy.sh,赋予可执行权限:chmod +x deploy.sh(这样文件就可以在任意目录下运行)

6.3在Jenkins页面添加端口号参数和构建步骤---Send build artifacts over SSH(Jenkins使目标服务器运行脚本,传递位置参数,其中$htag为后续步骤使用)

6.4再次构建项目(没展示),可以看见Target服务器已成功拉取镜像和启动容器(带版本号的为后续操作结果)

6.5访问目标服务器启动的容器的web页面

五.实现自由风格的CD操作

1.在IDEA修改代码并推送到GitLab,GitLab给修改后的代码添加标签

2.再次修改代码并推送到GitLab,GitLab再次添加标签

3.在Jenkins页面添加Git参数与构建步骤---执行shell(此步骤要执行在最前面)

4.再次构建项目时,可以看到新增了htag参数(export_port参数是之前的步骤添加的),并且可以选择构建哪个版本

5.构建结果:

   Harbor镜像有了2.0跟3.0两个版本 

   Target服务器也有了不同版本的镜像跟用2.0版本镜像启动的容器 

6.对CD操作的个人心得

六.流水线任务CICD

1.流水线的优势

2.新建流水线任务

3.工程代码中新增Jenkinsfile文件并推送到GitLab

4.在Jenkins页面中的流水线项目进行配置

5.重新构建后会发现,新增了一个新的阶段 Checkout SCM,即从 SCM 中检出脚本。

6.流水线管理项目,通过流水线语法将项目步骤生成流水线脚本并写入Jenkinsfile文件,代码内容如下

7.再次构建项目,结果如下:

七.项目总结


一.项目环境

五台CentOS7虚拟机(Jenkins、GitLab、SonarQube、Harbor、Target),都需要安装docker和docker compose。

服务器的IP地址分别为:

GitLab:192.168.249.191

SonarQube:192.168.249.192

Harbor:192.168.249.193

Jenkins:192.168.249.194

Target:192.168.249.195

注意:GitLab服务器的内存至少为4G

系统架构图:

二.服务器的安装与配置

分别在五台CentOS虚拟机上,拉取镜像并启动容器,在容器里运行GitLab、SonarQube、Harbor、Target和Jenkins服务,并配置好相关文件。

GitLab、SonarQube、Harbor和Jenkins四台服务器的安装配置如下:

GitLab:Docker:GItLab的安装配置_不吃辣9的博客-CSDN博客

SonarQube:Docker:SonarQube的安装配置_不吃辣9的博客-CSDN博客

Harbor:Docker:Harbor的安装配置_不吃辣9的博客-CSDN博客

Jenkins:Docker:Jenkins的安装配置_不吃辣9的博客-CSDN博客

Target目标服务器:

Jenkins 通过ssh 将命令发送到目标服务器,让目标服务器从 Harbor 拉取镜像、 运行容器,
因此需要在目标服务器中创建一个接收 Jenkins 发送数据的目录,创建在 /jenkins 下。

三.Jenkins集成SonarQube和Target

1.Jenkins集成SonarQube

1.1首先在Jenkins服务器中安装SonarScanner(SonarScanner是一种静态代码分析工具,用于发现软件项目中的代码质量问题。它是SonarQube生态系统的一部分,能够检测和报告源代码中的潜在问题,如代码复杂性、重复代码、安全漏洞、代码覆盖率等。)

从SonarQube官网上下载Linux版本SonarScanner,命令:

wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-5.0.1.3006-linux.zip
使用unzip命令解压:
unzip sonar-scanner-cli-5.0.1.3006-linux.zip
移动到/var/jenkins_home/下并改名为son ar-scanner(是因为后续集成SonarScanner时需要其存在于Jenkins服务器的数据卷目录下 ):
mv sonar-scanner-5.0.1.3006-linux /var/jenkins_home/sonar-scanner
 
效果如下:

修改/var/jenkins_home/sonar-scanner/conf/sonar-scanner.properties配置文件如下:

1.2在Jenkins页面安装连接SonarScanner的插件

这里是已安装的插件,安装插件在Available plugins 

在全局工具配置中进行配置:

1.3在Jenkins页面的系统配置中添加SonarQube,用于连接到SonarQube服务器

 2.Jenkins集成Target

在系统配置中新增SSH Servers并添加

四.实现自由风格的CI操作(包括Jenkins集成其他服务)

1.创建web工程提交到GitLab

1.1在GitLab创建远程仓库 

1.2在IDEA创建一个Git本地仓库并推送工程到远程仓库

这里我使用的是IDEA,需要在IDEA创建一个Git本地仓库(由于我主要学习的是python,所以IDEA我不是特别会用,每个人学习的语言也可能会有差异,因此这里不讲Git的配置)

注意:第一次提交代码时,需要填写远程仓库的URL,clone下的http地址 

1.3在GitLab查看提交情况

 2.Jenkins集成GitLab并从GitLab拉取工程代码

2.1Jenkins新建自由风格的项目

2.2在Jenkins页面集成GitLab(私有仓库需要用户名和密码)

 2.3构建项目成功后,可以看见Jenkins服务器的数据卷目录下存在该项目 

 3.将从GitLab拉取的代码构建为jar包(Jenkins调用本地的maven)

3.1在Jenkins页面的项目添加构建步骤---调用顶层Maven目标

clean package -DskipTests" 是  Maven 命令,构建 项目并跳过运行测试。

 3.2再次构建项目(这里没展示了),可以看见Jenkins服务器中/var/jenkins_home/workspace/my_hellojks中新增了target目录(target目录是 Maven 构建时默认生成的目录,存放构建过程中生成的各种输出文件),target目录下有了构建好的jar包

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值