尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

三台服务器,一套流水线:如何实现无缝自动化部署? - 详解

三台服务器,一套流水线:如何实现无缝自动化部署? - 详解
📅 发布时间:2026/6/18 4:14:06

目录

一 Gitlab

二 Jenkins

三 maven

四 tomcat

五 使用流水线方式添加任务

六 构建触发器的一些策略


SDLC (软件开发生命周期)
│
├─ 瀑布模型(传统)  → 固定流程
└─ 敏捷开发(现代) → 快速迭代│└─ DevOps(敏捷的延伸)│├─ CI/CD(自动化流水线)│      ││      ├─ GitLab CI / Jenkins / GitHub Actions│├─ 云原生(面向云的架构思想)│      ││      ├─ Docker(容器技术)│      ├─ Kubernetes(容器编排)│      └─ 微服务 / 服务网格│└─ 最终目标:快速、安全、稳定地发布软件

瀑布->敏捷:瀑布模型要求一次性把事情计划好,敏捷则强调边做边反馈边修正。

敏捷->devops:是借助持续集成/持续部署对开发测试运维协作方式的改进,是一种新体系。

devops->云原生:是借助Docker和k8s对部署架构的改进。

云原生通过 Docker、Kubernetes 和微服务等理念,将应用的运行和部署方式全面云化与自动化,让系统具备弹性、自愈、快速扩缩容、声明式运维等能力。

瀑布模型:需求 → 设计 → 开发 → 测试 → 上线 → 维护。

一步一步的实现,过程是线性的。

敏捷开发:部分交付,持续交付,持续反馈,持续改进,不断完善。

不断完善,可以及时反馈。

一 Gitlab

106服务器

GitLab 是一款开源的一体化 DevOps 平台,基于 Git 版本控制系统,为软件开发团队提供从代码托管、项目管理到持续集成 / 部署(CI/CD)、安全合规的全流程解决方案。以下从核心模块、架构、优势等维度详细介绍:

安装方式:

Gitlab安装
1. 安装相关依赖yum -y install policycoreutils openssh-server openssh-clients postfix
2. 启动ssh服务&设置为开机启动systemctl enable sshd && sudo systemctl start sshd
3. 设置postfix开机自启,并启动,postfix支持gitlab发信功能systemctl enable postfix && systemctl start postfix
4. 开放ssh以及http服务,然后重新加载防火墙列表firewall-cmd --add-service=ssh --permanentfirewall-cmd --add-service=http --permanentfirewall-cmd --reload
如果关闭防火墙就不需要做以上配置
5. 下载gitlab包,并且安装下载安装包(找合适的)https://mirrors.aliyun.com/gitlab-ce/yum/el7/安装:rpm -i gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
6. 修改gitlab配置vi /etc/gitlab/gitlab.rb修改gitlab访问地址和端口,默认为80,我们改为82external_url 'http://192.168.100.106:82'nginx['listen_port'] = 82
7. 重载配置及启动gitlabgitlab-ctl reconfiguregitlab-ctl restart
8. 把端口添加到防火墙firewall-cmd --zone=public --add-port=82/tcp --permanentfirewall-cmd --reload
启动成功后,看到以下修改管理员root密码的页面,修改密码后,然后登录即可

安装gitlab(基于docker环境)

docker pull gitlab/gitlab-ce:latest

启动命令

docker run -d --name gitlab --restart always -p 8929:80 -p 2224:22 -v /srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /srv/gitlab/data:/var/opt/gitlab -e GITLAB_OMNIBUS_CONFIG="external_url 'http://192.168.100.106:8929'; gitlab_rails['gitlab_shell_ssh_port'] = 2224;" gitlab/gitlab-ce:latest

注释:

  -v /srv/gitlab/config:/etc/gitlab \    # 配置挂载-v /srv/gitlab/logs:/var/log/gitlab \  # 日志挂载-v /srv/gitlab/data:/var/opt/gitlab \  # 数据挂载

登录展示:

这样我们的安装部署就完成了

首先我们先去创建组

创建结束再去添加项目

效果

