还在使用 Jenkins?试试 Gitlab 的 CI/CD 功能
之前一般需要Jenkins来实现自动打包部署。不过Gitlab的CI/CD功能也可以自动部署,操作更简单。如果你也在使用 Gitlab 作为 Git 仓库,不妨试试它的 CI/CD 功能。 1、安装 通过Gitlab的CI/CD功能实现自动化部署,我们需要安装Gitlab、Gitlab Runner和Maven服务。 1.1安装Gitlab 首先,我们需要在自己的服务器上安装 Gitlab。不知道
之前一般需要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 脚本文件。
更多推荐
所有评论(0)