GitLab + Jenkins 持续集成实验手册
适用场景:从零搭建一套完整的代码托管 + 持续集成 + 自动发布环境。开发者在 IDEA 中把代码推送到 GitLab ,Jenkins 从 GitLab 拉取代码,使用 Maven 编译打包(jar),再通过 Publish over SSH 自动发布到目标 Web 服务器 并启动运行。
本手册基于实际实验日志整理,已剔除调试过程中的报错与反复,保留完整、顺畅的标准操作流程。
实验拓扑与主机规划
text
┌──────────────────────────┐
开发机 IDEA ──▶│ GitLab 10.1.8.130:82 │ 代码仓库(gitlab.ningcode.cn)
└────────────┬─────────────┘
│ 拉取源码
▼
┌──────────────────────────┐
│ Jenkins 10.1.8.131:8080 │ 持续集成(jenkins.ningcode.cn,Docker 容器)
└────────────┬─────────────┘
│ Publish over SSH 发布 jar
▼
┌──────────────────────────┐
│ Web 10.1.8.132 │ 目标服务器(web.ningcode.cn)
│ /usr/local/test │ 应用运行目录
└──────────────────────────┘
| 主机 | 主机名 | IP 地址 | 系统 | 部署软件 | 端口 |
|---|---|---|---|---|---|
| 代码仓库服务器 | gitlab.ningcode.cn | 10.1.8.130 | CentOS 7 | GitLab CE 12.4.2 | 82(Web)、22(SSH) |
| 持续集成服务器 | jenkins.ningcode.cn | 10.1.8.131 | CentOS 7 | Docker CE 26.1.4 + Jenkins 2.346.3 容器 | 8080(Jenkins) |
| 目标 Web 服务器 | web.ningcode.cn | 10.1.8.132 | CentOS 7 | 应用运行环境(JDK 等) | 22(SSH) |
说明:三个节点的 IP/主机名按本实验实际环境填写,部署时替换成自己的地址即可。GitLab 使用 82 端口是为了与宿主机其他服务区分(也可直接用 80)。
Idea配置测试


