CN114860202A - 项目运行方法、装置、服务器及存储介质 - Google Patents
项目运行方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN114860202A CN114860202A CN202210429461.5A CN202210429461A CN114860202A CN 114860202 A CN114860202 A CN 114860202A CN 202210429461 A CN202210429461 A CN 202210429461A CN 114860202 A CN114860202 A CN 114860202A
- Authority
- CN
- China
- Prior art keywords
- project
- server
- item
- target container
- package
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开关于一种项目运行方法、装置、服务器及存储介质,属于计算机技术领域,该方法包括:基于项目仓库中第一项目的代码文件,获取资源仓库中第一项目的依赖包存储至服务器中;响应于针对第一项目的目标容器创建完成,从项目仓库中下载第一项目的代码文件,获取服务器中已存储的第一项目的依赖包;响应于打开指令,在目标容器中基于该依赖包和该代码文件运行该第一项目。通过上述技术方案,预先下载项目的依赖包,当针对项目的容器创建完成,可以获取预先下载的依赖包来运行项目。通过将依赖包下载过程前置到打开项目之前,有效节省了下载依赖包的耗时,提升了打开项目的速度,从而大大提高了项目开发的效率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种项目运行方法、装置、服务器及存储介质。
背景技术
Cloud IDE(Cloud Integrated Development Environment,云端集成开发环境)是一种部署在远程容器中的项目开发工具。开发人员通过在线访问Cloud IDE,获取CloudIDE容器进行项目开发。其中,容器提供项目运行所依赖的运行环境。
目前,开发人员通常在创建好的Cloud IDE容器中运行IDE项目。而在打开IDE项目时,需要下载运行项目所依赖的依赖包(例如,maven管理的依赖包),才能进行后续的项目开发,而等待依赖包下载完成的过程通常耗时较长,导致打开IDE项目的速度较慢,极大地影响了项目开发的效率。
因此,亟需一种项目运行方法,能够有效提升打开IDE项目的速度,进而提高项目开发效率。
发明内容
本公开提供一种项目运行方法、装置、服务器及存储介质,能够有效提高项目开发效率。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种项目运行方法,应用于服务器中,该方法包括:
基于项目仓库中第一项目对应的代码文件,从资源仓库中获取所述第一项目对应的依赖包存储至所述服务器中,所述依赖包包括运行所述第一项目所需的资源数据;
响应于针对所述第一项目的目标容器创建完成,从所述项目仓库中将所述第一项目对应的代码文件下载到所述目标容器中,将所述服务器中已存储的所述依赖包获取至所述目标容器中,所述目标容器提供运行所述第一项目所需的应用程序;
响应于针对所述第一项目的打开指令,在所述目标容器中基于所述依赖包和所述代码文件运行所述第一项目。
在一种可能实施方式中,所述基于项目仓库中第一项目对应的代码文件,从资源仓库中获取所述第一项目对应的依赖包存储至所述服务器中包括:
响应于检测到所述项目仓库中所述第一项目对应的代码文件发生变更,从资源仓库中获取所述变更后的代码文件对应的依赖包,所述依赖包包括基于所述变更后的代码文件运行所述第一项目所需的资源数据;
将所述依赖包存储至所述服务器中所述第一项目对应的存储空间中,所述存储空间基于所述第一项目的项目信息确定。
在一种可能实施方式中,所述项目运行方法还包括:
响应于针对所述第一项目的容器创建请求,创建所述目标容器,所述容器创建请求携带所述第一项目的项目信息。
在一种可能实施方式中,所述将所述服务器中已存储的所述依赖包获取至所述目标容器中包括:
基于所述容器创建请求携带的项目信息,确定所述服务器中所述第一项目对应的存储空间;
基于所述存储空间,将所述服务器中已存储的所述依赖包获取至所述目标容器中。
在一种可能实施方式中,所述基于所述存储空间,将所述服务器中已存储的所述依赖包获取至所述目标容器中包括下述任一项:
从所述存储空间中,将已存储的所述依赖包复制到所述目标容器中;
将所述存储空间配置为允许所述目标容器访问,通过所述目标容器读取所述存储空间中的所述依赖包。
根据本公开实施例的第二方面,提供一种项目运行装置,应用于服务器中,该装置包括:
第一获取单元,被配置为执行基于项目仓库中第一项目对应的代码文件,从资源仓库中获取所述第一项目对应的依赖包存储至所述服务器中,所述依赖包包括运行所述第一项目所需的资源数据;
第二获取单元,被配置为执行响应于针对所述第一项目的目标容器创建完成,从所述项目仓库中将所述第一项目对应的代码文件下载到所述目标容器中,将所述服务器中已存储的所述依赖包获取至所述目标容器中,所述目标容器提供运行所述第一项目所需的应用程序;
运行单元,被配置为执行响应于针对所述第一项目的打开指令,在所述目标容器中基于所述依赖包和所述代码文件运行所述第一项目。
在一种可能实施方式中,所述第一获取单元被配置为执行:
响应于检测到所述项目仓库中所述第一项目对应的代码文件发生变更,从资源仓库中获取所述变更后的代码文件对应的依赖包,所述依赖包包括基于所述变更后的代码文件运行所述第一项目所需的资源数据;
将所述依赖包存储至所述服务器中所述第一项目对应的存储空间中,所述存储空间基于所述第一项目的项目信息确定。
在一种可能实施方式中,所述项目运行装置还包括:
创建单元,被配置为执行响应于针对所述第一项目的容器创建请求,创建所述目标容器,所述容器创建请求携带所述第一项目的项目信息。
在一种可能实施方式中,所述第二获取单元包括:
确定子单元,被配置为执行基于所述容器创建请求携带的项目信息,确定所述服务器中所述第一项目对应的存储空间;
获取子单元,被配置为执行基于所述存储空间,将所述服务器中已存储的所述依赖包获取至所述目标容器中。
在一种可能实施方式中,所述获取子单元被配置为执行下述任一项:
从所述存储空间中,将已存储的所述依赖包复制到所述目标容器中;
将所述存储空间配置为允许所述目标容器访问,通过所述目标容器读取所述存储空间中的所述依赖包。
根据本公开实施例的第三方面,提供一种服务器,该服务器包括:
一个或多个处理器;
用于存储该处理器可执行程序代码的存储器;
其中,该处理器被配置为执行该程序代码,以实现上述的项目运行方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,该计算机可读存储介质包括:当该计算机可读存储介质中的程序代码由服务器的处理器执行时,使得服务器能够执行上述的项目运行方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序,该计算机程序被服务器的处理器执行时实现上述的项目运行方法。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种项目运行方法的实施环境示意图;
图2是根据一示例性实施例示出的一种项目运行方法的流程图;
图3是根据一示例性实施例示出的一种项目运行方法的流程图;
图4是根据一示例性实施例示出的一种预先下载过程的示意图;
图5是根据一示例性实施例示出的一种项目运行过程的示意图;
图6是根据一示例性实施例示出的一种项目运行装置的框图;
图7是根据一示例性实施例示出的一种服务器的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
需要说明的是,本公开所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的依赖包都是在充分授权的情况下获取的。
图1是本公开实施例提供的一种项目运行方法的实施环境示意图,参见图1,该实施环境中包括:服务器110、终端120、项目仓库130和资源仓库140。
其中,服务器110能够为终端120提供项目运行服务。服务器110能够根据终端120的项目开发需求,从项目仓库130中下载指定项目的代码文件,从资源仓库140中获取指定项目对应的依赖包,并创建项目运行所需的容器,以提供运行项目的集成开发环境,
其中,服务器110可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式文件系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content DeliveryNetwork,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。可选地,上述服务器110的数量可以更多或更少,本申请实施例对此不加以限定。当然,服务器110还可以包括其他功能服务器,以便提供更全面且多样化的服务。
其中,终端120可以运行有支持使用项目运行服务的应用程序。终端120可以为智能手机、智能手表、台式电脑、手提电脑、虚拟现实终端、增强现实终端、无线终端和膝上型便携计算机等设备中的至少一种。终端120具有通信功能,可以与服务器110进行通信,以使用服务器110提供的项目开发服务。终端120可以泛指多个终端中的一个,本实施例仅以终端120来举例说明。本领域技术人员可以知晓,上述终端的数量可以更多或更少。
其中,项目仓库130存储有多个项目的代码文件,项目的代码文件能够用于运行项目。在本申请实施例中,项目的代码文件能够实现指定的功能,通过编写和调试项目的程序代码,能够开发出所需要的应用程序,例如,网络游戏应用程序和即时通讯应用程序等。该项目仓库130可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式文件系统。
其中,该资源仓库140是项目开发所依赖的第三方库,其中存储有多个依赖包,依赖包包括运行项目所需的资源数据。可选地,该项目仓库140提供代码管理服务,其能够管理并存储项目多个版本的代码文件,例如,分布式版本控制系统(GIT)仓库,GIT仓库以目录的形式管理项目多个版本的代码文件,GIT仓库通过跟踪代码文件中发生的代码增加、代码删除和代码更改,来记录项目的版本变更历史。该资源仓库140可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式文件系统。
其中,服务器110与终端120、项目仓库130和资源仓库140之间,可以通过有线或无线通信方式进行直接或间接的连接,本申请实施例对此不作限定。
接下来介绍本公开提供的技术方案。图2是根据一示例性实施例示出的一种项目运行方法的流程图,如图2所示,该方法用于上述服务器110中,包括以下步骤:
在步骤201中,服务器基于项目仓库中第一项目对应的代码文件,从资源仓库中获取该第一项目对应的依赖包存储至该服务器中,该依赖包包括运行该第一项目所需的资源数据。
本申请实施例中的项目仓库参考上述项目仓库130,资源仓库参考上述资源仓库140在此不作赘述。
在本申请实施例中,依赖包用于构建该第一项目的框架(Framework),提供运行该第一项目所需的类库(Class Library,CL)、插件和组件等开发资源。可选地,框架提供了应用程序内部控制各个任务处理流程的逻辑。基于该依赖包提供的框架,使用依赖包提供的开发资源进行扩展,即可基于该第一项目进行功能开发。
在一些实施例中,服务器通过获取项目仓库中第一项目的代码文件,在服务器提供的开发环境中对该第一项目的代码文件进行调整,来进行功能开发。
在一些实施例中,服务器根据项目仓库中该第一项目的代码文件所涉及的资源,确定运行该第一项目所需的依赖包,例如,根据代码文件涉及的类或组件等开发资源,确定包含这些开发资源的依赖包。
在步骤202中,服务器响应于针对该第一项目的目标容器创建完成,从该项目仓库中将该第一项目对应的代码文件下载到该目标容器中,将该服务器中已存储的该依赖包获取至该目标容器中,该目标容器提供运行该第一项目所需的应用程序。
在本申请实施例中,服务器提供多个容器,容器包括一部分服务器的操作系统以及运行项目所需的应用程序(或称为进程),多个容器的操作系统和应用程序之间相互独立且相互隔离。因此,该目标容器能够为该第一项目提供独立的运行环境。
在一些实施例中,服务器响应于针对该第一项目的目标容器创建完成,根据该第一项目的项目信息,下载该第一项目对应的代码文件,获取该已存储的依赖包。在一些实施例中,该项目信息指示该第一项目,能够用于确定该第一项目在该项目仓库中的存储地址以及该服务器中该依赖包所在的存储空间。
在步骤203中,服务器响应于针对该第一项目的打开指令,在该目标容器中基于该依赖包和该代码文件运行该第一项目。
在本申请实施例中,服务器响应于接收到针对该第一项目的打开指令,在该目标容器提供的独立运行环境中,执行该代码文件,以将该第一项目运行至可进行开发的状态。进一步地,基于已下载的该第一项目对应的依赖包,即可在目标容器中基于该第一项目进行功能开发。
通过本公开实施例提供的技术方案,预先下载项目的依赖包,当针对项目的容器创建完成,可以获取预先下载的依赖包来运行项目。通过将依赖包下载过程前置到打开项目之前,有效节省了下载依赖包的耗时,提升了打开项目的速度,从而大大提高了项目开发的效率。
上述图2所示仅为本公开的基本流程,下面对本公开提供的方案进行详细说明,图3是根据一示例性实施例示出的一种项目运行方法的流程图,如图3所示,该方法用于上述服务器110中,包括以下步骤:
在步骤301中,服务器响应于检测到项目仓库中第一项目对应的代码文件发生变更,确定该第一项目的项目信息,该项目信息指示该第一项目。
在一些实施例中,该第一项目是存储在项目仓库中的开源项目,也即是,不同的开发者均能够从项目仓库中获取该第一项目的代码文件,并可以将本地修改后的代码文件,也即是发生变更的代码文件上传至项目仓库。可以理解地,通过修改项目的代码文件,能够在项目中实现不同的功能,或者,修复项目中存在的错误。
在一些实施例中,该项目仓库是GIT仓库(参见对项目仓库130的描述)。在这种示例下,该服务器响应于检测到GIT仓库中该第一项目对应的代码文件发生变更,根据GIT仓库中该第一项目的代码文件的运行过程,确定基于该变更后的代码文件运行该第一项目所需的依赖包,例如,根据该变更后的代码文件涉及到的类或组件等开发资源,确定包含这些资源的依赖包。其中,依赖包的定义参见步骤201,在此不作赘述。
其中,该项目信息指示该第一项目,能够用于确定该第一项目对应的依赖包。在一些实施例中,该项目信息包括该第一项目的标识信息,例如,项目名称、开发团队名称或项目版本等。根据该第一项目的标识信息,即可查询到该第一项目的依赖包在资源仓库中的存储地址。
在一些实施例中,该资源仓库是为Java项目提供依赖包的Maven仓库,在Maven仓库中用坐标来标识依赖包。在这种示例下,该第一项目是Java项目,该依赖包是Java归档包(Java Archive,JAR),该第一项目所需的Jar包在Maven仓库中的存储地址用坐标表示。可选地,该坐标包括但不限于:1、项目组标识(GroupID),该项目组标识用于指示项目名称、开发团队信息以及开发公司信息;2、版本标识(Version),该版本标识用于指示项目版本,或者,定义Jar包的版本。基于此,根据第一项目的标识信息中包括的项目名称、开发团队名称或项目版本等,即可确定该第一项目所需的Jar包在Maven仓库中的坐标。
当然,上述坐标能够包括其他信息来更详细地指示该第一项目对应的Jar包,例如,项目组标识(GroupID)下的模块标识(ArtifactID),用于指示项目组中具体的项目模块,本申请实施例对此不做限定。
需要说明的是,上述过程仅为示例性的,在该第一项目是基于其他编程语言开发的项目的情况下,可以从对应的资源仓库中获取依赖包,本公开实施例对此不做限定。
在步骤302中,服务器基于该第一项目的项目信息,从资源仓库中获取该变更后的代码文件对应的依赖包。
在一些实施例中,服务器基于该第一项目的项目信息,从资源仓库的对应位置获取该变更后的代码文件对应的依赖包。例如,根据第一项目变更后的代码文件对应的Jar包在Maven仓库的坐标,从Maven仓库中的对应存储空间中下载该Jar包。项目信息的定义参考步骤301,在此不作赘述。
通过上述技术方案,基于项目仓库中的代码变更,触发依赖包的下载过程,使得服务器中的依赖包与项目版本保持一致,节省了打开项目时下载依赖包的耗时,有效提升了项目开发效率。
进一步地,在代码发生变更的情况下,进行依赖包的下载,减少了非必要的更新下载,节省了服务器侧的存储空间。
在步骤303中,服务器将该依赖包存储至该服务器中该第一项目对应的存储空间中,该存储空间基于该第一项目的项目信息确定。
在一些实施例中,服务器下载该依赖包后,将该依赖包持久化至服务器中该第一项目对应的存储空间中。在一些实施例中,上述步骤301至步骤302由服务器中的预先下载程序执行。因此,在基于该预先下载程序下载该依赖包后,该依赖包存储于该预先下载程序对应的缓存中,此时,通过将该依赖包持久化至可供其他应用程序读取的公共存储空间中,使得该服务器中的多个应用程序能够根据需求获取各自所需的依赖包,并保证该依赖包的稳定存储。在这种示例下,基于该第一项目的项目信息,该公共存储空间中创建该第一项目对应的存储空间,来保证各个项目的依赖包之间独立存储。例如,在公共存储空间中,创建该第一项目对应的文件夹,将该项目信息包括的项目名称、开发团队信息以及开发公司信息,作为该文件夹的名称,在该文件夹中存储该第一项目依赖包。相应地,基于该第一项目的项目信息,即可从该公共存储空间中该第一项目对应的存储空间中获取该第一项目对应的依赖包。
上述公共存储空间可以是如磁盘这类非易失性存储器(Non-Volatile Memory,NVM),本公开实施例对此不做限定。
为了便于理解上述步骤301至步骤303的过程,本申请实施例提供了一种预先下载过程的示意图,参见图4,在项目仓库401中的第一项目的代码文件发生变更时,触发服务器中的预先下载程序402从资源仓库403中下载该第一项目对应的依赖包,该预先下载程序402将下载好的依赖包持久化至服务器的公共磁盘404中。
可选地,同一项目的多个版本对应的依赖包可以存储在同一父文件夹下的不同子文件夹中,从而为项目提供丰富的依赖包支持。相应地,子文件夹可以用项目的版本标识命名,本公开对此不做限定。
通过上述技术方案,将依赖包存储在公共存储中,保证依赖包的稳定存储,能够有效规避依赖包丢失的风险,保障项目运行过程的可靠性,进一步提升了项目开发的效率。
在步骤304中,服务器响应于针对该第一项目的容器创建请求,创建目标容器,该容器创建请求携带该第一项目的项目信息。
本步骤中容器的定义参考步骤202,在此不作赘述。
在本申请实施例中,该容器创建请求指示服务器创建用于运行该第一项目并提供项目开发支持的独立运行环境。在一些实施例中,该容器创建请求携带的项目信息包括该第一项目的项目名称、开发团队信息和开发公司信息,用于指示该第一项目。服务器基于该第一项目的项目信息,为目标容器分配合适的计算资源,例如,目标容器内操作系统的处理器(Central Processing Units,CPU)内核数量占比、目标容器内操作系统的运行内存限制等,以创建符合该第一项目的运行需求的目标容器。
在步骤305中,服务器响应于针对该第一项目的目标容器创建完成,从该项目仓库中将该第一项目对应的代码文件下载到该目标容器中。
在一些实施例中,服务器响应于针对该第一项目的目标容器创建完成,根据该项目信息包括的该第一项目的项目名称、开发团队信息和开发公司信息,确定该第一项目在该项目仓库中的存储地址,基于该存储地址将该第一项目对应的代码文件下载到该目标容器中。
在步骤306中,服务器基于该容器创建请求携带的项目信息,确定该服务器中该第一项目对应的存储空间。
在一些实施例中,该第一项目对应的存储空间基于该第一项目的项目信息确定(参见步骤303),例如,第一项目对应的文件夹名称,基于该第一项目的项目名称、开发团队信息以及开发公司信息确定。基于此,根据该容器创建请求携带的项目信息,即可确定该第一项目对应的存储空间,例如,该第一项目对应的文件夹。
在步骤307中,服务器基于该存储空间,将该服务器中已存储的该第一项目对应的依赖包获取至该目标容器中。
在本申请实施例中,可以通过下述任一种方式,从该第一项目对应的存储空间中获取该依赖包。
方式一、服务器从该存储空间中,将已存储的该依赖包复制到该目标容器中。例如,该存储空间是指该第一项目对应的文件夹,通过访问该文件夹对应的文件目录,将该文件夹内的依赖包复制到该目标容器中,基于此,能够使得该目标容器基于该依赖包运行该第一项目的过程与该存储空间相互隔离,该存储空间发生的依赖包变化不会影响到目标容器内的项目运行,提升了项目运行的稳定性。
方式二、服务器将该存储空间配置为允许该目标容器访问,通过该目标容器读取该存储空间中的该依赖包。例如,该存储空间是指该第一项目对应的文件夹,通过将该文件夹对应的文件目录连接到该目标容器的根目录下,基于此,该目标容器通过访问该文件目录,即可读取该文件夹中的依赖包。通过上述技术方案,使得该目标容器能够直接访问该存储空间,在依赖包发生更新的情况下,目标容器能够及时获取更新的依赖包,有效提升了项目运行的效率。
可选地,根据项目运行的实际需求,可以选择或组合上述两种方式来获取依赖包,本申请实施例对此不做限定。
在步骤308中,服务器响应于针对该第一项目的打开指令,在该目标容器中基于该依赖包和该代码文件运行该第一项目。
本步骤参考步骤203,在此不作赘述。
本公开实施例提供的技术方案,预先下载项目的依赖包,当针对项目的容器创建完成,可以获取预先下载的依赖包来运行项目。通过将依赖包下载过程前置到打开项目之前,有效节省了下载依赖包的耗时,提升了打开项目的速度,从而大大提高了项目开发的效率。
进一步地,基于项目仓库中的代码变更来触发依赖包的下载过程,使得保持服务器中存储的依赖包与项目版本保持一致,节省了打开项目时下载依赖包的等待耗时,进一步提升了项目开发效率。
为了便于理解图3对应的实施例提供的技术方案,本申请实施例提供了一种项目运行过程的示意图,参见图5。图5是根据一示例性实施例示出的一种项目运行过程的示意图,图5展示了开发人员所在的终端510、目标容器520、项目仓库530和公共磁盘540之间的交互过程,对图3中的步骤进行了辅助性说明。
图6是根据一示例性实施例示出的一种项目运行装置的框图。参照图6,该装置包括第一获取单元601、第二获取单元602和运行单元603。
该第一获取单元601,被配置为执行基于项目仓库中第一项目对应的代码文件,从资源仓库中获取该第一项目对应的依赖包存储至该服务器中,该依赖包包括运行该第一项目所需的资源数据;
该第二获取单元602,被配置为执行响应于针对该第一项目的目标容器创建完成,从该项目仓库中将该第一项目对应的代码文件下载到该目标容器中,将该服务器中已存储的该依赖包获取至该目标容器中,该目标容器提供运行该第一项目所需的应用程序;
该运行单元603,被配置为执行响应于针对该第一项目的打开指令,在该目标容器中基于该依赖包和该代码文件运行该第一项目。
在一种可能实施方式中,该第一获取单元601被配置为执行:
响应于检测到该项目仓库中该第一项目对应的代码文件发生变更,从资源仓库中获取该变更后的代码文件对应的依赖包,该依赖包包括基于该变更后的代码文件运行该第一项目所需的资源数据;
将该依赖包存储至该服务器中该第一项目对应的存储空间中,该存储空间基于该第一项目的项目信息确定。
在一种可能实施方式中,该装置还包括:
创建单元,被配置为执行响应于针对该第一项目的容器创建请求,创建该目标容器,该容器创建请求携带该第一项目的项目信息。
在一种可能实施方式中,该第二获取单元602包括:
确定子单元,被配置为执行基于该容器创建请求携带的项目信息,确定该服务器中该第一项目对应的存储空间;
获取子单元,被配置为执行基于该存储空间,将该服务器中已存储的该依赖包获取至该目标容器中。
在一种可能实施方式中,该获取子单元被配置为执行下述任一项:
从该存储空间中,将已存储的该依赖包复制到该目标容器中;
将该存储空间配置为允许该目标容器访问,通过该目标容器读取该存储空间中的该依赖包。
需要说明的是:上述实施例提供的项目运行装置在执行对应步骤时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的项目运行装置与项目运行方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
通过上述技术方案,预先下载项目的依赖包,当针对项目的容器创建完成,直接获取预先下载的依赖包即可打开项目,而无需在打开项目时下载依赖包。通过将依赖包下载过程前置到打开项目之前,有效节省了获取依赖包的耗时,提升了打开项目的速度,从而大大提高了项目开发的效率。
图7是根据一示例性实施例示出的一种服务器的框图,该服务器700可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(Central Processing Units,CPU)701和一个或多个的存储器702,其中,该一个或多个存储器702中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器701加载并执行以实现上述各个方法实施例提供的项目运行方法中服务器执行的过程。当然,该服务器700还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器700还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种包括程序代码的计算机可读存储介质,例如包括程序代码的存储器702,上述程序代码可由服务器700的处理器701执行以完成上述项目运行方法。可选地,计算机可读存储介质可以是只读内存(read-only memory,ROM)、随机存取存储器(random access memory),RAM)、只读光盘(compact-disc read-only memory,CD-ROM)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的项目运行方法。
在一些实施例中,本申请实施例所涉及的计算机程序可被部署在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备可以组成区块链系统。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种项目运行方法,其特征在于,应用于服务器中,所述方法包括:
基于项目仓库中第一项目对应的代码文件,从资源仓库中获取所述第一项目对应的依赖包存储至所述服务器中,所述依赖包包括运行所述第一项目所需的资源数据;
响应于针对所述第一项目的目标容器创建完成,从所述项目仓库中将所述第一项目对应的代码文件下载到所述目标容器中,将所述服务器中已存储的所述依赖包获取至所述目标容器中,所述目标容器提供运行所述第一项目所需的应用程序;
响应于针对所述第一项目的打开指令,在所述目标容器中基于所述依赖包和所述代码文件运行所述第一项目。
2.根据权利要求1所述的项目运行方法,其特征在于,所述基于项目仓库中第一项目对应的代码文件,从资源仓库中获取所述第一项目对应的依赖包存储至所述服务器中包括:
响应于检测到所述项目仓库中所述第一项目对应的代码文件发生变更,从资源仓库中获取所述变更后的代码文件对应的依赖包,所述依赖包包括基于所述变更后的代码文件运行所述第一项目所需的资源数据;
将所述依赖包存储至所述服务器中所述第一项目对应的存储空间中,所述存储空间基于所述第一项目的项目信息确定。
3.根据权利要求1所述的项目运行方法,其特征在于,所述方法还包括:
响应于针对所述第一项目的容器创建请求,创建所述目标容器,所述容器创建请求携带所述第一项目的项目信息。
4.根据权利要求3所述的项目运行方法,其特征在于,所述将所述服务器中已存储的所述依赖包获取至所述目标容器中包括:
基于所述容器创建请求携带的项目信息,确定所述服务器中所述第一项目对应的存储空间;
基于所述存储空间,将所述服务器中已存储的所述依赖包获取至所述目标容器中。
5.根据权利要求4所述的项目运行方法,其特征在于,所述基于所述存储空间,将所述服务器中已存储的所述依赖包获取至所述目标容器中包括下述任一项:
从所述存储空间中,将已存储的所述依赖包复制到所述目标容器中;
将所述存储空间配置为允许所述目标容器访问,通过所述目标容器读取所述存储空间中的所述依赖包。
6.一种项目运行装置,其特征在于,应用于服务器中,所述装置包括:
第一获取单元,被配置为执行基于项目仓库中第一项目对应的代码文件,从资源仓库中获取所述第一项目对应的依赖包存储至所述服务器中,所述依赖包包括运行所述第一项目所需的资源数据;
第二获取单元,被配置为执行响应于针对所述第一项目的目标容器创建完成,从所述项目仓库中将所述第一项目对应的代码文件下载到所述目标容器中,将所述服务器中已存储的所述依赖包获取至所述目标容器中,所述目标容器提供运行所述第一项目所需的应用程序;
运行单元,被配置为执行响应于针对所述第一项目的打开指令,在所述目标容器中基于所述依赖包和所述代码文件运行所述第一项目。
7.根据权利要求6所述的项目运行装置,其特征在于,所述第一获取单元被配置为执行:
响应于检测到所述项目仓库中所述第一项目对应的代码文件发生变更,从资源仓库中获取所述变更后的代码文件对应的依赖包,所述依赖包包括基于所述变更后的代码文件运行所述第一项目所需的资源数据;
将所述依赖包存储至所述服务器中所述第一项目对应的存储空间中,所述存储空间基于所述第一项目的项目信息确定。
8.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
用于存储所述处理器可执行程序代码的存储器;
其中,所述处理器被配置为执行所述程序代码,以实现如权利要求1至5中任一项所述的项目运行方法。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的程序代码由服务器的处理器执行时,使得所述服务器能够执行如权利要求1至5中任一项所述的项目运行方法。
10.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行时实现如权利要求1至权利要求5中任一项所述的项目运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210429461.5A CN114860202A (zh) | 2022-04-22 | 2022-04-22 | 项目运行方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210429461.5A CN114860202A (zh) | 2022-04-22 | 2022-04-22 | 项目运行方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114860202A true CN114860202A (zh) | 2022-08-05 |
Family
ID=82632601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210429461.5A Pending CN114860202A (zh) | 2022-04-22 | 2022-04-22 | 项目运行方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114860202A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116400957A (zh) * | 2023-06-08 | 2023-07-07 | 四川数产范式科技有限公司 | 基于Git的代码管理方法、装置、设备及介质 |
-
2022
- 2022-04-22 CN CN202210429461.5A patent/CN114860202A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116400957A (zh) * | 2023-06-08 | 2023-07-07 | 四川数产范式科技有限公司 | 基于Git的代码管理方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10162624B1 (en) | Web shell for dynamically generated cross-platform applications | |
US20230289176A1 (en) | Integration of containers with external elements | |
US11385890B2 (en) | Shared software libraries for computing devices | |
US10019256B2 (en) | Systems and methods for incremental software development | |
US11340893B2 (en) | Mobile application update preserving changes to the application made by a client | |
US10698733B1 (en) | Integrated system to distribute and execute complex applications | |
US20230247090A1 (en) | Dynamic execution resource selection for customized workflow tasks | |
US10296298B1 (en) | Systems and methods for cross platform information exchange mechanism for integrating web-based components with a native application | |
US20160098253A1 (en) | Delivering and deploying services in multi-server landscapes | |
US10296309B1 (en) | Systems and methods for automatic API generation for bi-directional communication between native and web-based components of a mobile application | |
CN111897570A (zh) | 一种基于Maven插件的多依赖项文件提取方法及装置 | |
CN114860202A (zh) | 项目运行方法、装置、服务器及存储介质 | |
CN117707543A (zh) | 一种应用安装包制作和安装方法、计算设备及存储介质 | |
CN117573111A (zh) | 一种微服务部署方法、装置、设备及存储介质 | |
US10552135B1 (en) | Reducing a size of an application package | |
CN113791809B (zh) | 应用异常处理方法、装置以及计算机可读存储介质 | |
Krochmalski | Docker and Kubernetes for Java Developers | |
CN116069366A (zh) | 客户端应用程序更新方法及装置、存储介质及电子设备 | |
CN114860203A (zh) | 项目创建方法、装置、服务器及存储介质 | |
US20230093197A1 (en) | Generating executables for target operational environments | |
US8615736B2 (en) | Module facility for JAVASCRIPT language | |
CN115080077A (zh) | 插件更新方法、装置、电子设备、系统和存储介质 | |
US20240152371A1 (en) | Dynamic re-execution of parts of a containerized application pipeline | |
US10922238B2 (en) | Method for storing content, method for consulting content, method for managing content and content readers | |
Sello | Zamperla Analytics Service: design and deployment of a microservice architecture with Kubernetes |
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 |