Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图

1.介绍背景

项目开发过程中 通常会使用Git来管理项目
尤其是多人项目 一起开发时 Git就更加重要了
因为项目比较私密 不能公开 所以项目组使用的是GitLab的私服
大家在开发分支上开发(偶尔需要独立分支)
开发完毕后 先自己测试 如果基础问题没有的话 便提交至测试分支
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第1张图片

1.1之前流程

  • 前端手动打包 - 登录测试服务器 - 提交至 tomcat 或 nginx 目录
  • 后端手动打包 - 登录测试服务器 - 停止原项目 - 提交至目录 - 运行项目

反复几次后 这样的流程是非常繁琐的 而且会有时候 没有打包成功 导致代码没更新
所以这一块应该被机器所替代 这里便选择了Jenkins 帮忙集成项目

1.2目前流程

  • 前端在dev分支开发 完毕后提交至 test 分支
  • 后端在dev分支开发 完毕后提交至 test 分支

接下来的所有工作全部交给了 Jenkins 完成

1.3集成流程

  • 拉取Git仓库 指定分支
  • 切换对应版本(Node、Java)
  • 对代码依赖检查
  • 对项目进行打包
  • 执行Dockerfile
  • 提交Docker镜像到Harbor
  • 通知Rancher对项目进行更新
  • 静态代码扫描
  • 出具扫描报告和结果
  • 通知 PingCode(敏捷平台)集成完毕 (包含分支情况、部署情况)
  • CI/CD 完成 邮件通知(目前关掉了 太烦人了)

当前文章只到 对项目进行打包
剩下的步骤在别的文章中

1.4目前成果

当前很多很多项目已经都是Jenkins 管理了
且背后有一套持续集成的流程 最后项目将运行至K8s(部分小、老项目还在用docker-compose管理)
下面是通过 Jenkins 的一个项目视图展示 已经有很多项目了

1.5前置要求

需要你的环境已经拥有

  • Jenkins
  • GitLab
  • 项目分支

2.服务器项目配置

首先登录服务器 建立一个存放项目的文件夹
文件名字随意 但是最好见名知意(我这里直接是 docker-{项目名称})

我这里以 GitLab里自己封装的脚手架为例 (SpringBoot项目)
我新建了:test-template
由于该项目是后端项目 所以 在 test-template 下 我又新建了 backend 文件夹

使用 pwd 命令 记录下当前的路径

当前的路径是:/home/test-template/backend

该文件夹将会存在GitLab上的该项目的源码

3.Jenkins项目配置

3.1新建项目

登录到 Jenkins 中 选择 New Item
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第2张图片

3.2填写信息

项目名称我的规则是 刚才文件夹的规则
test-template-backend 标识它是这个项目的后端
点击 OK
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第3张图片

3.3配置注释

填写 Description
项目的描述 可以尽可能的详细 方便维护
点击 Advanced
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第4张图片

3.4配置文件夹

点击了Advanced之后
会弹出下面的 Directory
填入刚才在服务器记录下的目录
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第5张图片

3.5拉取Git地址

配置GitLab项目地址
注意 该地址必须是 .git 结尾的
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第6张图片

3.6Git分支

配置拉取源码的分支 这里 配置为 */test
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第7张图片

3.7开启WebHook

勾选:Build when a change is pushed to GitLab …

复制 webhook URL: http://172.16.1.150:10101/project/test-template-backend (每个项目不一样哈!!!)

会出现如下界面
点击 Advanced 进行详细配置
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第8张图片

3.8配置分支

选择监听的分支 我这里选择了 正则匹配 .*test 分支
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第9张图片

3.9配置秘钥

点击 Generate 生成 SecretToken
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第10张图片

3.10执行脚本

选择 Build
点击 Execute Shell 来执行Shell脚本

这里有几种方案

  • Shell放到项目中 跟随项目走(好处是 提交时 可以把Shell也提交进去 随时修改)
  • Shell放到服务器上 (好处是 安全 交分支的人 没有权限修改打包的指令)
  • Shell放到Jenkins (好处是 不太方便操作服务器的人 可以操作要执行的指令)
    Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第11张图片

3.11编写指令

填入你要执行的Shell指令
由于服务需要停止、再启动
你可以尝试先kill掉服务 再 java -jar 执行
我这边的方案是在后续操作中 将其打包为Docker 再根据流程推送至K8s集群中
这步你可以自行操作
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第12张图片

3.12保存项目

点击底部的 Save
先去测试配置是否生效

3.13测试集成

点击 Build Now
确保 GitLab 上的项目 有 test 分支哈!!
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第13张图片

3.14查看结果

可以看到 #1、#2 成功了
你可以尝试点进#1 #2进行查看
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第14张图片

3.15查看服务器

查看文件 会发现Jenkins已经帮我们把项目拉下来了
而且target目录 也是Jenkins执行mvn打包后的目录

4.GitLab项目配置

打开GitLab项目
选择 Settings
选择 Integrations
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第15张图片

4.1配置Webhook

填写URL为刚才Jenkins的Webhook地址
填写SecretToken为Jenkins中按钮生成的秘钥
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第16张图片

4.2添加Webhook

点击 Add webhook
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第17张图片

4.3测试通知

点击 Test
选择 Push Events
点击 查看GitLab是否可以正常通过WebHook通知Jenkins
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第18张图片

4.4正常通知

看到:HTTP 200
说明GitLab现在已经可以正常通知Jenkins了
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图_第19张图片

5.测试整体

此时向GitLab中的项目的test分支提交代码
将会发出WebHook来触发Jenkins
完成Shell中的命令
这样就完成了基础的CI/CD了
后续更复杂的集成 请查看博客的其他文章

你可能感兴趣的:(CI/CD,jenkins,gitlab,ci/cd)