目录
[一 Gitlab](#一 Gitlab)
[二 Jenkins](#二 Jenkins)
[三 maven](#三 maven)
[四 tomcat](#四 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)、安全合规的全流程解决方案。以下从核心模块、架构、优势等维度详细介绍:
安装方式:
html
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 --permanent
firewall-cmd --add-service=http --permanent
firewall-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,我们改为82
external_url 'http://192.168.100.106:82'
nginx['listen_port'] = 82
7. 重载配置及启动gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
8. 把端口添加到防火墙
firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload
启动成功后,看到以下修改管理员root密码的页面,修改密码后,然后登录即可
安装gitlab(基于docker环境)
htmldocker pull gitlab/gitlab-ce:latest启动命令
javadocker 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
创建对应的挂载目录
XML
# 创建数据存储目录
sudo mkdir -p /var/jenkins_home
# 赋予目录读写权限(避免容器内权限报错)
sudo chmod 777 /var/jenkins_home
启动(jenkins当中的数据都存储在。/var/jenkins_home/目录下)
XML
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 的)
现在前面进行目录挂载,数据挂载,日志挂载的好处就出来了
XML
#首先先把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来进行读取


控制台输出

六 构建触发器的一些策略
