CN111078265B - 一种基于jenkins的web项目更新补丁生成方法 - Google Patents
一种基于jenkins的web项目更新补丁生成方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000009434 installation Methods 0.000 claims abstract description 17
- 238000004806 packaging method and process Methods 0.000 claims abstract description 16
- 230000008569 process Effects 0.000 claims description 16
- 238000010276 construction Methods 0.000 claims description 14
- 238000013515 script Methods 0.000 claims description 13
- 238000012856 packing Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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项目更新补丁生成方法。
背景技术
现阶段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任务配置并计算出此次构建过程项目代码编译成功的构建输出文件夹路径,将该路径视为相对路径。
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)
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)
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项目更新方法及相关装置 |
-
2019
- 2019-11-28 CN CN201911187707.7A patent/CN111078265B/zh active Active
Patent Citations (4)
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)
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 |