Jenkins + Gitlab 前后端项目自动化构建部署


目录

    • 前言
    • 一、Jenkins 简介
      • 1.1 什么是 Jenkins
      • 1.2 应用场景
      • 1.3 Jenkins 特点
    • 二、Gitlab 简介
      • 2.1 什么是 Gitlab
      • 2.2 Git/Github/Gitlab 区别
      • 2.3 Gitlab 应用场景
      • 2.4 Gitlab 特点
    • 三、服务部署
      • 3.1 部署规划
      • 3.2 Gitlab 安装
      • 3.3 Jenkins 安装
    • 四、项目构建与部署
      • 4.1 Jenkins 基础配置
      • 4.2 前端项目构建
      • 4.3 后端项目构建
    • 总结

前言

随着公司业务量的增大,以及我们的项目的迭代更新,这时我们就需要快速的部署相关项目代码。因此在我们的测试环境中,可以使用这种方式来实现自动拉取代码并部署,起到自动拉取代码的关键在于 webhook 配置,通过 webhook ,也就是我们所说的网络钩子,它会探测到 Gitlab 代码托管平台上有代码的提交,进而钩取相关的代码到对应的服务器,实现一种自动化部署,无需手动操作,极大地提升了我们的工作效率。接下来就来介绍一下这一套自动化部署的工作流程。

一、Jenkins 简介

1.1 什么是 Jenkins

Jenkins 是一个独立的开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是 Hudson,是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。Jenkins 可以通过本机系统包 Docke 安装,甚至可以通过安装Java Runtime Environment 的任何机器独立运行。

1.2 应用场景

  • 用于持续、自动地构建/测试软件项目。
  • 监控一些定时执行的任务。
  • 用于测试环境中快速自动部署。

1.3 Jenkins 特点

  • 开源免费;
  • 支持跨平台;
  • master/slave 支持分布式的 build;
  • 安装配置简单;
  • 丰富的插件支持;
  • 自动构建。

二、Gitlab 简介

2.1 什么是 Gitlab

GitLab是一个基于Git的平台,它集成了许多用于软件开发和部署以及项目管理的基本工具 。

2.2 Git/Github/Gitlab 区别

Git 是版本控制系统,Github是在线的基于Git的代码托管服务。 GitHub是2008年由Ruby on Rails编写而成。GitHub同时提供付费账户和免费账户。这两种账户都可以创建公开的代码仓库,只有付费账户可以创建私有的代码仓库。 Gitlab解决了这个问题,可以在上面创建免费的私人repo。 2018年GitHub被微软收购后,为免费用户也开启了创建私人repo。

2.3 Gitlab 应用场景

  • 使用版本控制在存储库中托管代码 ;
  • 代码审核,合并请求;
  • 使用内置构建,测试和部署,实现持续集成;
  • Gitlab + docker 的应用等。

2.4 Gitlab 特点

  • 可以作为git代码仓库;
  • 方便进行CI,有灵活的配置脚本;
  • 可通过docker可以快速部署。

三、服务部署

3.1 部署规划

  • 服务器规划

    服务器 配置 对外端口 用途
    159.75.80.161(CentOS7.6) 4C/8G 22/8080 Jenkins 服务
    159.75.80.46(CentOS7.6) 4C/8G 22/80 Gitlab 服务、web 服务
    注意:部署CICD的服务器的配置需要给的高一点,否则在构建过程中会出现内存溢出的现象,导致无法构建成功。如在生产环境中给8C/16G的配置,这里仅做实验。还有就是:如果你们公司使用的是云服务器进行部署的CICD,那在构建部署到远程服务器时尽量通过内网的方式进行,否则会占用大量外网带宽,导致服务器卡顿甚至奔溃的现象。
  • Gitlab-ce
    版本:13.7.1
    资源包(国内):https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

  • Jenkins
    版本:2.263.1
    资源包(官方):http://updates.jenkins-ci.org/download/war/2.263.1/jenkins.war
    注意:Jenkins为周更新版本,最好下载稳定版的。

  • JDK
    版本:1.8.0
    资源包(官方):https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html
    资源包(国内):https://mirrors.huaweicloud.com/java/jdk/

  • Tomcat
    版本:8.5.61
    资源包(官方):https://tomcat.apache.org/

  • maven
    版本:3.6.3
    资源包(官方):https://maven.apache.org/

  • nodejs
    版本:14.15.4
    资源包(官方):https://nodejs.org/zh-cn/

  • git
    版本:1.8.3
    本次采用yum方式安装(版本不可控),可根据实际情况进行安装指定版本(比如使用编译安装)
    资源包(官方):https://git-scm.com/

3.2 Gitlab 安装

1、添加 Gitlab-ce 的 yum 源

vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
gpgcheck=0
Enabled=1
Gpgkey=https://packages.gitlab.com/gpg.key

2、yum 安装

yum -y install gitlab-ce-13.7.1

3、查看安装的 Gitlab 版本

head -1 /opt/gitlab/version-manifest.txt
gitlab-ce 13.7.1

4、编辑配置文件

vim /etc/gitlab/gitlab.rb
external_url 'http://159.75.80.46'   # 此处修改为本机IP或域名(如果有域名)

5、初始化

gitlab-ctl reconfigure

