一、相关概念介绍:
持续(Continuous):不断地获取反馈、响应反馈
集成(Integration):编译、打包、测试
部署(Deployment):应用组件或基本设施的代码或配置变更在产品环境生效
发布(Release):具有业务影响的功能变化对最终用户可见
交付(Delivery):可以理解为从Deployment到Release之间的阶段,强调的是一种能力,开发有能力频繁部署,业务有能力随时发布
Jenkins:开源的、可扩展的、基于Web界面的持续集成平台
Git:开源的分布式版本控制系统
GitLab:用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务
Maven:基于项目对象模型(POM)的项目管理及自动构建工具,用于编译源码并打包
Nexus:Maven私服
SonarQube:用于代码质量管理和检测的开源平台
Node.js:基于Chrome V8引擎的JavaScript运行环境
ZrLog:开源Java博客系统(编译打包发布后为zrlog-2.1.3.war)
二、准备工作(3个节点都需要执行如下操作):
1、演示环境:
演示目标:修改本地ZrLog项目的源码,通过Git提交至GitLab,如果推送master分支的代码会触发Jenkins自动使用Maven构建项目,而推送dev分支的代码则不会触发Jenkins使用Maven构建项目,项目构建完成后通过SonarQube对代码进行质量管理和检测,最终发布至远程节点的Tomcat中自动解压执行
2、关闭SELinux和firewalld
3、配置epel源
4、配置节点时间同步
5、配置主机名
6、配置/etc/hosts文件:
192.168.1.144 node1
192.168.1.145 node2
192.168.1.146 node3
7、下载所需软件包:
(1)JDK:https://www.oracle.com/technetwork/java/javase/downloads/index.html
(2)Node.js:http://nodejs.cn/download/
(3)Git:https://mirrors.edge.kernel.org/pub/software/scm/git/
(4)Maven:http://maven.apache.org/download.cgi
(5)Nexus:https://www.sonatype.com/download-oss-sonatype
(6)Tomcat:http://tomcat.apache.org/
(7)SonarQube:https://www.sonarqube.org/downloads/
(8)ZrLog:https://github.com/*4fzb/zrlog
备注:由于51CTO违禁词规则,请将上述*换成9,再进行访问
三、3个节点分别部署对应软件包:
1、node1和node3节点分别部署JDK:
(1)解压JDK:
(2)配置JDK环境变量:
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
2、node1节点部署Node.js:
(1)解压Node.js:
(2)配置Node.js环境变量:
export NODE_HOME=/usr/local/node
export PATH= N O D E H O M E / b i n : NODE_HOME/bin: NODEHOME/bin:PATH
export NODE_PATH=$NODE_HOME/lib/node_modules
备注:如果不安装Node.js,之后在构建ZrLog项目,SonarQube Scanner执行扫描时会提示“ERROR: Failed to get Node.js version. No CSS files will be analyzed.”
3、node1节点部署Git:
(1)安装依赖软件包:
(2)编译安装Git:
(3)配置Git环境变量:
export PATH=/usr/local/git/bin:$PATH
(4)查看Git版本信息:# git --version
备注:yum方式安装的Git版本为1.8.3,版本太低
(5)创建本地用于存放ZrLog源码的目录:# mkdir -pv /projects
(6)初始化Git仓库,并克隆ZrLog源码:
4、node2节点部署GitLab:
(1)创建清华大学开源软件镜像站的yum仓库,下载速度快:
[gitlab-ce]
name=GitLab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
(2)安装GitLab:# yum -y install gitlab-ce
(3)修改gitlab.rb配置文件:
注释代码:external_url ‘http://gitlab.example.com’
新增代码:external_url ‘http://192.168.1.145:8000’
新增代码:nginx[‘listen_port’] = 8000
备注:可使用# gitlab-ctl help查看gitlab-ctl命令更为详细的用法
(4)配置GitLab开机自启:# systemctl enable gitlab-runsvdir.service
(5)浏览器访问http://192.168.1.145:8000,输入新密码root@123,点击“Change your password”:
登录:用户名root,密码root@123
(6)配置GitLab邮件服务:
修改如下代码:
gitlab_rails[‘smtp_enable’] = true
gitlab_rails[‘smtp_address’] = “smtp.qq.com”
gitlab_rails[‘smtp_port’] = 465
gitlab_rails[‘smtp_user_name’] = “[email protected]”
gitlab_rails[‘smtp_password’] = “QQ邮箱授权码”
gitlab_rails[‘smtp_domain’] = “qq.com”
gitlab_rails[‘smtp_authentication’] = “login”
gitlab_rails[‘smtp_enable_starttls_auto’] = true
gitlab_rails[‘smtp_tls’] = true