一、GitLab 代码仓库服务器部署
1.1 基础环境准备
① 查看本机 IP,确认网络环境
shell
ip -br a
# ens33 UP 10.1.8.130/24
② 设置主机名
shell
hostnamectl set-hostname gitlab.ningcode.cn
bash # 刷新主机名提示符
③ 安装依赖软件包
GitLab 依赖 SELinux 策略工具与 SSH 服务,先安装并升级相关软件包:
shell
yum -y install policycoreutils openssh-server openssh-clients
④ 启动 sshd 与 postfix
shell
systemctl enable sshd --now
systemctl enable postfix --now
知识补充:postfix 用于 GitLab 发送通知邮件(注册确认、找回密码等);sshd 用于 SSH 连接与后续 Git 的 SSH 协议访问。
⑤ 防火墙放行基础服务
shell
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
1.2 安装 GitLab CE
① 下载 GitLab CE 安装包
官方 yum 源在国内访问较慢,可先用浏览器/下载工具下载 rpm 包,再上传到服务器。下载地址(清华镜像):
text
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
说明:GitLab CE 12.4.2 支持 el6/el7 系统,本实验使用 el6 版本包在 CentOS 7 上安装,功能完全一致。
② 上传安装包并安装
在服务器终端使用 rz 上传 rpm 包,然后安装:
shell
rz -E # 选择 gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
rpm -ivh gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
安装完成后会提示:
text
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
这说明还需要配置访问地址(下一步)。
1.3 修改 GitLab 配置(访问地址与端口)
编辑主配置文件:
shell
vim /etc/gitlab/gitlab.rb
修改两处:
ruby
# 第 23 行附近:改成自己的 IP + 端口
external_url 'http://10.1.8.130:82'
# 第 1112 行附近:让内置 Nginx 监听 82 端口
nginx['listen_port'] = 82
知识补充:
external_url是 GitLab 对外访问的统一入口地址,所有生成链接(项目地址、clone 地址、CI 回调等)都以它为前缀;nginx['listen_port']必须与 external_url 中的端口保持一致,否则会出现页面打不开或链接 404 的问题。
1.4 初始化并启动 GitLab
shell
gitlab-ctl reconfigure
reconfigure 是 Omnibus 方式安装 GitLab 的核心命令,它会执行 Chef 初始化流程,自动完成:
- 安装配置内置组件:PostgreSQL(数据库)、Redis(缓存)、Nginx(Web 入口)、Gitaly(Git 存储)、Sidekiq(后台任务)、Prometheus(监控)等;
- 生成各组件配置文件与密钥;
- 创建数据目录(/var/opt/gitlab/);
- 启动全部服务。
初始化完成后重启所有服务使配置生效:
shell
gitlab-ctl restart
放行 82 端口:
shell
firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload
浏览器访问 http://10.1.8.130:82 即可打开 GitLab 登录页。
1.5 管理员账号与用户管理(rails console)
首次安装 GitLab 会自动生成管理员账号 root,初始密码保存在:
text
/etc/gitlab/initial_root_password
注意:该密码文件仅在安装后 24 小时内存在,请及时登录并修改密码。
如果需要批量查看/修改用户,可以进入 Rails 控制台(生产环境)操作:
shell
sudo gitlab-rails console -e production
查看全部用户:
ruby
irb(main):001:0> User.all.each{|u| puts "id:#{u.id} username:#{u.username} email:#{u.email}"}
# id:2 username:wang email:susan@qq.com
# id:1 username:root email:admin@example.com
按用户名查找并重置密码:
ruby
user = User.find_by(username: 'wang')
user.password = '新密码'
user.password_confirmation = '新密码'
user.skip_reconfirmation!
user.save!
输入 exit 退出控制台。
知识补充:
gitlab-rails console直接操作 GitLab 底层数据(Rails ORM),适合批量创建用户、重置密码、修改项目属性等网页端不好操作的任务,执行前建议先备份数据库。
二、目标 Web 服务器准备
Web 服务器是 Jenkins 发布 jar 包的落地点。
① 查看 IP 并设置主机名
shell
ip -br a
# ens33 UP 10.1.8.132/24
hostnamectl set-hostname web.ningcode.cn
bash
② 创建发布目录
Publish over SSH 插件发布时需要目标目录真实存在,提前创建:
shell
mkdir /usr/local/test
说明:/usr/local/test 就是 Jenkins 后续推送 jar 包和启动脚本的目标目录,可自定义,但需与 Jenkins 端配置保持一致。
三、Jenkins 持续集成服务器部署(Docker 容器化)
Jenkins 采用 Docker 容器方式部署,整体流程:安装 Docker → 导入 Jenkins 镜像 → docker-compose 启动 → 配置插件源/工具链。
3.1 安装 Docker CE
① 清理系统自带旧版 Docker
shell
yum remove docker docker-common docker-selinux docker-engine
② 安装 Docker 依赖工具
shell
yum install -y yum-utils device-mapper-persistent-data lvm2
③ 配置华为云 Docker 软件源
shell
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
sed 将仓库地址中的 download.docker.com 全部替换为华为云镜像地址,之后 yum 安装就走国内源,速度快很多。
④ 安装 Docker CE
shell
yum makecache fast
yum install docker-ce
本实验安装版本:docker-ce 26.1.4(含 containerd.io、docker-buildx-plugin、docker-compose-plugin 等依赖)。
3.2 配置镜像加速器
shell
vim /etc/docker/daemon.json
json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
重启 Docker 使其生效:
shell
systemctl daemon-reload
systemctl restart docker
systemctl status docker
# Active: active (running)
知识补充:daemon.json 是 Docker 守护进程的配置文件,registry-mirrors 用于配置镜像加速源,解决官方仓库拉取慢/超时的问题。
3.3 导入 Jenkins 镜像
内网环境无法直接从 Docker Hub 拉取镜像时,可在有网环境 docker pull jenkins/jenkins:2.346.3-lts-jdk8 后导出,再上传到服务器导入。
shell
rz -E # 上传 jenkins_2.346.tar
docker load -i jenkins_2.346.tar
# Loaded image: jenkins/jenkins:2.346.3-lts-jdk8
说明:2.346.3-lts-jdk8 是 Jenkins LTS 长期支持版,镜像内自带 JDK 8,开箱即用。
3.4 准备 docker-compose 编排工具
上传 docker-compose 二进制文件到服务器并安装到 PATH:
shell
chmod +x docker-compose
mv docker-compose /usr/local/bin/
docker-compose version
3.5 编写 docker-compose.yml 并启动
shell
mkdir -p /usr/local/docker/jenkins_docker
cd /usr/local/docker/jenkins_docker/
vim docker-compose.yml
yaml
version: '3'
services:
jenkins:
image: jenkins/jenkins:2.346.3-lts-jdk8
container_name: jenkins
restart: always
ports:
- "8080:8080" # Jenkins Web 端口
- "50000:50000" # 构建代理(slave)通信端口
volumes:
- ./data:/var/jenkins_home # 数据目录挂载,容器删了配置不丢
启动容器:
shell
docker-compose up -d
3.6 修复数据目录权限
Jenkins 官方镜像默认以 jenkins 用户(UID 1000)运行,而宿主机挂载目录属主是 root,会导致容器内写不进去(日志报 Permission denied)。
解决方案:把宿主机 data 目录属主改成 UID 1000 对应的用户。
shell
chown -R ningcode.cn:ningcode.cn /usr/local/docker/jenkins_docker/data
docker-compose restart
知识补充:
id 1000可查看 UID 1000 对应的用户名;容器内 UID 与宿主机 UID 一一对应,只要宿主机目录属主 UID 是 1000,容器内 jenkins 用户就有写权限。
3.7 获取初始管理员密码
首次启动 Jenkins 会自动生成随机管理员密码,通过日志或文件查看:
shell
docker logs jenkins | grep password
# 或
cat /usr/local/docker/jenkins_docker/data/secrets/initialAdminPassword
本实验初始密码:55058aae637d4c3088e4a3983c6759b5
浏览器访问 http://10.1.8.131:8080,输入该密码完成初始化(创建管理员账号、安装推荐插件)。
3.8 切换插件更新源为国内镜像
Jenkins 默认插件源是官方站点,国内下载极慢。修改数据目录下的更新中心配置:
shell
cd /usr/local/docker/jenkins_docker/data
vim hudson.model.UpdateCenter.xml
xml
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
</site>
</sites>
重启容器生效:
shell
docker-compose restart
3.9 开启 IPv4 转发
容器访问外网(如 Maven 拉依赖、插件下载)依赖内核 IP 转发,默认是关闭的:
shell
vim /etc/sysctl.conf
# 追加一行:
net.ipv4.ip_forward = 1
sysctl -p
# net.ipv4.ip_forward = 1
docker-compose restart
3.10 离线安装插件(可选)
内网环境无法在线安装插件时,把 .jpi 插件文件直接放入插件目录即可:
shell
cd /usr/local/docker/jenkins_docker/data/plugins
rz -E # 上传需要的插件包
chown -R ningcode.cn:ningcode.cn /usr/local/docker/jenkins_docker/data
docker-compose restart
说明:本实验用到的 publish-over-ssh(Publish over SSH)、git、maven-plugin、pipeline-、workflow- 等插件均已通过此方式离线安装好。
3.11 配置 JDK 与 Maven(挂载到 Jenkins 数据目录)
Jenkins 构建 Java 项目需要 JDK 与 Maven。把工具解压到 data 目录,容器内对应路径即为 /var/jenkins_home/xxx。
① JDK 1.8
shell
cd /usr/local/docker/jenkins_docker/data
rz -E # 上传 jdk-8u171-linux-x64.tar.gz
tar -zxvf jdk-8u171-linux-x64.tar.gz
mv jdk1.8.0_171 ./jdk
验证容器内可见:
shell
docker exec -it jenkins ls /var/jenkins_home/jdk
# bin lib ...(JDK 目录结构)
② Maven 3.6.2
shell
rz -E # 上传 apache-maven-3.6.2-bin.tar.gz
tar -zxvf apache-maven-3.6.2-bin.tar.gz
mv apache-maven-3.6.2 ./maven
chown -R ningcode.cn:ningcode.cn /usr/local/docker/jenkins_docker/data/
验证:
shell
docker exec -it jenkins ls /var/jenkins_home/maven/bin
# m2.conf mvn mvn.cmd mvnDebug mvnDebug.cmd mvnyjp
四、IDEA 推送代码到 GitLab
以 Spring Boot 示例项目 mytest 为例(接口 /test 返回 Ningcode无敌)。
4.1 GitLab 侧:创建项目
-
用
root(或wang)账号登录http://10.1.8.130:82; -
右上角 新建项目 → 创建空白项目;
登录并创建项目