添加用户

添加新用户

对应的人物角色

现在我们去组别当中给对应的人添加权限

 项目集成

首先先创建本地仓库,然后管理远程

然后将gitlab当中仓库当中对应的http或者ssh的url复制过来

将代码提交

推送

这样就提交过来了

idea上传项目至gitlab_idea上传代码到gitlab-CSDN博客

版本控制

二 Jenkins

105服务器

接下来安装jenkins(基于docker环境)(这里可以自行选择,基于docker,需要将挂载部分的内容处理好,要不然有些文件数据日志等在删除容器时可能会出现丢失的情况)

拉取镜像

# 拉取 Jenkins LTS 镜像(最新稳定版)
sudo docker pull jenkins/jenkins:lts

创建对应的挂载目录

# 创建数据存储目录
sudo mkdir -p /var/jenkins_home
# 赋予目录读写权限(避免容器内权限报错)
sudo chmod 777 /var/jenkins_home

启动(jenkins当中的数据都存储在。/var/jenkins_home/目录下)

docker run -d --name jenkins-lts -p 8081:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home --privileged=true jenkins/jenkins:lts

注释:

  • 如果不加 --privileged=true:jenkins 用户没有权限读写宿主机的 root 目录,会报 “Permission denied(权限不足)”,导致 Jenkins 启动失败。
  • -v /var/jenkins_home:/var/jenkins_home是将容器当中的jenkins_home进行挂载到本地的硬盘文件位置当中,避免出现容器删除而导致配置失效的问题,后续只需要继续挂载到这个地方还可以进行使用
  • 两个端口,8081是用于Web页面的访问,而50000是用于分布式构建通信

使用文档:

1首先进入对应的界面

2 缺失插件的安装 

凭据管理:可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等、以便jenkins可以和这些第三方的应用进行交互。

如果没有这个插件的话需要去安装凭证管理的插件(我这里已经安装完成)

 我们还需要在jenkins当中的插件当中去安装git的插件,同时还需要在对应的服务器当中安装Git工具

接下来我们去jenkins当中

 3 新建任务

源码管理当中选择git

这个凭证如果说在创建凭据的时候初始化的为userName与password那么这个凭证在添加时就是对应的账号与密码,但是还有ssh/http/secret等方式

地址就是对应的项目的http或者ssh地址

4 现在去对应的配置权限,先将这个插件给安装

权限的一个整体的理解为,首先jenkins用户账号是最终权限的授予者,而对应,我们需要去设置不同的权限分组进行区分,比如说全局的权限,项目的权限,组别的权限都可以去自定义,从而实现灵活的设置权限分组。

接下来讲解一下ssh方式的凭证配置

那就是说如果想要去使用ssh的便携验证,首先需要在本地去生成一个公钥一个私钥,将公钥放在Gitlab等的配置项当中,将私钥保留在本地的ssh文件当中,拉取代码时私钥与公钥之间可以快速的校验。如果jenkins所处的服务器去gitlab所处的服务器拉代码需要一套,然后本地从gitlab上面拉代码也需要一套

接下来进行配置(jenkins与Gitlab之间)

将公钥放到对应的位置

对应的创建方式,连接gitlab

然后去全局安全配置

选择对应的Role-Based Strategy

选择对应的manageandassignroles

在管理用户当中去添加用户

全局角色与项目角色

三 maven

105服务器

首先先去对应的apache官网安装对应的tar包

然后放到/root/路径下

然后解压

然后移动

然后添加环境变量

vi /etc/profile添加对应的全局变量

再把仓库地址改改

2 接下来来到jenkins的全局工具配置,来添加对应的maven以及jdk

这里的话出现一个问题我是使用docker进行(将内部maven的settings给挂载到.m2/settings,可以把maven对应conf下的配置文件给粘过来或者指定挂载maven的位置,这里的话没有将本地仓库进行挂载,所以说目录当中没有因为我是使用jenkins 的)

现在前面进行目录挂载,数据挂载,日志挂载的好处就出来了

