来源:公众号 安全随笔  原文链接:https://mp.weixin.qq.com/s/KVc4IFky1z7kZn-7bz79DQ
一、CI/CD环境介绍
本次要实现如下效果,开发人员完成功能开发并提交代码到gitlab仓库,jenkins自动完成拉取代码、编译构建、代码扫描(sonarqube)、打包,再自动化完成部署到Tomcat服务器提供访问。

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

IP地址

配置

包含功能及版本

Gitlab

192.168.220.170
2核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以上,三者之间都是有依赖关系的。
看下效果:
自动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
[email protected]: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”:

可以看到项目成功部署,可以正常访问。
END
官方站点:www.linuxprobe.com
Linux命令大全:www.linuxcool.com
刘遄老师QQ:5604215
Linux技术交流群:2636170
(新群,火热加群中……)
想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!
继续阅读
阅读原文