部署Jenkins+GitLab+Maven+Nexus+SonarQube持续集成环境

一、相关概念介绍:

持续(Continuous):不断地获取反馈、响应反馈

集成(Integration):编译、打包、测试

部署(Deployment):应用组件或基本设施的代码或配置变更在产品环境生效

发布(Release):具有业务影响的功能变化对最终用户可见

交付(Delivery):可以理解为从Deployment到Release之间的阶段,强调的是一种能力,开发有能力频繁部署,业务有能力随时发布
部署Jenkins+GitLab+Maven+Nexus+SonarQube持续集成环境_第1张图片
Jenkins:开源的、可扩展的、基于Web界面的持续集成平台

Git:开源的分布式版本控制系统

GitLab:用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务

Maven:基于项目对象模型(POM)的项目管理及自动构建工具,用于编译源码并打包

Nexus:Maven私服
部署Jenkins+GitLab+Maven+Nexus+SonarQube持续集成环境_第2张图片
SonarQube:用于代码质量管理和检测的开源平台

Node.js:基于Chrome V8引擎的JavaScript运行环境

ZrLog:开源Java博客系统(编译打包发布后为zrlog-2.1.3.war)

二、准备工作(3个节点都需要执行如下操作):

1、演示环境:
部署Jenkins+GitLab+Maven+Nexus+SonarQube持续集成环境_第3张图片
演示目标:修改本地ZrLog项目的源码,通过Git提交至GitLab,如果推送master分支的代码会触发Jenkins自动使用Maven构建项目,而推送dev分支的代码则不会触发Jenkins使用Maven构建项目,项目构建完成后通过SonarQube对代码进行质量管理和检测,最终发布至远程节点的Tomcat中自动解压执行

2、关闭SELinux和firewalld

3、配置epel源

4、配置节点时间同步

5、配置主机名

6、配置/etc/hosts文件:

vim /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:

tar -xf jdk-8u221-linux-x64.tar.gz -C /usr/local

cd /usr/local

ln -sv jdk1.8.0_221 jdk

(2)配置JDK环境变量:

vim /etc/profile.d/jdk.sh

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

. /etc/profile.d/jdk.sh

echo $JAVA_HOME

2、node1节点部署Node.js:

(1)解压Node.js:

tar -xf node-v12.10.0-linux-x64.tar.xz -C /usr/local

cd /usr/local

ln -sv node-v12.10.0-linux-x64 node

(2)配置Node.js环境变量:

vim /etc/profile.d/node.sh

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

. /etc/profile.d/node.sh

echo $NODE_HOME

备注:如果不安装Node.js,之后在构建ZrLog项目,SonarQube Scanner执行扫描时会提示“ERROR: Failed to get Node.js version. No CSS files will be analyzed.”

3、node1节点部署Git:

(1)安装依赖软件包:

yum -y install gcc perl-ExtUtils-MakeMaker curl-devel expat-devel gettext-devel openssl-devel zlib-devel

(2)编译安装Git:

tar -xf git-2.23.0.tar.xz -C /usr/src

cd /usr/src/git-2.23.0

./configure --prefix=/usr/local/git-2.23.0

make && make install

cd /usr/local

ln -sv git-2.23.0 git

(3)配置Git环境变量:

vim /etc/profile.d/git.sh

export PATH=/usr/local/git/bin:$PATH

. /etc/profile.d/git.sh

(4)查看Git版本信息:# git --version

备注:yum方式安装的Git版本为1.8.3,版本太低

(5)创建本地用于存放ZrLog源码的目录:# mkdir -pv /projects

(6)初始化Git仓库,并克隆ZrLog源码:

cd /projects

git init

git clone https://github.com/*4fzb/zrlog.git

部署Jenkins+GitLab+Maven+Nexus+SonarQube持续集成环境_第4张图片

ls -a

ls -a .git

ls -a zrlog

4、node2节点部署GitLab:

(1)创建清华大学开源软件镜像站的yum仓库,下载速度快:

vim /etc/yum.repos.d/gitlab-ce.repo

[gitlab-ce]

name=GitLab CE Repository

baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/

gpgcheck=0

enabled=1

yum clean all

yum makecache

yum repolist

(2)安装GitLab:# yum -y install gitlab-ce
部署Jenkins+GitLab+Maven+Nexus+SonarQube持续集成环境_第5张图片
(3)修改gitlab.rb配置文件:

vim /etc/gitlab/gitlab.rb

注释代码:external_url ‘http://gitlab.example.com’

新增代码:external_url ‘http://192.168.1.145:8000’

新增代码:nginx[‘listen_port’] = 8000

gitlab-ctl reconfigure

部署Jenkins+GitLab+Maven+Nexus+SonarQube持续集成环境_第6张图片
部署Jenkins+GitLab+Maven+Nexus+SonarQube持续集成环境_第7张图片

gitlab-ctl status

部署Jenkins+GitLab+Maven+Nexus+SonarQube持续集成环境_第8张图片

systemctl status gitlab-runsvdir.service

ps aux | grep gitlab

ss -tunlp | grep 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”:
部署Jenkins+GitLab+Maven+Nexus+SonarQube持续集成环境_第9张图片
登录:用户名root,密码root@123
部署Jenkins+GitLab+Maven+Nexus+SonarQube持续集成环境_第10张图片
部署Jenkins+GitLab+Maven+Nexus+SonarQube持续集成环境_第11张图片
(6)配置GitLab邮件服务:

vim /etc/gitlab/gitlab.rb

修改如下代码:
部署Jenkins+GitLab+Maven+Nexus+SonarQube持续集成环境_第12张图片
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

部署Jenkins+GitLab+Maven+Nexus+SonarQube持续集成环境_第13张图片

你可能感兴趣的:(python,maven,jenkins,ci)