CN114579177A - 一种基于jenkins的混合开发项目打包方法和相关设备 - Google Patents

一种基于jenkins的混合开发项目打包方法和相关设备 Download PDF

Info

Publication number
CN114579177A
CN114579177A CN202210212100.5A CN202210212100A CN114579177A CN 114579177 A CN114579177 A CN 114579177A CN 202210212100 A CN202210212100 A CN 202210212100A CN 114579177 A CN114579177 A CN 114579177A
Authority
CN
China
Prior art keywords
android
product
task
jenkins
development project
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.)
Pending
Application number
CN202210212100.5A
Other languages
English (en)
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.)
Guangzhou Tiya Information Technology Co ltd
Original Assignee
Guangzhou Tiya Information Technology 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 Guangzhou Tiya Information Technology Co ltd filed Critical Guangzhou Tiya Information Technology Co ltd
Priority to CN202210212100.5A priority Critical patent/CN114579177A/zh
Publication of CN114579177A publication Critical patent/CN114579177A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及基于jenkins的混合开发项目打包方法及相关设备,所述方法包括步骤:发起并构建安卓打包任务;获取混合开发项目中的非安卓产物的项目信息;对所述非安卓产物进行引用替换;执行完整的安卓打包流程。本发明从整体构建流程中将非安卓产物的构建项目抽离,以Flutter构建任务为例,即实现Flutter构建任务与Android构建任务进行拆分。针对Flutter构建任务与Android构建任务进行分别管理,Flutter工程在Jenkins中可以采用串行构建,Android工程在Jenkins中采用并行构建。从而解决了Flutter工程在Jenkins任务执行中发生Flutter工程的并行编译的问题。

Description

