解决Jenkins使用 Git 参数插件拉取 commit 列表缓慢问题

embedded/2024/11/17 21:38:44/

Jenkins使用 Git 参数插件拉取 commit 列表缓慢问题

  • 项目问题
  • 问题描述
  • 解决方案
  • 具体实现

项目问题

  • 在 Jenkins 中使用 Git 参数插件 进行参数化构建,具有多方面的重要性和好处。这不仅提高了构建的灵活性和透明度,还能大大提升开发和运维效率。以下是使用 Jenkins commit 列表的一些关键好处和其重要性:
  1. 灵活性和精确性

    • 选择特定版本构建:开发人员和运维人员可以选择特定的 Git commit、标签或分支进行构建。这对于需要回滚到之前的稳定版本、验证特定提交或进行分支构建非常重要。

    • 精确调试和测试:在调试或测试时,可以精确选择导致问题的提交进行构建和测试,迅速定位问题所在。

  2. 增强透明度和可追溯性

    • 可见的版本控制:所有的提交记录都可以在 Jenkins 中显示和选择,这使得版本控制更加透明,任何人都可以看到和选择构建哪个版本。

    • 构建历史记录:每次构建都与特定的 commit 关联,方便回溯和查看每个构建的来源和变化内容。

  3. 提高开发效率

    • 快速验证和集成:开发人员可以在 Jenkins 中选择提交后立即进行构建和测试,快速验证代码的正确性和集成效果。

    • 减少重复劳动:通过选择特定 commit 进行构建,减少了手动下载代码、切换分支和提交的繁琐步骤,提高了开发效率。

  4. 方便回归测试和部署

    • 回归测试:在发现新版本存在问题时,可以迅速回退到之前的稳定版本进行回归测试,确保问题得到有效解决。

    • 版本部署运维人员可以选择特定的 commit 进行部署,确保部署的版本是经过验证和测试的,降低了发布风险。

  5. 支持复杂的构建需求

    • 多分支构建:支持对多个分支进行并行构建和测试,满足复杂的开发和集成需求。

    • 多环境构建:通过选择不同的 commit 或分支,分别构建和部署到不同的环境(如开发、测试、生产),确保各个环境的版本一致性和稳定性。

问题描述

  • 在 Jenkins 中,如果使用 Git 参数插件(Git Parameter Plugin)来选择 Git 标签或修订号进行参数化构建,有时可能会遇到拉取 commit 列表非常慢的问题。这通常是因为在拉取这些信息时,需要克隆整个项目,特别是当你的连接速度较慢或项目很大的时候,这个过程会非常耗时。
    在这里插入图片描述

在这里插入图片描述


解决方案

在大多数情况下,我们只需要部署最新的 commit 版本,只有在需要回滚时才会采用以前的 commit。因此,可以通过提供按 commit 版本和最新分支两种构建方式,提高部署效率和灵活性。以下是优化后的详细描述:

提供按 Commit 版本和最新分支两种构建方式的好处

  1. 部署最新版本的效率

    • 直接部署最新版本:在大多数情况下,开发和运维团队只需要部署最新的代码版本。在这种情况下,通过 Jenkins 可以直接选择最新 分支进行构建和部署,而不需要等待加载完整的 commit 列表。这种方式大大减少了部署的等待时间,提升了部署效率。

    • 实时性和及时性:直接使用最新版本进行部署,确保最新的功能和修复能够及时发布,满足快速迭代和持续交付的需求。

  2. 版本回滚的灵活性

    • 选择特定 commit 版本:在需要进行版本回滚时,可以通过 Jenkins 提供的 commit 列表选择特定的 commit 进行构建和部署。这种方式确保在出现问题时,能够迅速回退到之前的稳定版本,减少对生产环境的影响。

    • 问题定位和修复:通过选择特定的 commit 版本,可以精确定位和验证引入问题的提交,快速进行修复和重新部署。

具体实现