-
项目名称填
mytest,可见性选 私有(Private) 或 内部(Internal); -
创建完成后复制项目地址,例如:
text
http://10.1.8.130:82/root/mytest.git
4.2 IDEA 侧:本地工程关联 Git
- 打开
mytest工程,菜单 VCS → Enable Version Control Integration → Git; - VCS → Git → Remotes ,点击
+添加远程仓库:
text
Name: origin
URL: http://10.1.8.130:82/root/mytest.git
- 先把代码加入本地仓库:右键项目 → Git → Add;
- 提交代码:
Ctrl + K,填写提交信息,点击 Commit; - 推送代码:
Ctrl + Shift + K,选择origin分支,点击 Push; - 首次推送会弹出认证窗口,输入 GitLab 账号密码(如 root/密码,或 wang/密码);
- 推送成功后 IDEA 右下角提示
Push successful。


4.3 验证推送结果
回到 GitLab 网页打开 mytest 项目:
- 代码(Code) 页签下能看到
pom.xml、src等文件; - 提交(Commits) 页签能看到本次提交记录与提交人;
- 项目主页显示分支
master(或main)与提交信息。
知识补充:GitLab 项目地址支持 HTTP 与 SSH 两种协议。HTTP 每次推送需输入账号密码(可配置凭据保存);SSH 需在 用户设置 → SSH 密钥 中配置公钥后免密推送。本实验使用 HTTP 方式。
五、Jenkins 构建与自动发布配置
5.1 全局工具配置(Global Tool Configuration)
进入 系统管理 → Global Tool Configuration(全局工具配置)。
① JDK 配置
- 点击 新增 JDK;
- 名称填
JDK8; - 取消勾选 "自动安装";
- JAVA_HOME 填容器内的 JDK 路径:
text
/var/jenkins_home/jdk
② Maven 配置
- 点击 新增 Maven;
- 名称填
Maven3.6.2; - 取消勾选 "自动安装";
- MAVEN_HOME 填:
text
/var/jenkins_home/maven
配置完成后点击 应用并保存。
知识补充:由于 Jenkins 跑在容器里,这里填的路径是容器内路径(/var/jenkins_home/...),不是宿主机路径(/usr/local/docker/jenkins_docker/data/...),二者通过卷挂载一一对应。
5.2 配置 Publish over SSH(发布到 Web 服务器)
Publish over SSH 插件用于构建后把产物(jar)推送到目标服务器并执行远程命令。插件默认已安装,进入 系统管理 → 系统配置(Configure System) ,找到 Publish over SSH 区域。
① 新增 SSH Server
| 配置项 | 填写内容 |
|---|---|
| Name | web-server |
| Hostname | 10.1.8.132 |
| Username | root |
| Password | Web 服务器 root 密码 |
| Remote Directory | /usr/local/test |
② 测试连接
点击 Test Configuration,提示连接成功说明配置无误(前提:Web 服务器上已创建 /usr/local/test 目录,见第二章)。
点击 应用并保存。
知识补充:Publish over SSH 的原理是 Jenkins 通过 SSH 协议连接目标服务器,把源文件(Source files)传送到 Remote Directory,并可在 Exec command 中执行启动脚本等远程命令。用户名密码会以加密凭据形式存储在 Jenkins 中。
5.3 新建构建任务(mytest)
回到 Jenkins 首页,点击 新建任务:
- 任务名称:
mytest - 类型:构建一个自由风格的软件项目(Freestyle project)
① 源码管理(Source Code Management)
- 选择 Git;
- Repository URL:
text
http://10.1.8.130:82/root/mytest.git
- 凭据(Credentials):点击添加,填入 GitLab 的 root(或 wang)账号密码;
- Branches to build:
*/master(或*/main)。
② 构建触发器(Build Triggers)
可按需勾选:
- 轮询 SCM(Poll SCM) :定期检查 GitLab 是否有新提交,如
H/5 * * * *(每 5 分钟); - 构建后构建其他工程 / 远程触发:用于与上下游任务联动。
③ 构建(Build)
点击 添加构建步骤 → Invoke top-level Maven targets:
- Maven 版本:选择
Maven3.6.2; - 目标(Goals):
text
clean package -DskipTests
参数说明:
| 参数 | 含义 |
|---|---|
clean |
清除之前构建生成的文件(如 target 目录),确保全新构建 |
package |
编译源代码并打包,生成可执行 jar/war 文件 |
-DskipTests |
跳过单元测试的执行(仍会编译测试代码),加快构建速度 |
④ 构建后操作(Post-build Actions)
点击 添加构建后操作步骤 → Send build artifacts over SSH:
| 配置项 | 填写内容 |
|---|---|
| SSH Server | 选择 web-server(上一步配置的) |
| Transfer Set Source files | target/*.jar |
| Remote directory | test(相对 Remote Directory) |
| Exec command | 启动应用的命令,例如:cd /usr/local/test && java -jar mytest.jar & |
说明:Source files 是相对工作区(workspace)的路径;最终文件会落在 Remote Directory + Remote directory 拼接出的目录,即 /usr/local/test/test,如需直接放到 /usr/local/test 可将 Remote directory 留空或写
.。Exec command 里的启动命令按自己项目实际写法调整。
点击 应用并保存。
5.4 执行构建与验证
① 触发构建
进入 mytest 任务 → 点击 立即构建(Build Now) ;可在 构建历史 中点击构建号查看控制台输出。
构建过程依次执行:
- 从 GitLab 克隆源码到工作区
data/workspace/mytest/; - Maven 执行
clean package -DskipTests,编译并生成target/mytest.jar; - 构建后操作通过 SSH 把 jar 推送到 Web 服务器
/usr/local/test; - 执行远程启动命令,应用在 Web 服务器上运行。
② 验证结果
shell
# Jenkins 侧:确认工作区已生成 jar
docker exec -it jenkins bash
ls /var/jenkins_home/workspace/mytest/target/
# Web 服务器侧:确认 jar 已到位、进程已启动
ls /usr/local/test/
ps -ef | grep java
浏览器访问应用接口验证:
text
http://10.1.8.132:8080/test
页面/接口返回 Ningcode无敌 即代表整套流水线打通:IDEA → GitLab → Jenkins → Web。
提示:如果应用以 Docker 容器方式运行,基础镜像首次拉取较慢,建议提前在 daemon.json 中配置镜像加速器,或提前在有网环境导入镜像。
操作过程





Jenkins页面---系统管理---Global Tool Configuration(全局工具配置)

取消自动安装、指定容器中的jdk环境 /var/jenkins_home/jdk


设置容器中maven路径,设置完成后,直接应用并保存

Publish over SSH插件
用于推送到目标web服务器
查看插件默认已经安装

系统管理->Configure System(系统配置)


配置SSH目标服务器信息、目标主机root用户的密码

应用-保存,进行测试

缺少/user/local/test目录
shell
[root@web ~ 18:36:08]# mkdir /usr/local/test
到目标web服务器上创建







第2次构建-编译jar包
返回工程-配置

选择构建,添加构建步骤


clean :清除之前构建生成的文件(如 target 目录),确保全新构建
package :编译源代码并打包生成可执行文件
-DskipTests :跳过单元测试的执行(但会编译测试代码)

应用并保存,进行构建
镜像已经跑起来了,但是下载速度太慢只有几十k

六、知识总结
6.1 GitLab Omnibus 核心组件
| 组件 | 作用 |
|---|---|
| Nginx | 统一 Web 入口,转发页面/API/Git 请求 |
| PostgreSQL | 元数据库(用户、项目、权限、Issue 等) |
| Redis | 缓存与 Sidekiq 任务队列 |
| Gitaly | Git 仓库存储与 RPC 服务 |
| Sidekiq | 后台异步任务(邮件、仓库统计等) |
| Prometheus | 内置监控指标采集 |
常用管理命令:
shell
gitlab-ctl status # 查看各组件状态
gitlab-ctl reconfigure # 修改 gitlab.rb 后重新初始化
gitlab-ctl restart # 重启所有组件
gitlab-ctl tail # 跟踪日志
gitlab-rails console -e production # Rails 控制台
6.2 Jenkins 关键目录(容器内 /var/jenkins_home)
| 路径 | 作用 |
|---|---|
| secrets/initialAdminPassword | 初始管理员密码 |
| plugins/ | 插件目录(.jpi 文件) |
| workspace/<任务名>/ | 任务工作区(源码、构建产物) |
| jobs/ | 任务配置与构建记录 |
| hudson.model.UpdateCenter.xml | 插件更新源配置 |
| users/ | 用户数据 |
6.3 完整 CI/CD 流程回顾
text
IDEA 提交代码
│ git push
▼
GitLab 代码仓库(10.1.8.130:82)
│ Jenkins 触发构建
▼
Jenkins 拉取源码 → Maven clean package -DskipTests 编译打包
│ Publish over SSH
▼
Web 服务器 /usr/local/test 部署并启动应用
│
▼
浏览器访问 http://10.1.8.132:8080/test 验证
6.4 实验要点速记
- GitLab 用
external_url决定访问地址,改端口要同步改nginx['listen_port']; - Jenkins 容器化部署要解决数据目录权限(UID 1000)与插件源慢两个问题;
- 容器内工具路径是
/var/jenkins_home/jdk、/var/jenkins_home/maven,对应宿主机data/jdk、data/maven; clean package -DskipTests是 Maven 最常用的 CI 构建参数组合;- Publish over SSH 只需在 Web 服务器上有一个可写目录 + SSH 账号,即可完成自动发布。
七、附录:本实验用到的文件与版本
| 软件/文件 | 版本 |
|---|---|
| GitLab CE | 12.4.2(gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm) |
| Docker CE | 26.1.4(华为云源安装) |
| Jenkins 镜像 | jenkins/jenkins:2.346.3-lts-jdk8(docker load 导入) |
| JDK | jdk-8u171-linux-x64.tar.gz |
| Maven | apache-maven-3.6.2-bin.tar.gz |
| docker-compose | 独立二进制,安装到 /usr/local/bin |
| 示例项目 | Spring Boot 工程 mytest(GET /test → "Ningcode无敌") |
| 插件 | publish-over-ssh、git、maven-plugin、pipeline 系列(离线 .jpi) |
原手册(gitlab+jenkins.md)中的图片均为上述各环节的操作步骤截图,本手册已用文字步骤完整还原,可直接对照执行。
第3次构建-推送jar至目标服务器



bash
#到目标web服务器中查看jar包
[root@web ~ 15:41:27]# cd /usr/local/test/
[root@web test 15:41:44]# ls
target
[root@web test 15:41:52]#
[root@web test 15:41:52]# cd target/
[root@web target 15:42:02]# ls
demo-0.0.1-SNAPSHOT.jar
第4次构建-拉取docker文件
bash
#开发端创建Dockerfile
FROM openjdk:8
COPY demo-0.0.1-SNAPSHOT.jar /usr/local/
WORKDIR /usr/local
CMD java -jar demo-0.0.1-SNAPSHOT.jar
bash
#创建docker-compose.yml文件
version: '3.1'
services:
mytest:
build:
context: ./
dockerfile: Dockerfile
image: mytest:v1.0
container_name: mytest
ports:
- "8080:8080"






第5次构建-目标服务器项目运行
在web目标服务器上部署docker环境
bash
[root@web test 15:54:17]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@web test 15:54:54]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@web test 15:56:58]# systemctl disable firewalld.service --now
[root@web test 15:57:22]# setenforce 0
[root@web test 15:57:41]# yum install docker-ce -y
[root@web ~ 16:02:49]# systemctl enable docker --now
镜像加速
bash
[root@web ~ 16:05:27]# vim /etc/docker/daemon.json
[root@web ~ 16:06:49]# cat /etc/docker/daemon.json
{
"registry-mirrors": [ "https://e8e019c4e9b142a78961a95c6da13a9f.mirror.swr.myhuaweicloud.com" ]
}
重启docker服务
bash
[root@web ~ 16:06:56]# systemctl daemon-reload
[root@web ~ 16:07:51]# systemctl restart docker
[root@web ~ 16:07:57]# vim /etc/sysctl.conf
[root@web ~ 16:08:18]# sysctl -p
net.ipv4.ip_forward = 1
docker-compose工具
bash
[root@web ~ 16:09:11]# rz -E
rz waiting to receive.
[root@web ~ 16:09:33]# chmod +x docker-compose
[root@web ~ 16:09:41]# mv docker-compose /usr/local/bin/
返回工程-配置-构建后操作

进行构建,查看显示(下载openjdk:8镜像速度慢,可以多构建几次)现在web服务器上把镜像pull下来会好很多

访问目标服务器地址,可以成功访问网站

参数化构建
参数化构建是一种允许在触发构建时通过动态传入参数来定制构建流程的功能。
项目-配置-general

选择git参数

设置git参数

添加构建步骤

先执行,要拖拽到构建选项的置顶位置

先切换版本,保存,再编译打包构建

回到gitlab服务器,再项目上选择tag标签

创建新标签

设置版本号并创建

创建成功

Windows系统中idea修改TestController代码

修改docker-compose.yml代码

提交代码修改名称

push到gitlab,gitlab上查看,提交成功

创建v2.0标签

现在项目已经有两个版本

根据版本,选择构建

打开目标web服务器地址可以看到版本1.0的网页内容呈现


再继续构建版本v2.0

点击刷新网页就可以看到内容更新