#首先先把docker的容器给停了
docker stop jenkins-lts
#然后把老容器给删了
docker rm jenkins-lts
#最后直接一手执行
docker run -d --name jenkins-lts -p 8081:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /usr/lib/jdk-17.0.1:/usr/lib/jdk-17.0.1 -v /opt/maven:/opt/maven -v /root/.m2/settings.xml:/root/.m2/settings.xml --privileged=true jenkins/jenkins:lts
#嘎巴就成功了

下面就配置成功了

接下来来系统配置

来这个全局属性的环境变量这里

添加对应的键值对

详细解释:

  • PATH的作用:系统用来查找可执行程序(如java、mvn)的路径列表,只有程序所在路径在PATH里,才能在任意目录下直接执行命令;
  • PATH+EXTRA的设计:Jenkins 提供的 “追加式” 配置,既保留系统原有PATH(不影响其他命令的执行),又能新增 Maven 的bin目录(让mvn命令可被识别);
  • $M2_HOME/bin的含义:$M2_HOME是你在 Jenkins 中配置的 Maven 根目录(如/opt/maven),bin目录下存放着mvn可执行文件,把它加入PATH+EXTRA后,Jenkins 就能在构建时直接执行mvn clean install等命令。

简单说,这个配置是Jenkins 与 Maven 集成的关键一步,没有它,Jenkins 会因找不到mvn命令而无法完成 Java 项目的构建。

对应的代码管理构建当中去添加构建步骤,添加shell脚本

四 tomcat

105服务器

依旧是下载对应的包然后解压移动位置

这样就访问成功了

现在为了远程访问,需要去配置tomcat的角色,但是我这里全都放在一个105了,要不然太多了,可能电脑跑不动了,先去userxml当中

账号密码就是

tomcat

tomcat

接下来重启

重启后点击

进入登录界面

登录的账号密码就是原先设置的user对应的属性,

username:tomcat

passwordtomcat

项目的存储位置

对应的工作空间

jenkins如果说需要远程部署,需要一个插件deploy to container Plugin

去构建后操作添加配置

这个Credentials当中的tomcat就是tomcat当中的账号与密码

url就是对应服务器的地址

现在我们来到tomcat的地址与端口,点击

现在就是这个项目的部署路径

总体概括从gitlab的代码管理,开发者借助这个gitlab代码仓库进行管理,借助idea进行集成,提交与上传,借助jenkins进行持续集成,持续部署,同时配置对应的maven与tomcat,最后借助tomcat服务器进行部署上线从而进行访问。整个流程涉及到许多的权限管控的部分,gitlab需要账号,jenkins需要账号同时还有对应的角色权限,以及tomcat也开启角色权限管控。

现在去看看持续集成的效果

先在本地修改代码,然后提交到后台去

显示版本修改了

再来到jenkins当中

直接点击构建即可

再刷新一下tomcat直接展示最终的效果

持续集成:

五 使用流水线方式添加任务

创建一个流水线项目

我们需要去写对应的拉取代码编译构建等步骤的脚本文件。

脚本语法不需要特地去进行学习

可以去生成

接下来到里面的片段生成器选择拉取代码,生成对应的脚本文件

将脚本填写

生成maven的脚本

填写

配置tomcat生成对应的脚本文件

使用项目根目录下的JEnkinsfile来进行读取

控制台输出

六 构建触发器的一些策略

相关新闻

  • 用户评价征集:鼓励已购客户留下真实反馈
  • 3分钟搞定MobileNetV2部署:从零到推理的极速指南
  • 思源宋体安装指南:3步轻松搞定多语言字体配置

最新新闻

  • MPC857T时钟与功耗管理:SPLL配置、低功耗模式与调试实战
  • Office Custom UI Editor:打造专属Office界面的终极免费工具
  • C++CRTP奇异递归模板
  • 终极指南:如何为Windows 11 24H2 LTSC一键恢复微软商店完整功能
  • 2026年连云港装修公司精选指南,打造梦想家园不再难
  • 嵌入式GUI开发:emWin中MULTIEDIT与MULTIPAGE控件的深度应用与优化

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号