• 基于 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. 1. 安装相关依赖
    2. yum -y install policycoreutils openssh-server openssh-clients postfix
    3. 2. 启动ssh服务&设置为开机启动
    4. systemctl enable sshd && sudo systemctl start sshd
    5. 3. 设置postfix开机自启,并启动,postfix支持gitlab发信功能
    6. systemctl enable postfix && systemctl start postfix
    7. 4. 开放ssh以及http服务,然后重新加载防火墙列表
    8. firewall-cmd --add-service=ssh --permanent
    9. firewall-cmd --add-service=http --permanent
    10. firewall-cmd --reload
    11. 如果关闭防火墙就不需要做以上配置
    12. 5. 下载gitlab包,并且安装
    13. 在线下载安装包:
    14. wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x
    15. 86_64.rpm
    16. 安装:
    17. rpm -i gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
    18. 6. 修改gitlab配置
    19. vi /etc/gitlab/gitlab.rb
    20. 修改gitlab访问地址和端口,默认为80,我们改为82
    21. external_url 'http://192.168.220.170:82'
    22. nginx['listen_port'= 82
    23. 7. 重载配置及启动gitlab
    24. gitlab-ctl reconfigure
    25. gitlab-ctl restart
    26. 8. 把端口添加到防火墙
    27. firewall-cmd --zone=public --add-port=82/tcp --permanent
    28. firewall-cmd --reload
    29. 启动成功后,看到以下修改管理员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. 1)安装JDK
    2. Jenkins需要依赖JDK,所以先安装JDK11
    3. yum install -y java-11-openjdk*
    4. 安装目录为:/usr/lib/jvm
    5. 2)获取jenkins安装包
    6. wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo --no-check-certificate
    7. rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
    8. yum install jenkins
    9. 3)启动Jenkinssystemctl start jenkins
    10. 4)打开浏览器访问
    11. http://192.168.220.172:8080
    12. 注意:本服务器把防火墙关闭了,如果开启防火墙,需要在防火墙添加端口
    13. 5)获取并输入admin账户密码
    14. cat /var/lib/jenkins/secrets/initialAdminPassword
    15. 6)跳过插件安装
    16. 因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经过会失败,所以我们暂时先跳过插件安装

    第二种安装:

     Jenkins本地安装:下载jenkins.war包,放在tomcat的webapps下,运行tomcat。

    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服务器

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

     

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

    图片

    图片

    tomcat已经部署成功!

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

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

    Maven安装和配置

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

    配置环境变量

    1. export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
    2. export MAVEN_HOME=/opt/maven
    3. 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”:

    图片

    图片

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

  • 相关阅读:
    经验分享|甘肃某中型灌区信息化管理平台案例
    牛客刷题——剑指offer(第三期)
    反转链表的几种方式(兼顾每日刷题Day15)
    自动填充字段值
    Node.js |(七)express案例实践:记账本 | 尚硅谷2023版Node.js零基础视频教程
    第24章_瑞萨MCU零基础入门系列教程之内部温度传感器-TSN
    拉索回归(Lasso)算法原理讲解
    Hive sqoop 数据迁移
    Javascript【触屏事件、移动端常见特效、移动端常用开发插件、移动端常用开发框架】
    【深度学习】argparse模块一些学习心得体会(2)| parser.parse_known_args() |位置参数 可选参数
  • 原文地址:https://blog.csdn.net/weixin_45623111/article/details/136651284