CN111078265B - 一种基于jenkins的web项目更新补丁生成方法 - Google Patents

一种基于jenkins的web项目更新补丁生成方法 Download PDF

Info

Publication number
CN111078265B
CN111078265B CN201911187707.7A CN201911187707A CN111078265B CN 111078265 B CN111078265 B CN 111078265B CN 201911187707 A CN201911187707 A CN 201911187707A CN 111078265 B CN111078265 B CN 111078265B
Authority
CN
China
Prior art keywords
project
jenkins
code
patch
compiling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911187707.7A
Other languages
English (en)
Other versions
CN111078265A (zh
Inventor
刘彪
王骁
秦嘉伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai 30wish Information Security Co ltd
Original Assignee
Shanghai 30wish Information Security Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai 30wish Information Security Co ltd filed Critical Shanghai 30wish Information Security Co ltd
Priority to CN201911187707.7A priority Critical patent/CN111078265B/zh
Publication of CN111078265A publication Critical patent/CN111078265A/zh
Application granted granted Critical
Publication of CN111078265B publication Critical patent/CN111078265B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种基于jenkins的web项目更新补丁生成方法,包括以下步骤:S1:用户上传项目代码至代码管理仓库;S2:获取项目代码;S3:对所述项目源代码进行编译;S4:判断编译是否成功,若成功,则进入下一步;若编译失败,则结束;S5:查找前一次项目代码编译成功的构建输出文件夹路径;若查找成功,则进入下一步;若查找失败,则跳过更新补丁生成步骤,只发布安装包,完成打包工作。该基于jenkins的web项目更新补丁生成方法在发布一款中大型项目,并且项目由许多的模块组成,此场景下每一个模块的更新不再人工将整个项目打包部署上线,可在无人工干预的情况下实现中大型‑web项目的编译打包,减少了企业的用人成本,提高项目的更新迭代版本次数。

Description

一种基于jenkins的web项目更新补丁生成方法
技术领域
本发明涉及计算机技术领域,具体为一种基于jenkins的web项目更新补丁生成方法。
背景技术
现阶段web项目的规模、复杂性日益增加,而大多数web项目发布方式都是采用人工将项目打包编译并发布安装包,然后把安装包上传到服务器进行部署,然后项目上线调试。
Jenkins是一款由Java编写的开源的持续集成工具。Jenkins提供了软件开发的持续集成服务。它运行在Servlet容器中(例如Apache Tomcat)。它支持软件配置管理(SCM)工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理命令。
Jenkins可以使开发者从繁杂的集成过程中解脱出来,专注于更为重要的业务逻辑实现,此外,Jenkins能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。它的速度飞快,极其适合管理大项目,它还有着令人难以置信的非线性分支管理系统,可以应付各种复杂的项目开发需求。尽管最初 Git 的开发是为了辅助Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。git-diff是Git的子工具,能比较不同版本的差异并生成git-apply可用的补丁。git-apply是Git的子工具,能够应用git-diff生成的补丁。
Gogs是一款极易搭建的自助 Git 服务和代码管理仓库。Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的所有平台,包括 Linux、Mac OS X、Windows以及 ARM 平台。
采用人工打包部署上线项目适用于项目类型小的场景,此场景下的部署方式会比较简单。但是如果在发布一款中大型项目,并且项目由许多的模块组成,此场景下每一个模块的更新都意味着需要人工将整个项目打包部署上线,使服务端的更新难度大大增加,并且不仅耗时也耗财。因此,有必要提供一种基于Jenkins的web项目自动化编译打包和生成更新补丁的方案,能够把已有的流程以自动化、无人工干预的方式自动编译发布安装包并生成更新补丁。
发明内容
针对现有技术的不足,本发明提供了一种基于jenkins的web项目更新补丁生成方法。
为实现以上目的,本发明通过以下技术方案予以实现:一种基于jenkins的web项目更新补丁生成方法,包括以下步骤:
S1:用户上传项目代码至代码管理仓库;
S2:获取项目代码;
S3:对所述项目源代码进行编译;
S4:判断编译是否成功,若成功,则进入下一步;若编译失败,则结束;
S5:查找前一次项目代码编译成功的构建输出文件夹路径;若查找成功,则进入下一步;若查找失败,则跳过更新补丁生成步骤,只发布安装包,完成打包工作;
S6:把前一次项目代码编译成功的构建输出文件夹路径和此次项目代码编译成功的构建输出文件夹路径作为启动更新补丁生成程序的参数并执行更新补丁程序;若补丁更新程序执行成功,则进入下一步;若补丁更新程序执行失败,则跳过更新补丁生成步骤,只发布安装包,完成打包工作;
S7:归档安装包和更新定补丁包。
优选的,在S1中,提供两种触发方式,均是在前期运行环境搭建过程中进行设置:Gogs代码管理仓库设置上传自动触发代码,通过代码的执行实现自动触发编译打包,在Jenkins设置定时器,通过定时器到点自动触发编译打包。
优选的,在S5中,在默认配置的场景下,Jenkins能够保留下述三种目录:
存储每次构建任务的结果的目录;
指向最后一次成功构建任务的结果的快捷方式;
指向最后一次稳定构建任务的结果的快捷方式。
优选的,在S5中,通过使用shell脚本调取Jenkins任务配置,能够计算本次构建的项目指向最后一次成功构建任务的结果的目录,该目录的一个子目录为构建输出文件夹,shell脚本最终取得该文件夹的绝对路径。
优选的,在S6中,shell脚本调取Jenkins任务配置并计算出此次构建过程项目代码编译成功的构建输出文件夹路径,将该路径视为相对路径。
有益效果
本发明提供了一种基于jenkins的web项目更新补丁生成方法。具备以下有益效果:
(1)、该基于jenkins的web项目更新补丁生成方法在发布一款中大型项目,并且项目由许多的模块组成,此场景下每一个模块的更新不再人工将整个项目打包部署上线,可在无人工干预的情况下实现中大型-web项目的编译打包,减少了企业的用人成本,提高项目的更新迭代版本次数;
(2)、该基于jenkins的web项目更新补丁生成方法生成的更新补丁文件的体积要比完整的安装包的体积小得多,令应用更新补丁比重新部署安装包的代价要小,显著提升了项目部署的速度,让应用的更新更高效。
附图说明
图1为本发明的工作原理图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明提供一种技术方案:一种基于Jenkins的web项目自动化编译打包和生成更新补丁的方法,能够实现无人工干预的自动化web项目编译打包和更新补丁生成,让项目部署更简单,更高效;同时又能提高项目的更新迭代版本次数,减少用人成本。
本实施例的自动化过程包括:
S1:用户上传项目代码至代码管理仓库;
具体的,用户将开发完的项目代码上传至Gogs上后,触发自动化过程。
在此,本实施例提供两种自动触发的方式,均是在前期运行环境搭建过程中进行设置:
在Gogs代码管理仓库设置上传自动触发代码,通过代码的执行实现自动触发编译打包。
在Jenkins设置定时器,通过定时器到点自动触发编译打包。
上述两种设置自动编译打包的触发点的方式,都能在达到触发时刻全自动完成所有操作。其中,优选采用前者,因为其具有可有效控制版本更新的优点。
S2:获取项目代码;
Jenkins从Gogs代码管理仓库拉取项目代码。
S3:对所述项目源代码进行编译;
Jenkins将上一步骤获取的项目代码进行编译构建、测试等。
S4:判断编译是否成功,若成功,则进入下一步;若编译失败,则结束;
具体的,Jenkins判断编译的各个步骤(构建、测试等)是否成功,若所有步骤都成功,则进入下一步;若某个步骤失败,则视为编译失败。
S5:查找前一次项目代码编译成功的构建输出文件夹路径;若查找成功,则进入下一步;若查找失败,则跳过更新补丁生成步骤,只发布安装包,完成打包工作;
具体的,在默认配置的场景下,Jenkins能够保留下述三种目录:
存储每次构建任务的结果的目录;
指向最后一次成功构建任务的结果的快捷方式;
指向最后一次稳定构建任务的结果的快捷方式。
在当前的构建步骤中,通过使用shell脚本调取Jenkins任务配置,能够计算本次构建的项目指向最后一次成功构建任务的结果的目录,该目录的一个子目录为构建输出文件夹,shell脚本最终取得该文件夹的绝对路径。
进一步,shell脚本判断该绝对路径是否存在:
若存在,则进入下一个步骤;若不存在,则中断shell脚本并跳过更新补丁生成步骤,因为此场景下不能满足生成更新补丁的要求,此后Jenkins将继续执行余下的构建步骤,发布本次构建的项目的安装包,完成打包过程。
S6:前一次项目代码编译成功的构建输出文件夹路径和此次项目代码编译成功的构建输出文件夹路径作为启动更新补丁生成程序的参数并执行更新补丁程序;若补丁更新程序执行成功,则进入下一步;若补丁更新程序执行失败,则跳过更新补丁生成步骤,只发布安装包,完成打包工作;
具体的,上一步骤中shell脚本找到并确认绝对路径存在,然后shell脚本调取Jenkins任务配置并计算出此次构建过程项目代码编译成功的构建输出文件夹路径,将该路径视为相对路径。然后,使用指定的两组参数执行补丁更新程序git-diff,指定的两组参数为:
第一组参数包括三个参数:--binary --no-prefix --no-index;
第二个参数包括两个参数:绝对路径相对路径。
完整的补丁更新程序执行命令为:
git diff --binary --no-prefix --no-index绝对路径相对路径
为了达到生成更新补丁文件的目录,需要在该命令的最后加上输出重定向到指定文件,效果如下:
git diff --binary --no-prefix --no-index绝对路径相对路径>生成的补丁文件路径
进一步的,为了达到若补丁更新程序执行失败,则跳过更新补丁生成步骤的目的,需要令更形程序执行命令即使出错也不影响整个构建过程,因为在Jenkins的构建过程中,多行的shell指令中的任一行指令执行后退出代码非0都会使Jenkins将此构建过程中断并将构建状态设置为失败,最终的更新补丁程序执行命令如下:
git diff --binary --no-prefix --no-index绝对路径相对路径>生成的补丁文件路径 || true
S7:归档安装包和更新定补丁包;
具体的,若不能满足生成更新补丁的要求或者补丁更新程序运行失败,则只归档安装包;否则归档安装包和更新补丁包。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (3)

1.一种基于jenkins的web项目更新补丁生成方法,其特征在于,包括以下步骤:
S1:用户上传项目代码至代码管理仓库;
S2:获取项目代码;
S3:对所述项目源代码进行编译;
S4:判断编译是否成功,若成功,则进入下一步;若编译失败,则结束;
S5:查找前一次项目代码编译成功的构建输出文件夹路径;若查找成功,则进入下一步;若查找失败,则跳过更新补丁生成步骤,只发布安装包,完成打包工作;
S6:把前一次项目代码编译成功的构建输出文件夹路径和此次项目代码编译成功的构建输出文件夹路径作为启动更新补丁生成程序的参数并执行更新补丁程序;若补丁更新程序执行成功,则进入下一步;若补丁更新程序执行失败,则跳过更新补丁生成步骤,只发布安装包,完成打包工作;
S7:归档安装包和更新定补丁包;
在S5中,在默认配置的场景下,Jenkins能够保留下述三种目录:
存储每次构建任务的结果的目录;
指向最后一次成功构建任务的结果的快捷方式;
指向最后一次稳定构建任务的结果的快捷方式;
在S5中,通过使用shell脚本调取Jenkins任务配置,能够计算本次构建的项目指向最后一次成功构建任务的结果的目录,该目录的一个子目录为构建输出文件夹,shell脚本最终取得该文件夹的绝对路径。
2.根据权利要求1所述的一种基于jenkins的web项目更新补丁生成方法,其特征在于:在S1中,提供两种触发方式,均是在前期运行环境搭建过程中进行设置:Gogs代码管理仓库设置上传自动触发代码,通过代码的执行实现自动触发编译打包,在Jenkins设置定时器,通过定时器到点自动触发编译打包。
3.根据权利要求1所述的一种基于jenkins的web项目更新补丁生成方法,其特征在于:在S6中,shell脚本调取Jenkins任务配置并计算出此次构建过程项目代码编译成功的构建输出文件夹路径,将该路径视为相对路径。
CN201911187707.7A 2019-11-28 2019-11-28 一种基于jenkins的web项目更新补丁生成方法 Active CN111078265B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911187707.7A CN111078265B (zh) 2019-11-28 2019-11-28 一种基于jenkins的web项目更新补丁生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911187707.7A CN111078265B (zh) 2019-11-28 2019-11-28 一种基于jenkins的web项目更新补丁生成方法

Publications (2)

Publication Number Publication Date
CN111078265A CN111078265A (zh) 2020-04-28
CN111078265B true CN111078265B (zh) 2024-04-02

Family

ID=70312011

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911187707.7A Active CN111078265B (zh) 2019-11-28 2019-11-28 一种基于jenkins的web项目更新补丁生成方法

Country Status (1)

Country Link
CN (1) CN111078265B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112083947A (zh) * 2020-07-27 2020-12-15 上海云刹技术有限公司 一种供应链多语言环境的软件包发布方法
CN112799716B (zh) * 2021-02-09 2022-04-01 广州锦行网络科技有限公司 一种代码管理方法及系统
CN114564226B (zh) * 2022-02-25 2023-03-17 深圳市云视机器人有限公司 代码部署方法、装置、电子设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016145897A1 (zh) * 2015-08-28 2016-09-22 中兴通讯股份有限公司 一种更新数据包的制作方法及装置
CN107729066A (zh) * 2017-11-08 2018-02-23 重庆扬讯软件技术股份有限公司 一种基于svn资源库自动化构建发布方法与装置
CN108647037A (zh) * 2018-04-28 2018-10-12 新疆熙菱信息技术股份有限公司 基于shell脚本的自动化部署方法和系统
CN108829430A (zh) * 2018-06-19 2018-11-16 厦门海迈科技股份有限公司 基于Eclipse和Tomcat的Java Web项目更新方法及相关装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016145897A1 (zh) * 2015-08-28 2016-09-22 中兴通讯股份有限公司 一种更新数据包的制作方法及装置
CN107729066A (zh) * 2017-11-08 2018-02-23 重庆扬讯软件技术股份有限公司 一种基于svn资源库自动化构建发布方法与装置
CN108647037A (zh) * 2018-04-28 2018-10-12 新疆熙菱信息技术股份有限公司 基于shell脚本的自动化部署方法和系统
CN108829430A (zh) * 2018-06-19 2018-11-16 厦门海迈科技股份有限公司 基于Eclipse和Tomcat的Java Web项目更新方法及相关装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘壮飞 ; .基于SVN的代码自助增量在持续交付中的应用.中国新通信.2016,(10),全文. *

Also Published As

Publication number Publication date
CN111078265A (zh) 2020-04-28

Similar Documents

Publication Publication Date Title
US10114637B1 (en) Automatically updating a shared project build platform
CN111078265B (zh) 一种基于jenkins的web项目更新补丁生成方法
US8533676B2 (en) Single development test environment
CN110532189B (zh) 一种持续集成系统、方法及装置
CN107729066B (zh) 一种基于svn资源库自动化构建发布方法与装置
US8745585B2 (en) Meta-data for single development test environment
US10579966B1 (en) Adapting a shared project build platform to a developer plugin
US9940225B2 (en) Automated error checking system for a software application and method therefor
CN111142879B (zh) 软件集成发布方法及自动运维平台
US9311064B1 (en) Systems and methods for automated centralized build/merge management
US20130174124A1 (en) Version numbering in single development and test environment
CN108897547B (zh) 一种软件自动化部署方法及装置
AU2012201749B2 (en) Single development test environment
CN111324522A (zh) 一种自动化测试系统及方法
CN110780917B (zh) 一种React Native应用自动化打包发布的方法及系统
US10579513B2 (en) Test run control method and apparatus
CN110597544A (zh) 一种软件系统升级方法及装置
CN111651352B (zh) 一种仓库代码的合并方法及装置
CN111611157B (zh) Gms持续集成构建自动化测试方法及系统
CN114995835A (zh) 一种应用自动化部署方法、系统、设备和可读存储介质
CN113064630A (zh) 移动端app自动打包方法、系统、电子设备及存储介质
CN110908670A (zh) 一种自动发布服务的方法及装置
CN115220863A (zh) 容器应用的运维方法、装置、计算机设备和存储介质
CN114297056A (zh) 一种自动化测试方法及系统
CN110647349B (zh) 一种实现iOS APP持续交付的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant