当前位置: 首页 > backend >正文

Jenkins项目发布基础

目录

  • 案例环境
  • jenkins实现静态web网站自动发布
      • 1:案例说明
      • 2:web01服务器上安装httpd
      • 3:上传代码到gitlab
      • 4:在 jenkins 中添加远程 web 主机
      • 5:jenkins 中设置项目构建参数
  • 带有参数的项目发布
      • 1:更新项目代码并提交到仓库
      • 2:Jenkins项目设置
  • Jenkins项目实时自动触发
      • 1:设置“构建触发器”
      • 2:设置Gitlab的触发机制
  • jenkins+ansible+gitlab 实现 PHP 项目发布
      • 1:安装LAMP环境
      • 2:jenkins主机安装Ansible插件
      • 3:创建空项目
      • 4:提交代码到Gitlab仓库
      • 5:jenkins创建项目并发布测试

案例环境

设备清单
在这里插入图片描述

jenkins实现静态web网站自动发布

1:案例说明

本案例部署了一个简单的静态网站,通过此操作过程,主要掌握代码发布的基本流程,以及在这个过程中我们需要注意的重点环节,也是掌握 ienkins 项目发布的入门级操作。在这些操作中,进一步学习jenkins 持续集成、持续部署流程。

2:web01服务器上安装httpd

请添加图片描述

请添加图片描述
请添加图片描述

3:上传代码到gitlab

创建空白项目league
请添加图片描述
克隆空项目到dev上
请添加图片描述
设置用户信息并将所需的网站代码上传到league目录中
请添加图片描述
初始化本地仓库,提交到暂存区、本地仓库
请添加图片描述
为分支命名为main

git branch -M main

将分支版本提交到远程仓库
请添加图片描述
查看提交结果
请添加图片描述
httpd主机改名
请添加图片描述
dev主机改名
请添加图片描述

4:在 jenkins 中添加远程 web 主机

“Manage Jenkins"–>“System”–>“Publish over SsH”,点击 SSH Servers 的新增按钮。须填写的信息如下:

Name:为远程主机的起的名字;
Hostname:远程主机的 IP 地址或域名;
Username:远程主机的登录账号;
Remote Directory:远程同步路径(如果要拷贝文件,此处填写远程主机接收文件的目录);
点击高级按钮,并勾选“Use password authentication,or use different key”
在 Passphrase/Password 中输入密码;
其他保持默认,并点击 test 按钮进行连接测试,测试结果为 Success 表示参数设置成功。
最后保存设置。
可以用同样的方法添加更多的主机。
请添加图片描述

5:jenkins 中设置项目构建参数

请添加图片描述
在 Jenkins 中新建一个自由风格的项目
请添加图片描述
在源码管理中选择 Git,并且把 gitlab 中获取的仓库 URL 填写进去。
请添加图片描述
Build steps(构建步骤)设置
在本案例中,我们需要将 web 网站的代码文件同步到 web 主机,需要同步文件,需要一个发送文件的构建步骤,具体操作如下:
增加构建步骤“send files or excute commands over SSH”

需要设置的关键参数如下:
Name:在下拉菜单中选择目标主机;