一种基于jenkins的混合开发项目打包方法和相关设备
技术领域
本发明属于安卓开发技术领域,尤其涉及一种基于jenkins的混合开发项目打包方法和相关设备。
背景技术
实际生产过程中,在手机app的测试阶段以及上线阶段,是借助Jenkins打包机,对Android工程进行打包生成apk安装包。
在测试阶段,测试人员操作Jenkins打包机进行Android工程打包,生成apk安装包,进行测试。
在上线阶段,测试人员操作Jenkins打包机进行Android工程打包,生成apk安装包,提交给市场人员用于将apk安装包,进行应用市场的发布。
在实际生产过程中,手机app都会面临多分支并行开发,以提升产品需求的交付效率。为此,测试人员在操作Jenkins打包机时,针对单个Android工程,会依据需求情况,创建多个构建任务,采用并发的方式使用Jenkins打包。
随着Flutter跨平台技术的逐渐兴起,企业为进行开发人效的提升,逐渐拥抱原生+Flutter的混合开发方式,运用Flutter跨端技术实现手机app的功能研发。
引入Flutter混合开发的Android工程,对于Jenkins的打包流程的影响如下,关键在原Jenkins执行Android工程构建前,加入“Flutter操作”。针对采用的Flutter混合开发方式不同,“Flutter操作”也会有所不同。
如图1及图2所示分别为未接入Flutter的安卓工程构建和接入Flutter的安卓工程构建,其中,按照现有的Flutter混合开发方式不同,Jenkins在“Flutter操作”的现有技术主要有两种方式,一种为源码依赖方式(如图3所示),另一种为产物依赖方式(如图4所示)。
然而,对于一个采用了Flutter混合开发的Android工程而言,当测试人员使用Jenkins打包机针对该工程的不同分支进行并发构建时,由于Flutter工程的依赖库是全局共用的,当Flutter工程发生并发执行时,Flutter自身编译报错,导致构建任务终止,从而引起打包失败,进而导致Jenkins任务执行失败,导致无法生成apk安装包文件。
发明内容
本发明实施例提供一种基于jenkins的混合开发项目打包方法,旨在解决现上述技术问题。
第一方面,本发明实施例提供一种基于jenkins的混合开发项目打包方法,包括步骤:
发起并构建安卓打包任务;
获取混合开发项目中的非安卓产物的项目信息;
对所述非安卓产物进行引用替换;
执行完整的安卓打包流程。
优选的,所述获取混合开发项目中的非安卓产物的项目信息的步骤之前还包括:
确认所述混合开发项目中非安卓产物是否已在安卓打包任务中完成任务构建;
若没有完成,则建立所述非安卓产物在安卓打包任务中的任务构建,其中,所述非安卓产物的任务构建为串行构建。
优选的,所述对所述非安卓产物进行引用替换的步骤包括:
获取非安卓产物的分支产物信息,
对所述非安卓产物的分支产物信息进行引用替换。
优选的,所述获取非安卓产物的分支产物信息包括步骤:
确认所述非安卓产物的最新构建版本信息;
所述对所述非安卓产物的分支产物信息进行引用替换是基于所述最新构建版本信息选择脚本文件进行替换。
优选的,所述执行完整的安卓打包流程包括步骤:
基于构建的安卓打包任务,获取任务队列;
基于所述任务队列,拉取对应的仓库代码;
生成编译文件;
上传至中央仓库。
优选的,所述非安卓产物为Flutter产物。
优选的,所述非安卓产物包括一种或多种。
第二方面,本发明实施例还提供一种基于jenkins的混合开发项目打包装置,包括:
任务发起模块,用于发起并构建安卓打包任务;
产物获取模块,用于获取混合开发项目中的非安卓产物的项目信息;
引用替换模块,用于对所述非安卓产物进行引用替换;
执行模块,用于执行完整的安卓打包流程。
第三方面,本发明实施例还提供一种计算机设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上任一项所述的基于jenkins的混合开发项目打包方法中的步骤。
第四方面,一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的基于jenkins的混合开发项目打包方法中的步骤。
本发明实施例中,从整体构建流程中将非安卓产物的构建项目抽离,以基于Flutter的非安卓产物在Jenkins中构建任务为例进行说明,即实现Flutter构建任务与Android构建任务进行拆分。针对Flutter构建任务与Android构建任务进行分别管理,Flutter工程在Jenkins中可以采用串行构建,Android工程在Jenkins中采用并行构建。从而解决了Flutter工程在Jenkins任务执行中发生Flutter工程的并行编译的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有未接入Flutter工程的安卓工程打包任务构建流程图;
图2是现有接入Flutter工程的安卓工程打包任务构建流程图;
图3是现有Jenkins中的Flutter工程操作的源码依赖模式;
图4是现有Jenkins中的Flutter工程操作的产物依赖模式;
图5是本发明实施例提供的基于Jenkins的混合开发项目打包方法的流程图;
图6是本发明实施例提供的基于Jenkins的混合开发项目打包装置示意图;
图7是本发明实施例提供的计算机设备示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
实施例一
如图5所示为本发明实施例提供的一种基于Jenkins的混合开发项目打包方法的流程图,该方法包括步骤:
S101、发起并构建安卓打包任务。
在本实施例中,构建安卓打包任务包括基于安卓产物的打包任务,其中,在安卓工程开发阶段,包括有多个分支,在打包任务阶段,多个分支可以采用并行的方式进行打包,因此,本实施例中,基于安卓产物的打包任务采用并行的方式进行构建。
S102、获取混合开发项目中的非安卓产物的项目信息。
在本实施例中,非安卓产物包括Flutter工程项目或其它用于安卓混合开发项目的工程项目,这些非安卓产物的产物可能并不适合在Jenkins中直接进行并行打包。非安卓产物的项目信息包括了非安卓产物的工程分支信息、工程分支产物信息、工程项目的版本信息等。
S103、对所述非安卓产物进行引用替换。
在本实施例中,针对非安卓产物,需要对各个分支产物进行引用替换,本实施例以Flutter工程产物为例,通过进行安卓指定的文件进行引用替换,可使其能够在Jenkins中执行打包过程而不会发生Flutter工程并行编译。
S104、执行完整的安卓打包流程。
本实施例中,执行完整的安卓打包流程包括对非安卓产物的串行打包过程和对安卓工程产物的并行打包过程。
进一步的,在本实施例中,执行获取混合开发项目中的非安卓产物的步骤之前还包括:
S201、确认所述混合开发项目中非安卓产物是否已在安卓打包任务中完成任务构建;
S202、若没有完成,则建立所述非安卓产物在安卓打包任务中的任务构建,其中,所述非安卓产物的任务构建为串行构建。
在本实施例中,对所述非安卓产物进行引用替换的步骤包括:
S1031、获取非安卓产物的分支产物信息,其中还包括确认所述非安卓产物的最新构建版本信息;
S1032、对所述非安卓产物的分支产物信息进行引用替换,基于最新构件版本信息选择合适的脚本文件对非安卓产物的分支产物信息进行引用替换。
在本实施例中,执行完整的安卓打包流程包括步骤:
S1041、基于构建的安卓打包任务,获取任务队列;
S1042、基于所述任务队列,拉取对应的仓库代码;
S1043、生成编译文件(aar);
S1044、上传至中央仓库(maven仓库)。
进一步的,在本发明实施例中,非安卓产物可以是一种,也可以是多种,可针对不同的非安卓产物构建对应的任务,从整体任务构建流程中抽离出来,实现非安卓构建任务与安卓构建任务进行拆分,从而避免非安卓产物在Jenkins任务进行中发生对应的工程编译导致错误。
本发明实施例中,从整体构建流程中将非安卓产物的构建项目抽离,以基于Flutter的非安卓产物在Jenkins中构建任务为例进行说明,即实现Flutter构建任务与Android构建任务进行拆分。针对Flutter构建任务与Android构建任务进行分别管理,Flutter工程在Jenkins中可以采用串行构建,Android工程在Jenkins中采用并行构建。从而解决了Flutter工程在Jenkins任务执行中发生Flutter工程的并行编译的问题。
实施例二
本发明实施例还提供一种基于jenkins的混合开发项目打包装置,如图6所示,图6是本发明实施例提供的广告投放装置的结构示意图,所述打包装置500包括:
任务发起模块501,用于发起并构建安卓打包任务;
产物获取模块502,用于获取混合开发项目中的非安卓产物的项目信息;
引用替换模块503,用于对所述非安卓产物进行引用替换;
执行模块504,用于执行完整的安卓打包流程。
进一步的,在本实施例中,产物获取模块502在执行获取混合开发项目中的非安卓产物的步骤之前还包括执行如下步骤:
S201、确认所述混合开发项目中非安卓产物是否已在安卓打包任务中完成任务构建;
S202、若没有完成,则建立所述非安卓产物在安卓打包任务中的任务构建,其中,所述非安卓产物的任务构建为串行构建。
在本实施例中,引用替换模块503执行对所述非安卓产物进行引用替换的步骤中还包括:
S1031、获取非安卓产物的分支产物信息,其中还包括确认所述非安卓产物的最新构建版本信息;
S1032、对所述非安卓产物的分支产物信息进行引用替换,基于最新构件版本信息选择合适的脚本文件对非安卓产物的分支产物信息进行引用替换。
在本实施例中,执行模块104执行完整的安卓打包流程包括步骤:
S1041、基于构建的安卓打包任务,获取任务队列;
S1042、基于所述任务队列,拉取对应的仓库代码;
S1043、生成编译文件(aar);
S1044、上传至中央仓库(maven仓库)。
本发明实施例还提供一种计算机设备,如图7所示,图7是本发明实施例提供的一种计算机设备的结构示意图,该计算机设备600包括:存储器602、处理器601、网络接口603及存储在存储器602上并可在处理器601上运行的计算机程序,处理器601执行计算机程序时实现如本发明实施例提供的基于Jenkins的混合开发项目打包方法中的步骤。
本发明实施例提供的计算机设备600能够实现基于Jenkins的混合开发项目打包方法的实施例中的各个实施方式,以及相应有益效果,为避免重复,这里不再赘述。
需要指出的是,图中仅示出了具有组件的601-603,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备600是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
计算机设备600可以是桌上型计算机、笔记本及掌上电脑等计算设备。计算机设备600可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
存储器602至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器602可以是计算机设备600的内部存储单元,例如该计算机设备600的硬盘或内存。在另一些实施例中,存储器602也可以是计算机设备600的外部存储设备,例如该计算机设备600上配备的插接式硬盘,智能存储卡(Smart Media Card,简称SMC),安全数字(Secure Digital,简称SD)卡,闪存卡(FlashCard)等。当然,存储器602还可以既包括计算机设备600的内部存储单元也包括其外部存储设备。本实施例中,存储器602通常用于存储安装于计算机设备600的操作系统和各类应用软件,例如应用镜像的构建方法的程序代码等。此外,存储器602还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器601在一些实施例中可以是中央处理器(Central Processing Unit,简称CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器601通常用于控制计算机设备600的总体操作。本实施例中,处理器601用于运行存储器602中存储的程序代码或者处理数据,例如运行的基于Jenkins的混合开发项目打包方法的程序代码。
网络接口603可包括无线网络接口或有线网络接口,该网络接口603通常用于在计算机设备600与其他计算机设备之间建立通信连接。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器601执行时实现实施例提供的基于Jenkins的混合开发项目打包方法中的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现实施例应用镜像的构建方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存取存储器602(Random AccessMemory,简称RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (10)

1.一种基于jenkins的混合开发项目打包方法,其特征在于,包括步骤:
发起并构建安卓打包任务;
获取混合开发项目中的非安卓产物的项目信息;
对所述非安卓产物进行引用替换;
执行完整的安卓打包流程。
2.根据权利要求1所述的基于jenkins的混合开发项目打包方法,其特征在于,所述获取混合开发项目中的非安卓产物的项目信息的步骤之前还包括:
确认所述混合开发项目中非安卓产物是否已在安卓打包任务中完成任务构建;
若没有完成,则建立所述非安卓产物在安卓打包任务中的任务构建,其中,所述非安卓产物的任务构建为串行构建。
3.根据权利要求1所述的基于jenkins的混合开发项目打包方法,其特征在于,所述对所述非安卓产物进行引用替换的步骤包括:
获取非安卓产物的分支产物信息,
对所述非安卓产物的分支产物信息进行引用替换。
4.根据权利要求3所述的基于jenkins的混合开发项目打包方法,其特征在于,所述获取非安卓产物的分支产物信息包括步骤:
确认所述非安卓产物的最新构建版本信息;
所述对所述非安卓产物的分支产物信息进行引用替换是基于所述最新构建版本信息选择脚本文件进行替换。
5.根据权利要求1所述的基于jenkins的混合开发项目打包方法,其特征在于,所述执行完整的安卓打包流程包括步骤:
基于构建的安卓打包任务,获取任务队列;
基于所述任务队列,拉取对应的仓库代码;
生成编译文件;
上传至中央仓库。
6.根据权利要求1所述的基于jenkins的混合开发项目打包方法,其特征在于,所述非安卓产物为Flutter产物。
7.根据权利要求1所述的基于jenkins的混合开发项目打包方法,其特征在于,所述非安卓产物包括一种或多种。
8.一种基于jenkins的混合开发项目打包装置,其特征在于,包括:
任务发起模块,用于发起并构建安卓打包任务;
产物获取模块,用于获取混合开发项目中的非安卓产物的项目信息;
引用替换模块,用于对所述非安卓产物进行引用替换;
执行模块,用于执行完整的安卓打包流程。
9.一种计算机设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的基于jenkins的混合开发项目打包方法中的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的基于jenkins的混合开发项目打包方法中的步骤。
CN202210212100.5A 2022-03-01 2022-03-01 一种基于jenkins的混合开发项目打包方法和相关设备 Pending CN114579177A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210212100.5A CN114579177A (zh) 2022-03-01 2022-03-01 一种基于jenkins的混合开发项目打包方法和相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210212100.5A CN114579177A (zh) 2022-03-01 2022-03-01 一种基于jenkins的混合开发项目打包方法和相关设备

Publications (1)

Publication Number Publication Date
CN114579177A true CN114579177A (zh) 2022-06-03

Family

ID=81778878

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210212100.5A Pending CN114579177A (zh) 2022-03-01 2022-03-01 一种基于jenkins的混合开发项目打包方法和相关设备

Country Status (1)

Country Link
CN (1) CN114579177A (zh)

Similar Documents

Publication Publication Date Title
US10331425B2 (en) Automated source code adaption to inject features between platform versions
CN105511911A (zh) 系统固件升级包的生成方法及装置
CN111026439B (zh) 应用程序的兼容方法、装置、设备及计算机存储介质
US10896109B2 (en) Non-monotonic eventual convergence for desired state configuration
CN108958843A (zh) 基于轻量化脚本的插件构建方法、系统、设备及介质
CN112035112B (zh) 应用程序开发方法、系统、介质和电子设备
CN113805882A (zh) 应用程序开发的方法、装置、电子设备及存储介质
KR102052776B1 (ko) 병행가능하고 신뢰성 있는 설치를 위한 설치 엔진 및 패키지 포맷
US20240078103A1 (en) Generating and distributing customized embedded operating systems
US20220027139A1 (en) Application program updating method, apparatus, system, medium and device
CN104133676A (zh) 一种基于脚本的功能执行方法和设备
CN108733370B (zh) 原生app的样式化显示方法、装置、终端及存储介质
CN111338925A (zh) 小程序测试方法及装置、系统、电子设备和存储介质
CN113342387A (zh) 一种软件自动升级方法、更新客户端及更新服务器
CN115658042A (zh) 混合应用组件式开发方法、系统、设备及存储介质
CN113138768B (zh) 应用程序包生成方法、装置、电子设备以及可读存储介质
CN111367799B (zh) 定位源代码崩溃位置的方法、装置、介质及电子设备
CN114490103A (zh) 一种操作系统接口调用方法、装置以及电子设备
CN103631585A (zh) 一种用于开发应用程序的方法及系统
CN114579177A (zh) 一种基于jenkins的混合开发项目打包方法和相关设备
CN108536429B (zh) 一种开发软件的方法、装置、存储介质及电子设备
CN113778451B (zh) 文件加载方法、装置、计算机系统和计算机可读存储介质
CN112596751A (zh) 应用程序安装包的编译方法、终端、服务器及存储介质
CN113032004B (zh) 在开发环境中管理开发作业的方法、设备和程序产品
CN108345461B (zh) 应用更新方法和装置以及计算机可读存储介质

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