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

232ff5ec285f0d317ce40bbc627e207a.png

  原文链接:https://mp.weixin.qq.com/s/KVc4IFky1z7kZn-7bz79DQ

一、CI/CD环境介绍

35d5ff33d2405caf58a14ee120be9d5a.png

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

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

服务器
IP地址
配置
包含功能及版本
Gitlab
192.168.220.1702核2G
Gitlab:12.4.2 (393a5bdafa2)
Jenkins
192.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

Tomcat
192.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以上,三者之间都是有依赖关系的。

看下效果:

9f50fdb600e449615873485e9d52ee32.png

自动git拉取代码:

cfaf241c3cb92c482ce5803fbd081c04.png

maven自动构建:

f7110149f22c0dcc864309497674b171.png

sonarqube自动扫描:

bbf5f89084bc43045979fc9d439965da.png

自动部署:

0d79af820afa649f04d3a3e630cd9df3.png

sonarqube扫描结果:

6fadd2b905f084243a1b9b753ef9ceb8.png

二、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密码的页面,修改密码后,然后登录即可

cd3d7ff561ab88f2aa9cba1768059aaa.png

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

204199217f7c15c02d1ba1ffe0e7a123.png

19768eb0ccba10b3933fbc492230781c.png

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

9d2812e2e35343884db6f6693dba5636.png

该项目仓库地址是:

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

git@192.168.220.170:itheima_group/hello-demo.git

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

261d6654541e519028148c2df9b96608.png

到这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

1af343dd544226ac32f37c50dd0084a8.png

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

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

安装Credentials Binding插件

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

af89757d728d9a925b90348788ae28c2.png

再去添加gitlab认证的凭证:

33935dad0fa711ec01e1f5c50a9e782c.png

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

d41d8b7321f516ad356febcec890511b.png

8eaa235f933a0c6a5ef350bd4ce3923e.png

在jenkins上准备一个项目:

2bab9ce966af97b0c51bb3e0f0520f23.png

778858139ece7de39c1705ea32b6aa44.png

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

8b509bfb3075eeb3516c9bdfe8683d50.png

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

7106f5e85a6d0c0ca38403eef49722b4.png

340c4c37ba02f42b34890f611728af85.png

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

3f7d8ba1c9334fa9db6578353c85c1bf.png

好了,到这里说明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

e31ed7b73bdc9427e84a53c3a2b50341.png

a047c1776d9709a6da050894d0ea6770.png

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

293b9bc75d968d36e28b86bef944c712.png

60f8eaa29498558cade960b38e841a3d.png

添加Jenkins全局变量

3701531505ec7516bd69cdc834344a02.png

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

027048ddbeb8dbecf7182deb6496ee63.png

ada308b590f6f27ce616d2de3289b249.png

e6c7b87cdd55300e1c33bb87d0650d7b.png

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

931dc4b2e856357d6ef5a8274585272e.png

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

安装 Deploy to container插件

5321d83c59b386a12d536c10cec3bc4e.png

添加Tomcat凭证

03ac57e6b3f5e0f8b91881de93e148df.png

jenkins项目配置构建后操作

b71d994a7713d2315cb1761b07939671.png

2c334aeb60e0ce9ad2ef82015aa154a8.png

保存配置,点“Build Now”:

3cced7c24277a9286d0efa5499b4be65.png

64316e01d30fd5242fe633ba94e421a1.png

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

ebc48b5c9ab59d7dd82ef6bd1bb1586d.jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins和Docker可以结合使用来实现CI/CD(持续集成/持续交付)流程。下面是一种常见的实现方式: 1. 安装和配置Jenkins:首先,你需要在你的服务器或本地机器上安装和配置Jenkins。你可以按照Jenkins官方文档提供的步骤进行安装和配置。 2. 安装Docker:接下来,你需要安装Docker,并确保Docker服务正在运行。你可以根据你的操作系统在Docker官方网站上找到相应的安装说明。 3. 创建JenkinsCI/CD Pipeline:在Jenkins中,你可以创建一个Pipeline来定义你的CI/CD流程。Pipeline是一种将多个步骤组合在一起的方式,可以通过代码进行定义和版本控制。你可以使用Jenkins的Pipeline语法或者使用Jenkins插件来定义你的Pipeline。 4. 定义Jenkins Pipeline中的步骤:在你的Pipeline中,你可以定义多个步骤来完成CI/CD流程。以下是一个可能的步骤示例: - 从代码仓库拉取代码 - 构建Docker镜像 - 运行单元测试 - 部署到测试环境 - 运行集成测试 - 部署到生产环境 5. 使用Docker构建和管理镜像:在上述步骤中,使用Docker构建和管理镜像是关键。你可以使用Dockerfile来定义镜像的构建过程,并使用Jenkins Pipeline中的相关步骤来执行构建。 6. 集成其他工具:你可以通过Jenkins插件或其他方式集成其他工具,如代码质量检查工具、部署工具等,以实现更完整的CI/CD流程。 这只是一个简单的概述,实际的CI/CD流程可以根据你的项目需求和团队实践进行定制和扩展。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值