Source files:选择源文件位置,注意这里是工作目录的相对路径,不要写绝对路径。我们的工作目录是“/root/.jenkins/workspace/league”,如果要同步此目录下所有内容,就填写“**/*”;如果要同步工作目录下的 image 目录下的所有文件,就填写“image/*”

Remove prefix 该操作是针对上面的 source files 目录,会移除匹配的目录。通常留空

Remote directory:远程主机的同步目录,注意这里也是相对路径。是相对于远程主机的同步目录的,我们在前面的远程主机中设置同步的目录是“/var/www/html”,此处就直接写“/”代表将文件同步到远程主机的“/var/www/html”目录下。

如果需要同时将文件批量同步到更多的主机,可以继续增加构建步骤。

Exec command:同步接收后需要在远程主机执行的命令。
请添加图片描述
请添加图片描述
保存后构建
在这里插入图片描述

请添加图片描述

访问测试
请添加图片描述
请添加图片描述

带有参数的项目发布

在刚才的案例中,我们掌握了项目发布的基本步骤,在实际工作过程中,程序员往往要对代码进行不断的升级,这是就出现了不同的版本,如何针对不同的项目版本进行发布,这也是 Jenkins 的一项基本功能。不仅能帮助管理员灵活的、有针对性的版本发布,同时在新版本出现 bug 的时候,又能快速的将项目回退到之前的版本。

1:更新项目代码并提交到仓库

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

2:Jenkins项目设置

修改 General 参数
勾选“This project is parameterized”,并点击“添加参数”,添加“Git Parameter”参数。
请添加图片描述
请添加图片描述
构建项目
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

Jenkins项目实时自动触发

在配置 Jenkins 实现前端自动化构建的过程中,Git 如何通知 Jenkins 对应 Job 的工作区实时构建呢?web 开发过程中的 webhook,是一种通过通常的 callback,去增加或者改变 web page 或者 web app行为的方法。这些 ca1lback 可以由第三方用户和开发者维持当前,修改,管理,而这些使用者与网站或者应用的原始开发没有关联。
webhook 这个词是由 Jeff Lindsay 在 2807 年在计算机科学 hook 项目第一次提出的。webhooks 是"user-defined HTTP 回调"。它们通常由一些事件触发,例如"push 代码到 repo",或者"post 一个评论到博客"。因此,我们可以将 jenkins 的某个项目的 webhook 放置到gitlab,当 gitlab 中对应的项
目代码有更新时,就会向 jenkins 触发一个构建的事件,这样就完成了一个项目自动触发的流程。

1:设置“构建触发器”

在 jenkins 中执行如下操作:
项目–>配置–>构建触发器,勾选项目的 webhook
复制出里面的 webhook URL: http://192.168.10.104:8080/jenkins/project/league
请添加图片描述
设置“构建触发器”的高级选项
在“构建触发器”中生成一个 Token,并且把这个 Token 复制出来:
请添加图片描述

2:设置Gitlab的触发机制

在这里要设置 gitlab 允许利用钩子(webhook)发送请求到本地网络。Menu–>Admin–>Settings–>Network–>Outbound requests
设置 0utbound request(外发请求)
勾选“允许 webhook 和服务对本地网络的请求”和“允许系统钩子向本地网络发送的请求”

请添加图片描述
打开自己创建的项目,Settings–>Webhooks
点击右上角 Add new webhook 按钮,
粘贴前面步骤中生成的 webhook 的 URL 和 Token
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
点击 Test 按钮,并点击 Push events,开始推送测试,观察 Jenkins 的构建界面,会发现 Jenkins 开始进行自动构建。
请添加图片描述
修改代码内容,模拟代码更新,并且将新代码提交到gitlab,然后直接观察网站访问结果,验证jenkins 是否能执行来自 gitlab 的触发请求
请添加图片描述
请添加图片描述
此处应该发现,我们在代码中修改的文字,在没有执行jenkins 构建操作的情况下,jenkins 已经自动为我们同步了代码。
请添加图片描述

jenkins+ansible+gitlab 实现 PHP 项目发布

1:安装LAMP环境

请添加图片描述
请添加图片描述
请添加图片描述

2:jenkins主机安装Ansible插件

做无密码验证
Ansible 的工作是基于 SSH 协议的,它使用 SSH 连接到远程主机并执行命令。因此在将 ansible 集成给 jenkins 的时候,需要在 jenkins 主机上生成密钥对,并同步公钥给远程 web 主机,为 ansible 的运行提供基础。
请添加图片描述
如果要结合 ansible 实现项目的自动发布,就需要在 jenkins 上添加 ansible 插件,但是只在Jenkins 中安装 Ansible 插件是不行的,还要在 Jenkins 主机上安装 Ansible 程序。
请添加图片描述
请添加图片描述

3:创建空项目

请添加图片描述
请添加图片描述

4:提交代码到Gitlab仓库

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

5:jenkins创建项目并发布测试

请添加图片描述

请添加图片描述
在源码管理项,选中 Git,添加代码仓库的 URL:
修改*/master 为$Tag。Tag 是上面动态获取的变量名,表示根据用户的选择确定要发布的代码版本。
请添加图片描述

设置“Build steps”参数,添加 ansible 同步参数
在“Build steps”中,点“增加构建步骤”→“Invoke Ansible Ad-Hoc command”,在这里设置的主要参数如下:

Host pattern:设置 ansible 中的主机组的名字

Inventory:选择File or host list,填写的文件是 ansible的主机清单/etc/ansible/hosts

Module:设置同步方式,此处使用“synchronize”的方式,表示使用rsync 同步

Module arguments or command to execute:填写ansible 的同步命令:命令如下:src=${WORKSPACE} dest=/var/www/html rsync opts=–exclude=.git

备注:
ansible 命令解释:
${WORKSPACE}表示该变量指向的路径是jenkis 主机从git 服务器获取到的项目/root/.jenkins/workspace
rsync_opts=–exclude=.git:同步时将,git 文件除外,该文件不同步
请添加图片描述

在“Build steps”选项中,再次点击“增加构建步骤”选择“Execute shell”,填写需要让jenkins 主机执行的 ansible 命令:
请添加图片描述
开始构建
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

请添加图片描述

http://www.xdnf.cn/news/18196.html

相关文章:

  • UE5 使用RVT制作地形材质融合
  • 网络编程day3
  • leetcode2248. 多个数组求交集
  • Android13车机系统自定义系统栏显示策略之状态栏下拉异常
  • java八股文-中间件-参考回答
  • Commons-io
  • 微算法科技(NASDAQ: MLGO)研究利用PBFT中的动态视图变换机制,实现区块链系统高效运转
  • 2025年5月架构设计师综合知识真题回顾,附参考答案、解析及所涉知识点(六)
  • 笔试——Day43
  • HJ4 字符串分隔
  • C++高频知识点(二十七)
  • CentOS安装SNMPWalk
  • 无畏契约手游上线!手机远控模拟器畅玩、抢先注册稀有ID!
  • Linux的基本操作
  • 遥感amp;机器学习入门实战教程 | Sklearn 案例③:PCA + SVM / 随机森林 对比与调参
  • LAMP架构编译安装部署
  • 垂直领域大模型构建:法律行业“类ChatGPT”系统的训练与落地
  • PythonDay31
  • Vue2+Vue3前端开发_Day1
  • Fragment重要知识点总结
  • Incredibuild 新增 Unity 支持:击破构建时间过长的痛点
  • 机器学习(决策树2)
  • MVVM开源项目
  • Netty处理粘包与拆包
  • vue使用vue-cropper实现图片裁剪之单图裁剪
  • 关于mybatis表关联查询和mybatis-Plus单表查询传入时间查询数据(走索引)
  • Linux Namespace 隔离的“暗面”——故障排查、认知误区与演进蓝图
  • CVPR 2025 | 具身智能 | HOLODECK:一句话召唤3D世界,智能体的“元宇宙练功房”来了
  • 【HTML】3D动态凯旋门
  • 通过C#上位机串口写入和读取浮点数到stm32的片内flash实战4(通过串口下发AD9833设置值并在上位机显示波形曲线)