之前一般需要Jenkins来实现自动打包部署。不过Gitlab的CI/CD功能也可以自动部署,操作更简单。如果你也在使用 Gitlab 作为 Git 仓库,不妨试试它的 CI/CD 功能。

1、安装

通过Gitlab的CI/CD功能实现自动化部署,我们需要安装Gitlab、Gitlab Runner和Maven服务。

1.1安装Gitlab

首先,我们需要在自己的服务器上安装 Gitlab。不知道怎么安装的可以参考<10分钟搭建自己的Git仓库。

为了避免不必要的麻烦,我们可以使用以下命令运行 Gitlab 服务。注意这里添加了hostname属性,这样我们就可以通过域名访问Gitlab了,Gitlab_ROOT_password环境变量可以直接设置Gitlab中root账户的密码:

搬运工运行--分离 \

--hostname git.bilibili.com \

--publish 10443:443 --publish 1080:80 --publish 1022:22 \

--name gitlab \

--restart 总是 \

--volume /mydata/gitlab/config:/etc/gitlab \

--volume /mydata/gitlab/logs:/var/log/gitlab \

--volume /mydata/gitlab/data:/var/opt/gitlab \

-e GITLAB\ROOT\密码u003d12345678 \

gitlab/gitlab-ce:最新

然后,我们就可以通过域名git.bilibili.com访问Gitlab了。如果没有域名,可以修改本机的host文件:

192.168.7.134 git.bilibili.com

由于我们的Gitlab运行在1080端口,如果我们想无端口访问,可以使用Nginx的反向代理进行处理。不熟悉Nginx的朋友可以看看Nginx的这些精彩功能你一定不知道。以下是在Nginx的配置文件夹中添加的git.conf配置文件,如下:

服务器{

听 80; # 也支持 HTTP

服务器_name git.bilibili.com; #修改域名

位置 / {

代理_pass http://192.168.7.134:1080; # 设置代理服务访问地址

索引 index.html index.htm;

}

错误_page 500 502 503 504 /50x.html;

位置 u003d /50x.html {

根 /usr/share/nginx/html;

}

}

之后,我们就可以通过域名git.bilibili.com访问Gitlab了。输入账号密码root:12345678登录。

将我们的 SpringBoot 应用程序代码上传到 Gitlab,这样 Gitlab 就准备好了!这里需要注意的是,如果你在启动Gitlab时不指定hostname,你的项目HTTP访问地址将是容器的ID,你将无法使用该地址访问Git仓库!

1.2 安装Gitlab Runner

Gitlab 只是一个代码仓库。要实现 CI/CD,需要安装 gitlab runner。 Gitlab runner 相当于 gitlab 中任务的执行者。 Gitlab 会在需要执行任务时调用它。

首先,下载gitlab runner的Docker镜像,选择alpine bleding。这个版本非常紧凑。

码头工人拉 gitlab/gitlab-runner:alpine-bleeding

然后,使用以下命令运行 gitlab runner。

docker run --name gitlab-runner --restart 总是 \

-v /var/run/docker.sock:/var/run/docker.sock \

-v /mydata/gitlab-runner:/etc/gitlab-runner \

-d gitlab/gitlab-runner:alpine-bleeding

这时候如果我们查看Gitlab runner的容器日志,会发现如下错误:找不到config.toml文件。无需担心这个问题。当我们向 Gitlab 注册 Gitlab runner 时,会自动生成文件。

错误:无法加载配置统计 /etc/gitlab-runner/config.toml:没有这样的文件或目录 buildsu003d0

接下来,我们需要向Gitlab注册Gitlab runner,打开项目->设置->CI/CD功能,获取用于注册runner的地址和token。

接下来,使用以下命令进入 gitlab runner 容器内部。

docker exec -it gitlab-runner /bin/bash

然后,使用以下命令在容器中注册运行器。

gitlab-runner 注册

注册时会出现交互界面,提示您输入注册地址、token、执行器类型等信息。 ssh执行器可以远程执行Linux命令,如下图。

注册后我们可以发现config.toml文件已经生成了。内容如下。以后想修改runner配置的时候,直接改这个文件就好了。

并发 u003d 1

check_interval u003d 0

[会话_服务器]

会话_超时 u003d 1800

[[跑步者]]

名称 u003d “码头工人”

网址 u003d "http://192.168.7.134:1080/"

令牌 u003d “c2kpV6tX6woL8TMxzBUN”