在 Jenkins 中,采用 Extended Choice Parameter 插件,可以实现按需选择构建最新 commit 或从 commit 列表中选择特定版本的功能。通过设置选项 LatestCommit,当选中该按钮时,可以直接选择构建最新 commit,无需等待列表获取;未选中时,则使用 commit 列表拉取的方式。以下是具体的实现方法:

  1. 安装 Extended Choice Parameter 插件
  • 登录到 Jenkins 的管理界面,导航到 “Manage Jenkins” -> “Manage Plugins”。

  • 在 “Available” 标签页中搜索 “Extended Choice Parameter” 插件并安装。

  1. 配置构建参数
  • 在需要配置的 Jenkins Job 中,导航到 “配置”(Configure)页面。

  • 在 “This project is parameterized” 部分,添加一个 “Extended Choice Parameter” 类型的参数。

  1. 配置 LatestCommit 选项
  • Name:设置参数名称,例如 LatestCommit。
  • Description:设置描述,例如 选择 true 构建最新 commit,无需等待列表获取;选择 false 使用 commit 列表。
  • Parameter Type:选择 Boolean Choice Parameter。
  • Value Choices:添加两个值:true 和 false。
  • Default Value:可以设置默认值为 false。
    在这里插入图片描述
  1. 安装 Git Parameter 插件
  • 登录 Jenkins 管理界面,导航到 “Manage Jenkins” -> “Manage Plugins”。
  • 在 “Available” 标签页中搜索 “Git Parameter” 插件并安装。
  1. 配置选择 commit 版本的参数
  • 添加一个 Git Parameter 类型的参数。
  • Name:设置参数名称,例如 commit
  • Description:设置描述,例如 选择提交仓库的commit版本。
  • Type:选择 修订(commit)。
  • Branch:指定要拉取 commit 的分支,例如 origin/test。
    在这里插入图片描述
  1. pipeline脚本
java">pipeline {agent anyenvironment {// 仓库地址和IDcredentialsId = 'xxxxxxxxxxxxxxx'url = 'http://xxxxx/xxxx/xxxxxxx.git'// git分支名称branch = 'master'}stages {stage('拉取代码') {steps {script {def branchesConfig// 判断是否是最新提交if ("${LatestCommit}" == "true") {branchesConfig = [[name: "refs/heads/${branch}"]]  // 使用分支} else {branchesConfig = [[name: "${commit}"]]  // 使用特定的提交}// 执行 Git 拉取操作checkout([$class: 'GitSCM',branches: branchesConfig,doGenerateSubmoduleConfigurations: false,extensions: [],userRemoteConfigs: [[credentialsId: "$credentialsId", url: "$url"]]])}}}}  }
  1. 优化后的效果
    在这里插入图片描述

http://www.ppmy.cn/embedded/138068.html

相关文章

thinkphp route 配置 示例

在 ThinkPHP 中,路由配置允许你将 URL 请求映射到指定的控制器和方法。路由配置文件一般位于 application/route.php 中,下面是一些常见的路由配置示例。 1. 基本路由配置 最基本的路由配置方式是将 URL 路径映射到指定的控制器方法。 use think\faca…

前端开发迈向全栈之路:规划与技能

一、前端开发与全栈开发的差异 前端开发主要负责构建和实现网页、Web 应用程序和移动应用的用户界面。其工作重点在于网页设计和布局,使用 HTML 和 CSS 技术定义页面的结构、样式和布局,同时运用前端框架和库如 React、Angular 或 Vue.js 等构建交互式和…

0x00基础算法 -- 0x05 排序

1、离散化 排序算法的第一个应用:离散化。 “离散化”就是把无穷大(无限)的集合中的若干个(有限)元素映射为有限集合以便于统计的方法。 例如:问题的范围定义在整数集合,但是只涉及其中m个有限的…

Android OpenGLES2.0开发(八):Camera预览

严以律己,宽以待人 引言 终于到该章节了,还记得Android OpenGLES2.0开发(一):艰难的开始章节说的吗?写这个系列的初衷就是因为每次用到GLSurfaceViewCamera预览时,总是CtrlC、CtrlV从来没有研究…

Halcon 3D平面度

平面度是对表面形状的一种度量,用于指示该表面上的所有点是否都在同一个平面上。平面度在几何尺寸和公差(GD&T)中用平行四边形表示,当两个表面必须装配在一起形成紧密密封时,平面度就特别有用。 使用平面度公差是…

蓝桥杯c++算法学习【3】之思维与贪心(重复字符串、翻硬币、乘积最大、皮亚诺曲线距离【难】:::非常典型的必刷例题!!!)

别忘了请点个赞收藏关注支持一下博主喵!!! 关注博主,更多蓝桥杯nice题目静待更新:) 思维与贪心 一、重复字符串 【问题描述】 如果一个字符串S恰好可以由某个字符串重复K次得到,我们就称S是K次重复字 符串…

工业大数据分析与应用:开启智能制造新时代

在全球工业4.0浪潮的推动下,工业大数据分析已经成为推动智能制造、提升生产效率和优化资源配置的重要工具。通过收集、存储、处理和分析海量工业数据,企业能够获得深刻的业务洞察,做出更明智的决策,并实现生产流程的全面优化。本文…

QT5.14*解决QSslSocket::connectToHostEncrypted: TLS initialization faile

qDebug()<<"QSslSocket"<<QSslSocket::sslLibraryBuildVersionString();通过上述代码在QT控制台查看对应需要的SSL版本&#xff0c;QT5.14.*输出的内容为&#xff1a; OpenSSL 1.1.1d 10 Sep 2019从官方下载openssl安装包即可&#xff0c;在官网找了很…