至此 Gitlab 已经安装完成,并已经启动。

6、验证

浏览器URL栏输入http://159.75.80.46/,看到如下界面证明安装成功,接下来就是具体操作,其使用方方法在我前面的博客中有具体写到,感兴趣的朋友可以去看看Gitlab Server部署及代码提交处理流程。

Jenkins + Gitlab 前后端项目自动化构建部署_第1张图片

3.3 Jenkins 安装

由于 Jenkins 版本是周更新的,所以我们可以根据需求选择稳定版进行安装。

1、安装环境

# Java
tar xzf jdk-8u261-linux-x64.tar.gz -C /usr/local/
mv /usr/local/jdk1.8.0_261/ java
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin

# maven
tar xzf apache-maven-3.6.3-bin.tar.gz -C /usr/local/
mv /usr/local/apache-maven-3.6.3/ maven
vim /etc/profile.d/maven.sh
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin

# nodejs
tar xf node-v14.15.4-linux-x64.tar.xz -C /usr/local/
mv /usr/local/node-v14.15.4-linux-x64/ nodejs
vim /etc/profile.d/nodejs.sh
export NODE_HOME=/usr/local/nodejs
export PATH=$PATH:$NODE_HOME/bin

2、安装 Tomcat

tar xzf  apache-tomcat-8.5.61.tar.gz -C  /usr/local/
mv /usr/local/apache-tomcat-8.5.61/ tomcat

3、下载资源包

wget http://updates.jenkins-ci.org/download/war/2.263.1/jenkins.war

4、部署 Jenkins

方式一:
cd /usr/local/tomcat/webapps/
rm -rf ./*
mv /root/jenkins.war .              # 无需手动解压,本次采用此方式
/usr/local/tomcat/bin/startup.sh    # 启动Tomcat

方式二:
cd /usr/local/tomcat/webapps/ROOT/
rm -rf ./*
mv /root/jenkins.war /usr/local/tomcat/webapps/ROOT/
jar -xf /usr/local/tomcat/webapps/ROOT/jenkins.war    # 需手动解压
/usr/local/tomcat/bin/startup.sh                      # 启动Tomcat

5、验证

浏览器URL栏输入http://159.75.80.161:8080/jenkins/,如果是方式二,则输入http://159.75.80.161:8080/即可。然后cat一下页面红色方框中的内容即可得到初始管理员密码,复制粘贴即可。

忘记截图了。。。哈哈(很简单的)

四、项目构建与部署

4.1 Jenkins 基础配置

1、插件

nodejs              # 构建前端项目
maven integration   # 构建后端项目
webhook             # 自动化构建(网络钩子)
gitlab              # 基础配置
git plugin          # 基础git
publish over ssh    # 连接远程服务器
....

2、全局配置

Jenkins + Gitlab 前后端项目自动化构建部署_第2张图片

3、系统配置

Jenkins + Gitlab 前后端项目自动化构建部署_第3张图片

Jenkins + Gitlab 前后端项目自动化构建部署_第4张图片
Jenkins + Gitlab 前后端项目自动化构建部署_第5张图片
Jenkins + Gitlab 前后端项目自动化构建部署_第6张图片

4.2 前端项目构建

1、新建工程/配置

Jenkins + Gitlab 前后端项目自动化构建部署_第7张图片
Jenkins + Gitlab 前后端项目自动化构建部署_第8张图片

Jenkins凭据说明:

Jenkins + Gitlab 前后端项目自动化构建部署_第9张图片

2、构建

以上配置都完成后,点击立即构建,等待构建结果。以下为构建成功的实例:

Jenkins + Gitlab 前后端项目自动化构建部署_第10张图片

3、验证

去我们的远程web服务器上去看看是否执行成功:

在这里插入图片描述

到这里可能有人会有疑问:webhook的效果怎么展现呢?
实际上我上面的结果是我进行的第二次构建,第一次构建是没有推送代码的手动构建;
第二次构建时代码推送后触发webhook进行自动构建的结果。

到此,前端项目构建完成!!

4.3 后端项目构建

1、新建工程/配置

Jenkins + Gitlab 前后端项目自动化构建部署_第11张图片
Jenkins + Gitlab 前后端项目自动化构建部署_第12张图片

2、构建

以上配置都完成后,点击立即构建,等待构建结果。以下为构建成功的实例:

Jenkins + Gitlab 前后端项目自动化构建部署_第13张图片

3、验证

去我们的远程web服务器上去看看是否执行成功:

在这里插入图片描述

同样,和前端构建一样,我这里也是第二次进行构建了,所以webhook的效果就无法体现了,大家可以去亲自体验一下。

到此,后端项目构建完成!!

总结

从上面的两个实例不难看出,Jenkins + gitlab使我们的工作效率得到了很大的提升,没有部署CICD之前,打包构建都需要开发手动进行,然后再把数据包发给我们运维人员进行上线,相对于自动化构建来说还是比较麻烦的,有了CICD之后,开发人员只需要向gitlab服务提交代码,就可实现前后端项目自动化构建。更多资料大家可以参照gitlab、Jenkins官方文档,里面讲得很详细。

<点击跳转至开头>

你可能感兴趣的:(CICD,运维,linux,tomcat)