执行者 u003d “ssh”

[runners.custom_build_dir]

[跑步者.缓存]

[runners.cache.s3]

[runners.cache.gcs]

[runners.cache.azure]

[跑步者.ssh]

用户 u003d “根”

密码 u003d "123456"

主机 u003d “192.168.7.134”

端口 u003d “22”

接下来在Gitlab上打开项目,然后在Gitlab的CI/CD设置中可以发现runner已经注册成功了!

1.3 安装Maven

spring boot项目打包需要依赖Maven。我们需要先将它安装在服务器上。一、下载Maven的Linux安装包,下载地址。

下载后,使用以下命令解压到指定目录。

光盘 /mydata

tar -zxvf apache-maven-3.8.1-bin.tar.gz

接下来修改/etc/profile文件,添加环境变量配置。

导出 MAVEN_HOMEu003d/mydata/apache-maven-3.8.1

导出 PATHu003d$PATH:$MAVEN_HOME/bin

我们可以使用 mvn -v 命令来测试 Maven 是否安装成功。

Maven 主页:/mydata/apache-maven-3.8.1

Java 版本:1.8.0_292,供应商:AdoptOpenJDK,运行时:/mydata/java/jdk1.8/jre

默认语言环境:en_US,平台编码:UTF-8

操作系统名称:“linux”,版本:“3.10.0-957.el7.x86_64”,arch:“amd64”,家族:“unix”

1.4 安装JDK

CentOS默认安装了JRE,需要安装JDK才能使用Maven。首先,下载 JDK 8。

下载后解压JDK到指定目录。

光盘 /mydata/java

tar -zxvf OpenJDK8U-jdk_x64_linux_xxx.tar.gz

mv OpenJDK8U-jdk_x64_linux_xxx.tar.gz jdk1.8

然后,在/etc/profile文件_HOME中添加环境变量Java。

vi /etc/配置文件

添加配置文件

导出 JAVA_HOMEu003d/mydata/java/jdk1.8

导出 PATHu003d$PATH:$JAVA_HOME/bin

使修改后的profile文件生效

。 /etc/profile

2、使用CI/CD部署

一切都准备好了。接下来就可以通过gitlab的CI/CD功能实现SpringBoot应用的自动部署了!首先,添加。项目根目录下的 gitlab-ci.yml 文件,里面定义了两个任务。一个任务将应用程序代码打包成Jar包并复制到指定目录,另一个任务通过运行脚本run.sh打包并运行应用程序的Docker镜像。

# 打包任务

建造工作:

阶段:构建

指定一个标签,只有带有该标签的runner才会执行

标签:

  • 码头工人

脚本:

使用 Maven 打包

  • mvn 清洁包

将jar包、Dockerfile和运行脚本复制到指定目录

  • cp 目标/mall-tiny-gitlab-1.0-SNAPSHOT.jar /mydata/build/mall-tiny-gitlab-1.0-SNAPSHOT.jar
  • cp Dockerfile /mydata/build/Dockerfile
  • cp run.sh /mydata/build/run.sh

部署任务

部署工作:

阶段:部署

标签:

  • 码头工人

脚本:

进入指定目录,执行运行脚本

  • cd /mydata/build
  • chmod +x run.sh
  • ./run.sh

需要注意的是,默认情况下,运行器只会执行具有相同标签的作业。由于我们已经为 Job 和 runner 设置了标签 docker,我们可以在这里执行它们。如果不设置标签,则需要设置运行器的编辑界面,以便运行器执行不带标签的Job。

因为我们的gitlab runner使用ssh执行器,它会登录到我们指定的服务器,执行.gitlab-ci.yml中定义的脚本命令。在此之前,我们将从 Git 仓库中获取代码。因此,我们需要修改服务器上的主机文件。

vim /etc/主机

192.168.7.134 git.bilibili.com

下一步是将脚本提交到Git仓库。提交后会在project -> CI/CD -> pipelines中找到正在执行的任务。

打开 Pipeline 详情页面,可以找到我们定义的两个任务的执行结果。

打开Job详情界面,我们可以看到任务执行过程中的日志信息输出。

如果您想手动执行 Pipeline 而不是提交触发器,可以单击 Pipelines 页面上的 Run Pipeline 按钮。

可以看到,利用它的CI/CD功能实现自动化部署,真是太好了!安装一个轻量级的gitlab runner,写一个简单的。 gitlab-ci.yml 脚本文件。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