当前位置: 首页 > news >正文

基于 Jenkins 搭建一套 CI/CD 系统!

一、CI/CD环境介绍

本次要实现如下效果,开发人员完成功能开发并提交代码到gitlab仓库,jenkins自动完成拉取代码、编译构建、代码扫描(sonarqube )、打包,再自动化完成部署到Tomcat服务器提供访问。

环境准备三台Centos7.6机器:

服务器IP地址配置包含功能及版本
Gitlab192.168.220.1702核2GGitlab:12.4.2 (393a5bdafa2)
Jenkins192.168.220.1722核2G

Jenkins:2.364

Maven:3.8.6

Sonarqube:7.9.6 (build 41879)

JDK:11.0.16

Git:1.8.3.1

Tomcat192.168.220.1732核2G

Tomcat:8.5.82

JDK:1.8.0_342

部署过程中踩过不少坑,这套Jenkins因为需要安装较多插件,而Jenkins上的插件版本要求比较严格,所以最好实验情况下直接安装最新的Jenkins版本,这样上面的插件基本都能安装,包括Pipeline、gitlab、SSH Server等。不然遇到Jenkins插件安装不顺畅对新人挺麻烦的。

Jenkins安装最新版,那JDK也必须11以上,那也就要求sonarqube也得7.8以上,三者之间都是有依赖关系的。

看下效果:

自动git拉取代码:

maven自动构建:

sonarqube自动扫描:

自动部署:

sonarqube扫描结果:

二、CI/CD平台搭建

1)安装gitlab

1. 安装相关依赖 yum -y install policycoreutils openssh-server openssh-clients postfix 2. 启动ssh服务&设置为开机启动 systemctl enable sshd && sudo systemctl start sshd 3. 设置postfix开机自启,并启动,postfix支持gitlab发信功能 systemctl enable postfix && systemctl start postfix 4. 开放ssh以及http服务,然后重新加载防火墙列表 firewall-cmd --add-service=ssh --permanent firewall-cmd --add-service=http --permanent firewall-cmd --reload 如果关闭防火墙就不需要做以上配置 5. 下载gitlab包,并且安装 在线下载安装包: wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x 86_64.rpm 安装: rpm -i gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm 6. 修改gitlab配置 vi /etc/gitlab/gitlab.rb 修改gitlab访问地址和端口,默认为80,我们改为82 external_url 'http://192.168.220.170:82' nginx['listen_port'] = 82 7. 重载配置及启动gitlab gitlab-ctl reconfigure gitlab-ctl restart 8. 把端口添加到防火墙 firewall-cmd --zone=public --add-port=82/tcp --permanent firewall-cmd --reload 启动成功后,看到以下修改管理员root密码的页面,修改密码后,然后登录即可

添加组、创建用户、创建项目

这样用户zhangsan就拥有了itheima_group组的权限。接下来使用zhangsan用户进入组创建一个新的项目,项目名称:hello_demo

该项目仓库地址是:

http://192.168.220.170:82/itheima_group/hello-demo.git

git@192.168.220.170:itheima_group/hello-demo.git

接下来将本地的maven 工程代码上传到gitlab仓库,上传成功后如下:

到这gitlab就准备好了!

2)安装jenkins

1)安装JDK Jenkins需要依赖JDK,所以先安装JDK11 yum install -y java-11-openjdk* 安装目录为:/usr/lib/jvm 2)获取jenkins安装包 wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo --no-check-certificate rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key yum install jenkins 3)启动Jenkinssystemctl start jenkins 4)打开浏览器访问 http://192.168.220.172:8080 注意:本服务器把防火墙关闭了,如果开启防火墙,需要在防火墙添加端口 5)获取并输入admin账户密码 cat /var/lib/jenkins/secrets/initialAdminPassword 6)跳过插件安装 因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经过会失败,所以我们暂时先跳过插件安装

Jenkins安装完成后,需要替换插件更新源:需要执行以下步骤:

sed -i 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

在Manage Jenkins -- Plungin Manager -- Update Site:将url替换为清华大学的url:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

提交后,在浏览器输入:http://192.168.220.172.:8080/restart重启jenkins生效。

Jenkins准备好后,就是与gitlab集成,完成代码自动拉取的动作了。但是需要先准备如下:

安装Credentials Binding插件

要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件,拉取gitlab代码需要使用凭证的方式拉取:

再去添加gitlab认证的凭证:

还要再jenkins服务器上安装git工具和git插件:

在jenkins上准备一个项目:

到这里,jenkins拉取gitlab代码的准备条件都ok了。开始与gitlab集成吧。

保存,然后回到项目点“Build Now”:

如上图,jenkins自动去gitlab拉取代码,并且将代码工程放在如上路径下:

好了,到这里说明jenkins已经安装成功了,也安装了相关的插件和配置了jenkins的基本配置,并且完成了与gitlab的集成,完成构建自动触发代码拉取到本地。

3)部署Tomcat服务器

把Tomcat压缩包上传到192.168.66.102服务器 yum install java-1.8.0-openjdk* -y #安装JDK(已完成) tar -xzf apache-tomcat-8.5.47.tar.gz #解压 mkdir -p /opt/tomcat #创建目录 mv /root/apache-tomcat-8.5.47/* /opt/tomcat #移动文件 /opt/tomcat/bin/startup.sh #启动tomcat

注意:服务器已经关闭了防火墙,所以可以直接访问Tomcat啦,地址为:http://192.168.66.102/8080

tomcat已经部署成功!

4)配置jenkins与tomcat集成,完成CD持续部署功能

同样的,也是需要在jenkins上做大量的配置:

Maven安装和配置

tar -xzf apache-maven-3.6.2-bin.tar.gz #解压 mkdir -p /opt/maven #创建目录 mv apache-maven-3.6.2/* /opt/maven #移动文件

配置环境变量

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export MAVEN_HOME=/opt/maven export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

Jenkins全局工具配置,关联JDK和Maven

添加Jenkins全局变量

准备好后,来测试Maven构建是否生效,还是用刚刚的项目:hello_web

可以看到,项目构建成功。可以去服务器上看到war包已经生成。

war可以自动编译,还差自动部署了,有需要配置一些步骤:

安装 Deploy to container插件

添加Tomcat凭证

jenkins项目配置构建后操作

保存配置,点“Build Now”:

可以看到项目成功部署,可以正常访问。

最后:下方这份完整的软件测试 视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

http://www.jsqmd.com/news/697505/

相关文章:

  • 别再手动跑审批了!用Flowable工作流5分钟搞定一个发工资流程(附完整Java代码)
  • 解锁AMD Ryzen处理器潜能:免费开源工具SMUDebugTool终极指南
  • Java Lambda 表达式性能测试
  • 别浪费旧电脑了!手把手教你把它变成OpenWrt软路由(保姆级图文教程)
  • 别光刷题了!用AcWing语法基础课,我这样带学生搭建C++编程的第一块思维拼图
  • 【计算机毕业设计】基于Springboot的健身房管理系统+LW
  • 【VSCode容器化调试终极指南】:20年DevOps专家亲授5步零失误配置法,99%开发者忽略的关键校验点
  • Web 安全编程实战
  • Chrome插件(笔记篇)
  • 一辆智能汽车藏着上千个密钥!汽车行业 KMS 的 6 大核心应用场景深度解析
  • STM32 异步事件处理:中断、NVIC 与 EXTI 深度全书
  • 第十二天打卡 | 169.多数元素
  • 实测风速数据太长?手把手教你突破Bladed单点风100点限制的两种实用方法
  • 终极指南:如何用OpenVINO AI插件在Audacity中一键分离音乐人声与伴奏
  • 【无人机】固定翼无人机简化燃油燃烧仿真的模拟模型(Matlab代码实现)
  • 终极Windows键盘重映射指南:用SharpKeys免费解决键盘误触问题
  • C++26 contracts正式落地:从断言迁移、运行时/编译期混合检查到Profile-Guided Contract Pruning(PGCP)的5步跃迁
  • 2026年3月畅销的钢板供应商推荐,角钢/工字钢/无缝管/合金钢板/Q235B角钢/Q355B工字钢,钢板公司厂家销售 - 品牌推荐师
  • DDrawCompat:3步轻松解决Windows 11老游戏兼容性问题
  • 稀疏阵列设计避坑指南:IFT法、多阶加权怎么选?实测副瓣与计算成本对比
  • Starward:为米哈游游戏玩家打造的高效启动器与数据管理平台
  • ROS Gazebo仿真环境搭建避坑:为什么你的世界没有地面和太阳?
  • 2026 镀锌管,镀锌槽钢,镀锌角钢,镀锌方管厂家口碑推荐, 热镀锌无缝国标管材优选指南 - 海棠依旧大
  • 炉石传说脚本终极指南:快速实现自动化对战与卡组管理
  • 说明书
  • 别再死记硬背了!用这5类核心思想吃透LeetCode HOT 100(Java实现版)
  • Connery SDK:为AI应用构建标准化可执行动作的开发者工具
  • 5本免费计算机视觉入门书籍推荐与学习指南
  • 1Fichier下载管理器:突破限制的5个高效下载解决方案
  • 如何完全掌控你的微信聊天记录:免费开源工具WeChatMsg终极使用指南