CN109683912A - 软件集成与部署的方法、装置、服务器及存储介质 - Google Patents
软件集成与部署的方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN109683912A CN109683912A CN201811639824.8A CN201811639824A CN109683912A CN 109683912 A CN109683912 A CN 109683912A CN 201811639824 A CN201811639824 A CN 201811639824A CN 109683912 A CN109683912 A CN 109683912A
- Authority
- CN
- China
- Prior art keywords
- code
- branch
- deployment
- phase
- developer
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种软件集成与部署的方法,包括:接收终端向所述代码仓库推入的分支代码;调用持续集成模块为所述分支代码创建对应的站点空间,编译所述分支代码,并以目标模式将所述分支代码部署至所述站点空间,实现软件的自动集成与部署,以使所述验收人员进行功能验收。一方面,利用持续集成模块对软件开发不同阶段的代码自动编译与部署,无需人工集成和部署,提升了开发人员工作效率,并且避免了人工出错的可能性;另一方面,针对业务较多且频繁发布的项目,通过分支隔离能够避免同时开发多个功能带来的交叉困扰、测试混乱等,规范了开发与上线流程,能够较好地支持敏捷开发。本申请还公开了对应的装置、服务器及介质。
Description
技术领域
本申请涉及计算机技术领域,尤其一种软件持续集成与部署的方法、装 置、服务器及存储介质。
背景技术
敏捷软件开发(Agile software development)是近年来逐渐引起广泛关注 并普及的软件开发方法。该方法是为了应对快速变化的需求而提出的,相对 于非敏捷开发,该方法更强调程序员团队与业务专家之间的紧密协作、面对 面沟通、频繁交付新的软件版本等等。
在敏捷开发模式下,代码提交频繁,需求迭代紧凑。但是,在实际开发 中,开发人员不得不花费额外的时间用于耗时耗力的代码编译、测试、部署 工作上。
由开发人员人工对新提交的代码与源代码集成与部署,需要花费开发人 员大量时间,降低了工作效率,增加了人力成本,而且,人工操作还可能产 生额外的错误。因此,业界亟需提供一种软件集成与部署的方法,以提升开 发人员的工作效率,并且提升集成与部署的可靠性。
发明内容
有鉴于此,本申请提供了一种软件集成与部署的方法,其利用持续集成 模块对软件开发不同阶段的代码自动编译与部署,无需人工集成和部署,提 升了开发人员工作效率,并且避免了人工出错的可能性。对应地,本申请还 提供了对应的装置、服务器以及计算机存储介质。
本申请第一方面提供了一种软件集成与部署的方法,所述方法包括:
接收终端向所述代码仓库推入的分支代码;
调用持续集成模块为所述分支代码创建对应的站点空间,编译所述分支 代码,并以目标模式将所述分支代码部署至所述站点空间,以使所述验收人 员进行功能验收;
其中,软件开发过程包括开发阶段、预览阶段以及上线发布阶段,所述 目标模式是指分支代码在当前阶段的部署模式。
可选的,所述分支代码包括开发人员在所述开发阶段开发的特征前缀分 支、开发人员基于所述开发阶段最终提交的开发环境最新分支在所述预览阶 段创建的发布前缀分支或者所述上线发布阶段发生变更的版本标签对应的代 码;
其中,所述发生变更的版本标签对应的代码是开发人员将在预览阶段测 试通过的发布前缀分支合并到开发环境最新分支和生产环境最新分支,并根 据分支名称变更版本标签,然后同步至代码仓库的代码。
可选的,所述分支代码为所述特征前缀分支或者所述发布前缀分支时, 所述目标模式为调试模式;所述分支代码为所述发生变更的版本标签对应的 代码时,所述目标模式为生产模式。
可选的,所述方法还包括:
在所述预览阶段,接入真实数据源以实现所述分支代码的部署。
可选的,所述方法还包括:
若验收人员验收不通过,则返回提示信息以提示修改分支代码。
可选的,所述方法还包括:
在上线发布阶段,响应于开发人员触发的启动上线操作,通过持续集成 模块将已编译的代码同步至生成环境中。
可选的,所述方法还包括:
响应于开发人员触发的启动的指定历史版本上线操作,通过持续集成模 块编译所述指定历史版本对应的代码,将编译后的代码同步至生产环境中, 以实现回滚操作。
本申请第二方面提供了一种软件集成与部署的装置,所述装置维护有代 码仓库,所述装置包括:
接收单元,用于接收终端向所述代码仓库推入的分支代码;
处理单元,用于调用持续集成模块为所述分支代码创建对应的站点空间, 编译所述分支代码,并以目标模式将所述分支代码部署至所述站点空间,以 使所述验收人员进行功能验收;
其中,软件开发过程包括开发阶段、预览阶段以及上线发布阶段,所述 目标模式是指分支代码在当前阶段的部署模式。
可选的,所述分支代码包括开发人员在所述开发阶段开发的特征前缀分 支、开发人员基于所述开发阶段最终提交的开发环境最新分支在所述预览阶 段创建的发布前缀分支或者所述上线发布阶段发生变更的版本标签对应的代 码;
其中,所述发生变更的版本标签对应的代码是开发人员将在预览阶段测 试通过的发布前缀分支合并到开发环境最新分支和生产环境最新分支,并根 据分支名称变更版本标签,然后同步至代码仓库的代码。
可选的,所述分支代码为所述特征前缀分支或者所述发布前缀分支时, 所述目标模式为调试模式;所述分支代码为所述发生变更的版本标签对应的 代码时,所述目标模式为生产模式。
可选的,所述装置还包括:
接入单元,用于在所述预览阶段,接入真实数据源以实现所述分支代码 的部署。
可选的,所述装置还包括:
返回单元,用于若验收人员验收不通过,则返回提示信息以提示修改分 支代码。
可选的,所述装置还包括:
第一同步单元,用于在上线发布阶段,响应于开发人员触发的启动上线 操作,通过持续集成模块将已编译的代码同步至生成环境中。
可选的,所述装置还包括:
响应于开发人员触发的启动的指定历史版本上线操作,通过持续集成模 块编译所述指定历史版本对应的代码,将编译后的代码同步至生产环境中, 以实现回滚操作。
本申请第三方面提供了一种服务器,所述服务器包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行本申请第一方面所述的 软件集成与部署的方法。
本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储 介质用于存储程序代码,所述程序代码用于执行本申请第一方面所述的软件 集成与部署的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例中提供了一种软件集成与部署的方法,在软件开发的任一 阶段,接收到终端向代码仓库推入的分支代码时,可以调用持续集成模块为 分支代码创建对应的站点空间,编译该分支代码,并以当前阶段对应的目标 模式将编译后的代码部署至相应的站点空间,从而实现了软件集成与部署。 一方面,利用持续集成模块对软件开发不同阶段的代码自动编译与部署,无 需人工集成和部署,提升了开发人员工作效率,并且避免了人工出错的可能 性;另一方面,针对业务较多且频繁发布的项目,通过分支隔离能够避免同时开发多个功能带来的交叉困扰、测试混乱等,规范了开发与上线流程,能 够较好地支持敏捷开发。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实 施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面 描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不 付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例中一种软件集成与部署方法的流程图;
图2为本申请实施例中一种软件开发方法的流程图;
图3为本申请实施例中一种软件集成与部署装置的结构示意图;
图4为本申请实施例中一种服务器的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实 施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然, 所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申 请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的 所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第 三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的 顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这 里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺 序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排 他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设 备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了使得本申请的技术方案更加清楚、易于理解,首先对本申请涉及的 一些技术名词进行解释。
代码仓库是软件代码的存储机构,常用于代码管理和代码变动跟踪。代 码仓库,如git,提供有分支(branch)功能,通过利用branch能够有效地隔 离不同开发人员提交的代码。其中,通过定义不同的分支名称与前缀,能防 止开发时互相交叉造成代码混乱与混淆。代码仓库还提供有标签(tag)功能, tag能够在特定位置标注相应版本号与修改信息,方便代码定位与回滚操作。
软件集成是指在软件开发过程中将软件的各部分代码合并,或者将更新 代码和原有代码合并,并进行编译的过程。
软件部署是指将软件项目本身,包括配置文件、用户手册、帮助文档等 进行收集、打包、安装、配置、发布的过程。
部署环境是指在软件开发的不同阶段对软件项目进行部署的环境。部署 环境一般包括开发环境、测试环境以及生产环境。其中,开发环境是指专用 于开发的服务器,为了开发调试方便,一般打开全部错误报告和测试工具, 属于最基础的环境;测试环境是开发环境到生产环境的过渡环境,一般位于 私有服务器或者局域网服务器上,主要用于测试是否存在臭虫bug;生产环 境是指正式提供对外服务的服务器,在该服务器上一般会关掉错误报告,打 开错误日志。
针对现有技术中由开发人员人工对新提交的代码与源代码集成与部署所 导致的工作效率降低、人力成本增加以及产生额外错误的技术问题,本申请 提供了一种软件基础与部署的方法,该方法是基于持续集成模块实现的,具 体地,在软件开发的任一阶段,接收到终端向代码仓库推入的分支代码时, 可以调用持续集成模块为分支代码创建对应的站点空间,编译该分支代码, 并以当前阶段对应的目标模式将编译后的代码部署至相应的站点空间,从而 实现了软件集成与部署。
一方面,利用持续集成模块对软件开发不同阶段的代码自动编译与部署, 无需人工集成和部署,提升了开发人员工作效率,并且避免了人工出错的可 能性;另一方面,针对业务较多且频繁发布的项目,通过分支隔离能够避免 同时开发多个功能带来的交叉困扰、测试混乱等,规范了开发与上线流程, 能够较好地支持敏捷开发。
可以理解,本申请提供的软件集成与部署的方法应用于服务器。在本实 施例中,服务器是提供软件自动集成与部署服务的计算设备,需要说明的是, 服务器可以是独立的,也可以多个服务器形成的服务器集群,可以根据实际 业务需求而设置。上述软件基础与部署的方法以应用程序的形式存储于服务 器中,服务器通过执行应用程序,实现本申请提供的上述方法。
接下来,将结合附图对本申请实施例提供的软件集成与部署的方法进行 介绍。
参见图1所示的软件集成与部署的方法流程图,该方法应用于服务器, 服务器中维护有代码仓库,该方法包括:
S101:接收终端向所述代码仓库推入的分支代码。
软件开发一般是由团队协作开发完成,开发团队的开发人员开发各自负 责的功能模块,通过利用代码仓库提供的分支功能可以实现代码隔离,避免 代码混乱或混淆。在具体实现时,开发人员可以通过终端创建分支,并通过 终端向代码仓库推入分支代码。
软件开发过程包括开发阶段、预览阶段以及上线发布阶段。分支代码可 以是上述任一阶段的代码,具体可以为开发人员在所述开发阶段开发的特征 前缀分支、开发人员基于所述开发阶段最终提交的开发环境最新分支在所述 预览阶段创建的发布前缀分支或者所述上线发布阶段发生变更的版本标签对 应的代码;
在开发阶段,开发人员可以通过终端创建特征前缀分支,其中,特征前 缀分支是指feature前缀命名的分支,例如feature/payment等,在开发完成后, 开发人员可以通过其终端将该分支推入代码仓库中。
在该阶段,需求提出者会进行相关功能验收,并签发修改意见,开发人 员可以基于该修改意见修改feature分支,然后再提交至代码仓库,直至无需 再修改。然后,开发人员可以通过终端将feature分支合并到开发环境最新分 支,即develop分支,形成新的develop分支,然后提交到代码仓库。
在预览阶段,开发人员可以通过终端创建发布前缀分支,其中,发布前 缀分支是指以release前缀命名的分支。具体地,发布前缀分支一般以 release/x.x.x格式命名,release为前缀,x.x.x为版本号,该分支表征即将发布 x.x.x版本软件。例如,release/1.0.0表示即将发布1.0.0版本。开发人员创建 分支,并修改代码完成后,将该分支推入代码仓库。
需要说明的是,发布前缀分支是开发人员在预览阶段基于开发阶段最终 提交的开发环境最新分支创建的。具体地,基于开发阶段最终提交的develop 分支,可以派生出新的分支,该分支可以命名为以release为前缀的分支,形 成发布前缀分支。
在该阶段,测试人员可以进行相关功能验收,撰写测试文档,签发修改 意见。开发人员可以根据反馈的修改意见修改该分支对应的代码,然后再将 分支代码推入代码仓库,直至测试完全通过。测试完全通过后,通过终端将 该发布前缀分支同时合并到开发环境最新分支和生产环境最新分支,然后根 据分支名称添加版本标签tag,并将上述变更同步到代码仓库。
在上线发布阶段,代码仓库接收到版本标签变更提交时,与版本标签tag 对应的代码也会从终端同步提交到代码仓库。
S102:调用持续集成模块为所述分支代码创建对应的站点空间,编译所 述分支代码,并以目标模式将所述分支代码部署至所述站点空间,以使所述 验收人员进行功能验收。
在实际应用中,一般可以通过代码仓库管理工具实现对代码仓库的管理。 代码仓库管理工具提供与用于持续集成(Continuous integration,CI)的功能 模块,即持续集成模块。以代码仓库git为例,与该代码仓库对应的仓库管理 工具包括Gitlab。Gitlab是一个基于Ruby和Golang语言开发的git仓库管理 工具,Gitlab中提供有CI程序也即CI模块,通过调用CI模块,能够实现自 动集成。
在本实施例中,服务器调用CI模块为分支代码创建对应的站点空间,编 译分支代码,并以目标模式将分支代码部署至该站点空间,以使得验收人员 进行功能验收。其中,软件开发过程包括开发阶段、预览阶段以及上线发布 阶段,所述目标模式是指分支代码在当前阶段的部署模式。
具体地,在开发阶段,若当前域名为example.com,则服务器在接收到终 端向代码仓库推入的feature-payment分支后,调用CI模块创建对应的站点空 间feature-payment.example.com,并自动编译分支代码,以调试模式将编译后 的代码部署到上述站点空间。
在预览阶段,若当前域名为example.com,则服务器在接收到终端向代码 仓库推入的release分支后,调用CI模块创建对应的站点空间 alpha.example.com,并自动编译分支代码,以调试模式将编译后的代码部署到 上述站点空间。
需要说明的是,所述分支代码为所述特征前缀分支或者所述发布前缀分 支时,所述目标模式为调试模式,也即在开发阶段或预览阶段,服务器以调 试模式部署分支代码;所述分支代码为所述发生变更的版本标签对应的代码 时,所述目标模式为生产模式,也即在上线发布阶段,服务器以生产模式部 署分支代码。
还需要说明的是,在预览阶段,服务器还接入真实数据源以实现分支代 码的部署,如此,软件项目所需读取和写入的数据均为真实数据,采用真实 数据对即将上线的版本进行测试,可以提前检查出问题,有利于提高软件可 用性与质量。
在该实施例中,服务器在将软件代码部署到相应的环境中后,验收人员 可以对相关功能进行验收,其中,验收人员可以包括需求提出者、测试人员, 在有些情况下,验收人员还可以包括用户。在实际应用时,若验收人员验收 不通过,服务器还可以返回提示信息以提示修改分支代码。
在一些可能的实现方式中,在上线发布阶段,服务器还可以响应于开发 人员触发的启动上线操作,通过持续集成模块将已编译的代码同步至生成环 境中,从而完成软件上线。当然,服务器还可以同CI模块自动发送上线邮件 至对应邮箱中,以通知上线信息,上线信息具体可以包括上线变更内容与上 线时间。
由于CI模式采用按版本发布的方式,因此,在发布出错时,服务器还可 以基于版本号回滚到历史版本,如上一版本。在具体实现时,服务器响应于 开发人员触发的启动的指定历史版本上线操作,通过持续集成模块编译所述 指定历史版本对应的代码,将编译后的代码同步至生产环境中,以实现回滚 操作。
由上可知,本申请实施例中提供了一种软件集成与部署的方法,在软件 开发的任一阶段,接收到终端向代码仓库推入的分支代码时,可以调用持续 集成模块为分支代码创建对应的站点空间,编译该分支代码,并以当前阶段 对应的目标模式将编译后的代码部署至相应的站点空间,从而实现了软件集 成与部署。一方面,利用持续集成模块对软件开发不同阶段的代码自动编译 与部署,无需人工集成和部署,提升了开发人员工作效率,并且避免了人工 出错的可能性;另一方面,针对业务较多且频繁发布的项目,通过分支隔离 能够避免同时开发多个功能带来的交叉困扰、测试混乱等,规范了开发与上 线流程,能够较好地支持敏捷开发。
在实际应用中,当软件存在漏洞或安全问题时,除了在已有代码基础上 进行二次开发外,还可以利用热修复(hotfix)程序解决该漏洞或安全问题, 基于此,hotfix程序也称为修补程序。在进行软件开发时,开发人员可以根据 实际需求选择基于已有代码进行二次开发或者基于hotfix对软件进行修补,实 现软件版本升级。
为了使得本申请的技术方案更加清楚、易于理解,下面将结合附图对本 实施例的软件开发方法进行介绍。
参见图2所示的软件开发方法的流程图,开发人员可以初始化master分 支,此时软件版本号为v0.1,其中,master分支派生出develop分支,以便继 续进行软件开发。在该示例中,由于软件存在漏洞,开发人员利用hotfix程序 修补该软件,实现软件升级,其版本号变更为0.2。此外,开发团队中的不同 开发人员根据业务需求分别开发不同功能,针对每个功能分布创建一个feature 分支,在开发过程中,开发人员可以将代码提交至代码仓库gitlab托管。由于 业务需求是可变的,因此,在开发过程中,针对一些功能的feature分支能够 保留并合并到develop分支,而针对另一些功能的feature分支会被丢弃。
以上为开发阶段的具体实现,接着,开发人员将会对软件进行测试。具 体地,开发人员基于develop分支创建release分支并修改代码,与开发阶段 类似,开发人员可以将release分支代码提交至gitlab保存,代码修改完成后 即形成预览版软件,也即release版软件。测试人员可以基于release版软件进 行测试,然后反馈修改意见给开发人员,开发人员基于修改意见进行修改, 再提交代码以便测试人员测试,直至测试完全通过。
接着,开发人员即可根据测试完全通过的软件进行上线发布。具体地, 开发人员变更软件tag,如变更为v1.0,并向gitlab提交该变更,gitlab收到tag 变更提交,CI模块自动为该tag对应代码编译、部署,并且部署代码均为生 产模式。大概修改数据库、初始化数据等准备工作完成后,由开发人员启动 上线操作,CI模块将已编译好的代码同步到生产环境中,从而完成上线。
以上为本申请实施例提供的软件集成与部署的方法,基于此,本申请实 施例还提供了对应的装置,下面将从功能模块化的角度对本申请实施例提供 的软件集成与部署的装置进行介绍。
参见图3所示的软件集成与部署的装置的结构示意图,所述装置300维 护有代码仓库,所述装置300包括:
接收单元310,用于接收终端向所述代码仓库推入的分支代码;
处理单元320,用于调用持续集成模块为所述分支代码创建对应的站点空 间,编译所述分支代码,并以目标模式将所述分支代码部署至所述站点空间, 以使所述验收人员进行功能验收;
其中,软件开发过程包括开发阶段、预览阶段以及上线发布阶段,所述 目标模式是指分支代码在当前阶段的部署模式。
可选的,所述分支代码包括开发人员在所述开发阶段开发的特征前缀分 支、开发人员基于所述开发阶段最终提交的开发环境最新分支在所述预览阶 段创建的发布前缀分支或者所述上线发布阶段发生变更的版本标签对应的代 码;
其中,所述发生变更的版本标签对应的代码是开发人员将在预览阶段测 试通过的发布前缀分支合并到开发环境最新分支和生产环境最新分支,并根 据分支名称变更版本标签,然后同步至代码仓库的代码。
可选的,所述分支代码为所述特征前缀分支或者所述发布前缀分支时, 所述目标模式为调试模式;所述分支代码为所述发生变更的版本标签对应的 代码时,所述目标模式为生产模式。
可选的,所述装置300还包括:
接入单元,用于在所述预览阶段,接入真实数据源以实现所述分支代码 的部署。
可选的,所述装置300还包括:
返回单元,用于若验收人员验收不通过,则返回提示信息以提示修改分 支代码。
可选的,所述装置300还包括:
第一同步单元,用于在上线发布阶段,响应于开发人员触发的启动上线 操作,通过持续集成模块将已编译的代码同步至生成环境中。
可选的,所述装置300还包括:
第二同步单元,响应于开发人员触发的启动的指定历史版本上线操作, 通过持续集成模块编译所述指定历史版本对应的代码,将编译后的代码同步 至生产环境中,以实现回滚操作。
本申请实施例中提供了一种软件集成与部署的装置,在软件开发的任一 阶段,接收到终端向代码仓库推入的分支代码时,可以调用持续集成模块为 分支代码创建对应的站点空间,编译该分支代码,并以当前阶段对应的目标 模式将编译后的代码部署至相应的站点空间,从而实现了软件集成与部署。 一方面,利用持续集成模块对软件开发不同阶段的代码自动编译与部署,无 需人工集成和部署,提升了开发人员工作效率,并且避免了人工出错的可能 性;另一方面,针对业务较多且频繁发布的项目,通过分支隔离能够避免同时开发多个功能带来的交叉困扰、测试混乱等,规范了开发与上线流程,能 够较好地支持敏捷开发。
本申请实施例还提供了一种用于软件集成与部署的服务器,下面将从硬 件实体化的角度,对本申请实施例提供的服务器进行示例性说明。
图4是本申请实施例提供的一种服务器的结构示意图,该服务器400可 因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理 器(centralprocessing units,CPU)422(例如,一个或一个以上处理器)和存 储器432,一个或一个以上存储应用程序442或数据444的存储介质430(例 如一个或一个以上海量存储设备)。其中,存储器432和存储介质430可以是 短暂存储或持久存储。存储在存储介质430的程序可以包括一个或一个以上 模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进 一步地,中央处理器422可以设置为与存储介质430通信,在服务器400上 执行存储介质430中的一系列指令操作。
服务器400还可以包括一个或一个以上电源426,一个或一个以上有线或 无线网络接口450,一个或一个以上输入输出接口458,和/或,一个或一个以 上操作系统441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM, FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于该图4所示的服务器结构。
其中,CPU 422用于执行如下步骤:
接收终端向所述代码仓库推入的分支代码;
调用持续集成模块为所述分支代码创建对应的站点空间,编译所述分支 代码,并以目标模式将所述分支代码部署至所述站点空间,以使所述验收人 员进行功能验收;
其中,软件开发过程包括开发阶段、预览阶段以及上线发布阶段,所述 目标模式是指分支代码在当前阶段的部署模式。
可选的,CPU 422还用于执行本申实施例中软件集成与部署的方法的任 意一种实现方式的步骤。
本申请实施例还提供一种计算机可读存储介质,用于存储程序代码,该 程序代码用于执行前述各个实施例所述的一种软件集成与部署的方法中的任 意一种实施方式。
本申请实施例还提供一种包括指令的计算机程序产品,当其在计算机上 运行时,使得计算机执行前述各个实施例所述的一种软件集成与部署的方法 中的任意一种实施方式。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描 述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应 过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和 方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示 意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可 以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个 系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间 的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合 或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作 为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方, 或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或 者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中, 也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单 元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单 元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售 或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本 申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的 全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个 存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步 骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-Only Memory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个” 是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存 在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存 在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后 关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项 中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或 c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或 “a和b和c”,其中a,b,c可以是单个,也可以是多个。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制; 尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应 当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其 中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案 的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种软件集成与部署的方法,其特征在于,应用于服务器,所述服务器维护有代码仓库,所述方法包括:
接收终端向所述代码仓库推入的分支代码;
调用持续集成模块为所述分支代码创建对应的站点空间,编译所述分支代码,并以目标模式将所述分支代码部署至所述站点空间,以使所述验收人员进行功能验收;
其中,软件开发过程包括开发阶段、预览阶段以及上线发布阶段,所述目标模式是指分支代码在当前阶段的部署模式。
2.根据权利要求1所述的方法,其特征在于,所述分支代码包括开发人员在所述开发阶段开发的特征前缀分支、开发人员基于所述开发阶段最终提交的开发环境最新分支在所述预览阶段创建的发布前缀分支或者所述上线发布阶段发生变更的版本标签对应的代码;
其中,所述发生变更的版本标签对应的代码是开发人员将在预览阶段测试通过的发布前缀分支合并到开发环境最新分支和生产环境最新分支,并根据分支名称变更版本标签,然后同步至代码仓库的代码。
3.根据权利要求2所述的方法,其特征在于,所述分支代码为所述特征前缀分支或者所述发布前缀分支时,所述目标模式为调试模式;所述分支代码为所述发生变更的版本标签对应的代码时,所述目标模式为生产模式。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述预览阶段,接入真实数据源以实现所述分支代码的部署。
5.根据权利要求1至4任意一项所述的方法,其特征在于,所述方法还包括:
若验收人员验收不通过,则返回提示信息以提示修改分支代码。
6.根据权利要求1至4任意一项所述的方法,其特征在于,所述方法还包括:
在上线发布阶段,响应于开发人员触发的启动上线操作,通过持续集成模块将已编译的代码同步至生成环境中。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
响应于开发人员触发的启动的指定历史版本上线操作,通过持续集成模块编译所述指定历史版本对应的代码,将编译后的代码同步至生产环境中,以实现回滚操作。
8.一种软件集成与部署的装置,其特征在于,所述装置维护有代码仓库,所述装置包括:
接收单元,用于接收终端向所述代码仓库推入的分支代码;
处理单元,用于调用持续集成模块为所述分支代码创建对应的站点空间,编译所述分支代码,并以目标模式将所述分支代码部署至所述站点空间,以使所述验收人员进行功能验收;
其中,软件开发过程包括开发阶段、预览阶段以及上线发布阶段,所述目标模式是指分支代码在当前阶段的部署模式。
9.一种服务器,其特征在于,所述服务器包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1至7任一项所述的软件集成与部署的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行权利要求1至7任一项所述的软件集成与部署的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811639824.8A CN109683912A (zh) | 2018-12-29 | 2018-12-29 | 软件集成与部署的方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811639824.8A CN109683912A (zh) | 2018-12-29 | 2018-12-29 | 软件集成与部署的方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109683912A true CN109683912A (zh) | 2019-04-26 |
Family
ID=66191236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811639824.8A Pending CN109683912A (zh) | 2018-12-29 | 2018-12-29 | 软件集成与部署的方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109683912A (zh) |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110187914A (zh) * | 2019-05-23 | 2019-08-30 | 杭州火小二科技有限公司 | 应用开发方法、系统及装置 |
CN110308911A (zh) * | 2019-07-09 | 2019-10-08 | 西安点告网络科技有限公司 | 软件程序交付方法、装置、终端及存储介质 |
CN110377335A (zh) * | 2019-07-26 | 2019-10-25 | 上海携程商务有限公司 | 代码集成加速方法及系统 |
CN110569044A (zh) * | 2019-09-09 | 2019-12-13 | 山东浪潮通软信息科技有限公司 | 一种将应用部署到运行环境的方法、装置及系统 |
CN111142879A (zh) * | 2019-12-05 | 2020-05-12 | 深圳融卡智能科技有限公司 | 软件集成发布方法及自动运维平台 |
CN111190584A (zh) * | 2019-12-10 | 2020-05-22 | 平安健康保险股份有限公司 | Ehis-db系统版本发布方法、装置、计算机设备和存储介质 |
CN111209002A (zh) * | 2019-12-26 | 2020-05-29 | 远光软件股份有限公司 | 程序包的开发部署方法、服务器及计算机可读存储介质 |
CN111488136A (zh) * | 2020-04-07 | 2020-08-04 | 携程旅游网络技术(上海)有限公司 | 持续集成和持续交付方法、系统、设备及存储介质 |
CN111651352A (zh) * | 2020-05-29 | 2020-09-11 | 成都新潮传媒集团有限公司 | 一种仓库代码的合并方法及装置 |
CN111782186A (zh) * | 2020-07-03 | 2020-10-16 | 携程旅游网络技术(上海)有限公司 | 工作流管理方法、系统、设备及存储介质 |
CN111813382A (zh) * | 2020-06-23 | 2020-10-23 | 四川虹美智能科技有限公司 | 无形资产管理系统及方法 |
CN111857738A (zh) * | 2020-08-05 | 2020-10-30 | 北京千丁互联科技有限公司 | 一种私有化部署方法及装置 |
CN112162742A (zh) * | 2020-08-21 | 2021-01-01 | 长沙市到家悠享网络科技有限公司 | 代码部署方法、装置、设备 |
CN112181484A (zh) * | 2020-10-10 | 2021-01-05 | 浪潮云信息技术股份公司 | 一种基于svn仓库的可视化代码预览方法 |
CN112379918A (zh) * | 2020-12-04 | 2021-02-19 | 北京顺达同行科技有限公司 | 代码发布方法、装置、计算机设备和存储介质 |
CN112463147A (zh) * | 2020-11-26 | 2021-03-09 | 杭州览众数据科技有限公司 | 一种针对通用化模型客制化需求开发框架 |
CN112596783A (zh) * | 2020-12-28 | 2021-04-02 | 上海品顺信息科技有限公司 | 代码自动合并方法、装置、计算机设备和存储介质 |
CN112947986A (zh) * | 2020-09-29 | 2021-06-11 | 深圳市明源云科技有限公司 | 多版本代码签入控制方法、装置、客户端及存储介质 |
CN112947949A (zh) * | 2020-09-22 | 2021-06-11 | 深圳市明源云科技有限公司 | 应用程序安装方法、装置及电子设备 |
CN113127027A (zh) * | 2019-12-31 | 2021-07-16 | 深圳云天励飞技术有限公司 | 一种基于分布式版本控制系统的版本更新方法及装置 |
CN113688028A (zh) * | 2020-05-19 | 2021-11-23 | 成都鼎桥通信技术有限公司 | 代码提交方法和装置 |
CN113703830A (zh) * | 2021-09-02 | 2021-11-26 | 挂号网(杭州)科技有限公司 | 一种代码打包方法及装置、电子设备、存储介质 |
CN113835742A (zh) * | 2020-06-24 | 2021-12-24 | 迈普通信技术股份有限公司 | 持续集成方法及软件开发系统 |
CN115509544A (zh) * | 2022-11-22 | 2022-12-23 | 成都佰维存储科技有限公司 | Nvme持续集成方法、装置、可读存储介质及电子设备 |
CN116661758A (zh) * | 2023-08-01 | 2023-08-29 | 青岛蓝图智库信息技术有限公司 | 一种优化日志框架配置的方法、装置、电子设备及介质 |
CN116909933A (zh) * | 2023-09-12 | 2023-10-20 | 云账户技术(天津)有限公司 | 一种流水线式功能服务的发布方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336688A (zh) * | 2013-06-20 | 2013-10-02 | 中标软件有限公司 | 面向云计算软件研发过程中的软件集成方法及系统 |
CN107678773A (zh) * | 2017-09-28 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种基于git的代码开发与测试流程管理方法 |
US20180373502A1 (en) * | 2017-06-27 | 2018-12-27 | Atlassian Pty Ltd | Displaying status data in a source code development system |
-
2018
- 2018-12-29 CN CN201811639824.8A patent/CN109683912A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336688A (zh) * | 2013-06-20 | 2013-10-02 | 中标软件有限公司 | 面向云计算软件研发过程中的软件集成方法及系统 |
US20180373502A1 (en) * | 2017-06-27 | 2018-12-27 | Atlassian Pty Ltd | Displaying status data in a source code development system |
CN107678773A (zh) * | 2017-09-28 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种基于git的代码开发与测试流程管理方法 |
Non-Patent Citations (3)
Title |
---|
JADEPENG: "jenkins X实践系列(2)—— 基于jx的DevOps实践", 《博客园 HTTPS://WWW.CNBLOGS.COM/XIAOQI/P/JENKINS-X-PART2.HTML》 * |
WORKDSZ: "持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本", 《CSDN博客 HTTPS://BLOG.CSDN.NET/WORKDSZ/ARTICLE/DETAILS/77947870》 * |
赵文耘等: "《软件工程 方法与实践》", 31 December 2014, 复旦大学出版社 * |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110187914A (zh) * | 2019-05-23 | 2019-08-30 | 杭州火小二科技有限公司 | 应用开发方法、系统及装置 |
CN110308911A (zh) * | 2019-07-09 | 2019-10-08 | 西安点告网络科技有限公司 | 软件程序交付方法、装置、终端及存储介质 |
CN110377335A (zh) * | 2019-07-26 | 2019-10-25 | 上海携程商务有限公司 | 代码集成加速方法及系统 |
CN110569044A (zh) * | 2019-09-09 | 2019-12-13 | 山东浪潮通软信息科技有限公司 | 一种将应用部署到运行环境的方法、装置及系统 |
CN110569044B (zh) * | 2019-09-09 | 2022-07-12 | 浪潮通用软件有限公司 | 一种将应用部署到运行环境的方法、装置及系统 |
CN111142879A (zh) * | 2019-12-05 | 2020-05-12 | 深圳融卡智能科技有限公司 | 软件集成发布方法及自动运维平台 |
CN111142879B (zh) * | 2019-12-05 | 2023-12-26 | 无锡融卡科技有限公司 | 软件集成发布方法及自动运维平台 |
CN111190584A (zh) * | 2019-12-10 | 2020-05-22 | 平安健康保险股份有限公司 | Ehis-db系统版本发布方法、装置、计算机设备和存储介质 |
CN111190584B (zh) * | 2019-12-10 | 2024-06-18 | 平安健康保险股份有限公司 | Ehis-db系统版本发布方法、装置、计算机设备和存储介质 |
CN111209002B (zh) * | 2019-12-26 | 2024-04-12 | 远光软件股份有限公司 | 程序包的开发部署方法、服务器及计算机可读存储介质 |
CN111209002A (zh) * | 2019-12-26 | 2020-05-29 | 远光软件股份有限公司 | 程序包的开发部署方法、服务器及计算机可读存储介质 |
CN113127027A (zh) * | 2019-12-31 | 2021-07-16 | 深圳云天励飞技术有限公司 | 一种基于分布式版本控制系统的版本更新方法及装置 |
CN111488136A (zh) * | 2020-04-07 | 2020-08-04 | 携程旅游网络技术(上海)有限公司 | 持续集成和持续交付方法、系统、设备及存储介质 |
CN113688028B (zh) * | 2020-05-19 | 2023-08-15 | 成都鼎桥通信技术有限公司 | 代码提交方法和装置 |
CN113688028A (zh) * | 2020-05-19 | 2021-11-23 | 成都鼎桥通信技术有限公司 | 代码提交方法和装置 |
CN111651352A (zh) * | 2020-05-29 | 2020-09-11 | 成都新潮传媒集团有限公司 | 一种仓库代码的合并方法及装置 |
CN111813382A (zh) * | 2020-06-23 | 2020-10-23 | 四川虹美智能科技有限公司 | 无形资产管理系统及方法 |
CN113835742A (zh) * | 2020-06-24 | 2021-12-24 | 迈普通信技术股份有限公司 | 持续集成方法及软件开发系统 |
CN111782186A (zh) * | 2020-07-03 | 2020-10-16 | 携程旅游网络技术(上海)有限公司 | 工作流管理方法、系统、设备及存储介质 |
CN111857738A (zh) * | 2020-08-05 | 2020-10-30 | 北京千丁互联科技有限公司 | 一种私有化部署方法及装置 |
CN112162742A (zh) * | 2020-08-21 | 2021-01-01 | 长沙市到家悠享网络科技有限公司 | 代码部署方法、装置、设备 |
CN112947949A (zh) * | 2020-09-22 | 2021-06-11 | 深圳市明源云科技有限公司 | 应用程序安装方法、装置及电子设备 |
CN112947986A (zh) * | 2020-09-29 | 2021-06-11 | 深圳市明源云科技有限公司 | 多版本代码签入控制方法、装置、客户端及存储介质 |
CN112947986B (zh) * | 2020-09-29 | 2024-05-24 | 深圳市明源云科技有限公司 | 多版本代码签入控制方法、装置、客户端及存储介质 |
CN112181484A (zh) * | 2020-10-10 | 2021-01-05 | 浪潮云信息技术股份公司 | 一种基于svn仓库的可视化代码预览方法 |
CN112463147A (zh) * | 2020-11-26 | 2021-03-09 | 杭州览众数据科技有限公司 | 一种针对通用化模型客制化需求开发框架 |
CN112463147B (zh) * | 2020-11-26 | 2023-07-04 | 杭州览众数据科技有限公司 | 一种针对通用化模型客制化需求开发方法 |
CN112379918A (zh) * | 2020-12-04 | 2021-02-19 | 北京顺达同行科技有限公司 | 代码发布方法、装置、计算机设备和存储介质 |
CN112379918B (zh) * | 2020-12-04 | 2024-04-19 | 北京顺达同行科技有限公司 | 代码发布方法、装置、计算机设备和存储介质 |
CN112596783A (zh) * | 2020-12-28 | 2021-04-02 | 上海品顺信息科技有限公司 | 代码自动合并方法、装置、计算机设备和存储介质 |
CN113703830A (zh) * | 2021-09-02 | 2021-11-26 | 挂号网(杭州)科技有限公司 | 一种代码打包方法及装置、电子设备、存储介质 |
CN115509544B (zh) * | 2022-11-22 | 2023-03-21 | 成都佰维存储科技有限公司 | Nvme持续集成方法、装置、可读存储介质及电子设备 |
CN115509544A (zh) * | 2022-11-22 | 2022-12-23 | 成都佰维存储科技有限公司 | Nvme持续集成方法、装置、可读存储介质及电子设备 |
CN116661758A (zh) * | 2023-08-01 | 2023-08-29 | 青岛蓝图智库信息技术有限公司 | 一种优化日志框架配置的方法、装置、电子设备及介质 |
CN116661758B (zh) * | 2023-08-01 | 2023-11-03 | 青岛蓝图智库信息技术有限公司 | 一种优化日志框架配置的方法、装置、电子设备及介质 |
CN116909933A (zh) * | 2023-09-12 | 2023-10-20 | 云账户技术(天津)有限公司 | 一种流水线式功能服务的发布方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109683912A (zh) | 软件集成与部署的方法、装置、服务器及存储介质 | |
CN111414172B (zh) | 应用软件自动部署发布系统及方法 | |
CA2925015C (en) | System and method for testing data representation for different mobile devices | |
US7334219B2 (en) | Method and system for object level software testing | |
JP5350428B2 (ja) | 自動プログラム生成装置、方法及びコンピュータプログラム | |
AU2016201389A1 (en) | Method and system for process automation in computing | |
US20150212927A1 (en) | Application Testing Automation | |
CN106648556B (zh) | 前后端集成开发测试的方法及装置 | |
CN104756086A (zh) | 用于调试依领域而定的语言的系统和方法 | |
US20080276221A1 (en) | Method and apparatus for relations planning and validation | |
US11580008B2 (en) | Method and system for synchronous development and testing of live, multi-tenant microservices based SaaS systems | |
CN107729246A (zh) | 针对目标应用的辅助测试方法、装置、设备及存储介质 | |
CN111881042A (zh) | 自动化测试脚本的生成方法、装置和电子设备 | |
CN112732561A (zh) | 一种项目部署方法、装置、计算机设备和存储介质 | |
CN109558146A (zh) | 应用程序发布方法、装置和存储介质 | |
CN114675987A (zh) | 一种缓存数据处理方法、装置、计算机设备和存储介质 | |
CN110442395A (zh) | 产品配置数据的发布方法、装置、前端服务器及后端服务器 | |
CN110489336A (zh) | 一种软件接口测试用例生成与维护方法及其装置 | |
CN100474254C (zh) | 手机仿真系统及其方法 | |
CN110471828B (zh) | 一种操作系统测试方法、装置及其设备 | |
CN110471767A (zh) | 一种设备的调度方法 | |
CN111338632A (zh) | 一种云平台镜像构建方法和装置 | |
CN115904933A (zh) | 代码仓库管理方法、装置、电子设备及存储介质 | |
CN111538606B (zh) | 一种测试模拟Dubbo接口的方法、装置及设备 | |
RU2729210C1 (ru) | Комплекс тестирования программного обеспечения электронных устройств |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190426 |