CN107797914B - 代码处理方法、装置及代码发布*** - Google Patents

代码处理方法、装置及代码发布*** Download PDF

Info

Publication number
CN107797914B
CN107797914B CN201610807131.XA CN201610807131A CN107797914B CN 107797914 B CN107797914 B CN 107797914B CN 201610807131 A CN201610807131 A CN 201610807131A CN 107797914 B CN107797914 B CN 107797914B
Authority
CN
China
Prior art keywords
container
code set
code
copy
environment
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
CN201610807131.XA
Other languages
English (en)
Other versions
CN107797914A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610807131.XA priority Critical patent/CN107797914B/zh
Publication of CN107797914A publication Critical patent/CN107797914A/zh
Application granted granted Critical
Publication of CN107797914B publication Critical patent/CN107797914B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例公开了代码处理方法、装置及代码发布***。所述方法包括:至少基于代码集以及所述代码集的开发环境,构建容器副本;至少根据所述容器副本构建第一容器,并在所述第一容器中对所述代码集进行测试,所述第一容器的容器环境与所述代码集的开发环境相匹配;若所述代码集通过测试,则构建第二容器,并在所述第二容器中对所述代码集进行验证,所述第二容器的容器环境与所述代码集的生产环境相匹配;若所述代码集通过验证,则发布所述代码集。利用本申请方法或装置实施例,可以保证代码运行环境的一致性,提高代码的发布效率。

Description

代码处理方法、装置及代码发布***
技术领域
本申请涉及计算机软件开发与发布技术领域,特别涉及代码处理方法、装置及代码发布***。
背景技术
计算机软件产品的生产过程一般需要经过开发、测试、发布三个阶段。随着软件生产的自动化技术的发展,传统的人工处理的软件生产过程已经转型为从持续集成到持续部署、持续发布的软件自动化生产过程。在软件自动化生产过程中,持续集成可以不断地将软件个人研发部分向整体部分交付,以便尽早地发现个人开发部分的问题,持续部署可以将研发尽快向可运行的测试环节交付,使得研发加快完成并通过测试。
现有的软件自动化生产过程主要基于虚拟机技术,由于不同的软件开发项目,或者一个软件开发项目在不同的开发阶段,往往需要不同的测试环境,因此,通常需要多台机器或者多台虚拟机器才可以完成软件自动化生产过程。但是,在软件产品生命周期中,由于开发、测试应用程序安装包的版本或者依赖关系的不同,运行和维护人员难以保证代码在各个阶段的运行环境相同。例如,开发人员个人运行的线下开发环境如果完成升级,而线上开发环境需要维护人员进行手动操作才可以升级,如果维护人员不能及时统一开发环境,那么相同的代码在线上开发环境和线下开发环境的测试结果可能存在误差。另外,采用多台机器或者多台虚拟机器进行软件开发不仅增加维护成本,还浪费硬件资源。
现有的代码处理过程中难以保证各个阶段的运行环境相同,并且采用多台机器或者多台虚拟机器进行软件开发不仅增加维护成本,还浪费硬件资源。
发明内容
本申请实施例的目的在于提供代码处理方法、装置及代码发布***,可以保证代码运行环境的一致性,提高代码的发布效率。
本申请实施例提供的代码处理方法、装置及代码发布***是这样实现的:
一种代码处理方法,所述方法包括:
至少基于代码集以及所述代码集的开发环境构建容器副本;
至少根据所述容器副本构建第一容器,并在所述第一容器中对所述代码集进行测试,所述第一容器的容器环境与所述代码集的开发环境相匹配;
若所述代码集通过测试,则至少根据所述容器副本构建第二容器,并在所述第二容器中对所述代码集进行验证,所述第二容器的容器环境与所述代码集的生产环境相匹配;
若所述代码集通过验证,则发布所述代码集。
一种代码处理装置,所述装置包括:
容器副本构建单元,用于至少基于代码集以及所述代码集的开发环境构建容器副本;
代码集测试单元,用于至少根据所述容器副本构建第一容器,并在所述第一容器中对所述代码集进行测试,所述第一容器的容器环境与所述代码集的开发环境相匹配;
代码集验证单元,用于若所述代码集通过测试,则至少根据所述容器副本构建第二容器,并在所述第二容器中对所述代码集进行验证,所述第二容器的容器环境与所述代码集的生产环境相匹配;
代码集发布单元,用于若所述代码集通过验证,则发布所述代码集。
一种代码处理方法,所述方法包括:
至少基于代码集以及所述代码集的开发环境,构建容器副本;
至少根据所述容器副本构建容器;
在所述容器中对所述代码集进行操作。
一种代码处理装置,所述装置包括:
容器副本构建单元,用于至少基于代码集以及所述代码集的开发环境,构建容器副本;
容器构建单元,用于至少根据所述容器副本构建容器;
代码集操作单元,用于在所述容器中对所述代码集进行操作。
一种代码发布***,包括I/O接口、代码存储单元、容器副本存储单元、处理器,其中,
I/O接口,用于接收子代码集;以及,用于若代码集的验证结果为通过验证,发布所述代码集;
代码存储单元,用于当检测到所述代码集中存入新增的子代码集或所述代码集中的子代码集有更新时触发生成第一通知消息;
容器副本存储单元,用于存储与通过开发环境测试的代码集相对应的容器副本;
处理器,被设置成,用于至少基于代码集以及所述代码集的开发环境,构建容器副本;还用于至少根据所述容器副本构建第一容器,并在所述第一容器中对所述代码集进行测试,所述第一容器的容器环境与所述代码集的开发环境相匹配;还用于若所述代码集通过测试,则至少根据所述容器副本构建第二容器,并在所述第二容器中对所述代码集进行验证,所述第二容器的容器环境与所述代码集的生产环境相匹配;还用于若所述代码集通过验证,则发布所述代码集;还用于若所述代码集通过测试,则将所述代码集的版本标签与所述容器副本相关联;将与所述版本标签相关联的所述容器副本存储至容器副本存储器,并触发生成第二通知消息;基于接收到的所述第二通知消息构建第二容器。
本申请提供的代码处理方法、装置及代码发布***,可以基于代码集以及代码集的开发环境构建容器副本,将代码集以及代码集的开发环境以容器副本的形式进行传输,并在容器中对所述代码集进行测试和验证。包含代码集开发环境信息的容器副本可以保证开发环境与测试环境的一致性,同时,容器可以使得代码集的运行环境不受外界影响,测试结果准确。本申请提供的容器技术可以在单机上运行多个容器,且容器之间切换迁移速度较快,不仅可以节省硬件资源,还可以提高代码的处理效率。本申请提供的代码的处理方法可以将软件生产生命周期中的持续集成、持续部署和代码发布集成于可以自动化实现的平台,与现有技术相比,该平台可以使得各个开发环节的时间消耗降低,实现软件开发的高效自动化和可持续交付。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的代码处理方法的一种应用场景的示意图;
图2是本申请提供的代码处理方法的一种实施例的方法流程示意图;
图3是本申请提供的开发环境匹配性判断方法的一种实施例的方法流程图;
图4是本申请提供的存储容器副本方法的一种实施例的方法流程示意图;
图5是本申请提供的代码集未通过验证的处理方法的一种实施例的方法流程图;
图6是本申请提供的代码处理方法的另一种实施例的方法流程图;
图7是本申请提供的代码处理装置的一种实施例的模块结构示意图;
图8是本申请提供的代码集验证单元的一种实施例的模块结构示意图;
图9是本申请提供的代码处理装置的另一种实施例的模块结构示意图;
图10是本申请提供的代码处理装置的另一种实施例的模块结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
下面通过一个具体的应用场景介绍本申请提供的实施例方法,图1是本申请提供的代码处理方法的一种应用场景的示意图。在本场景中,为了清楚的示出本方案的细节,因此非限制性地将代码开发平台构建为基于Docker技术的开发平台,但是,本领域技术人员可以理解到,本方案的代码开发平台可以为基于容器技术的任何通用或专用代码开发平台。图1中的代码集codes可以为单个软件开发项目对应的程序代码的集合,所述单个软件开发项目可以分成多个子任务完成,相应地,所述代码集codes中可以包括多个子代码集,其中,所述子代码集对应于所述软件开发对象的子任务。如图1所示,将子代码集A推送至代码库中,所述代码库接收所述子代码集A,在确定所述子代码集A的开发环境满足预设开发条件之后,如步骤1所示,所述代码库将所述子代码集A更新至代码集codes中,实现子代码集向代码集的持续交付、持续集成。本实施例中的所述代码库不仅可以存储、更新代码集,还可以基于代码集的存储动态,触发生成通知消息。当所述代码库监测到代码集codes中子代码集有更新时,响应于所述更新动作,如步骤2所示,所述代码库触发生成第一通知消息,并将所述第一通知消息发送至代码开发平台。在本申请的一个实施例中,所述代码库可以通过预设的回调函数生成所述第一通知消息,并将所述第一通知消息发送至代码开发平台中指定的url地址。如步骤3所示,所述代码开发平台基于所述第一通知消息,以及,基于所述代码集codes和所述代码集codes的开发环境构建镜像。本实施例中,为了对应于所述Docker技术开发平台,非限制性地将容器副本设置为镜像,但是,本领域技术人员可以理解到,本方案的容器副本可以为任何构建容器的基础文件。步骤4中,根据所述镜像构建第一容器,其中,所述第一容器的容器环境与代码集codes的开发环境相匹配。基于步骤4中构建的第一容器,步骤5是在所述第一容器中对所述代码集codes进行测试,由于所述第一容器的容器环境与代码集codes的开发环境相匹配,因此,在所述第一容器中对所述代码集codes进行测试可以还原代码集codes在开发环境中的应用状态,避免由于测试环境与开发环境不匹配而导致的测试结果的误差。若代码集codes在所述第一容器中通过测试,如步骤6、7所示,则将所述镜像与所述代码集codes的版本标签tag相关联,并将与所述版本标签tag相关联的所述镜像存储至镜像存储器,进行持久化。此时,可以通过所述版本标签tag从所述镜像存储器中获取所述代码集codes,并且在后续的软件开发过程中,可以随时获取所述镜像,构建容器环境与开发环境相匹配的容器,还原代码集codes在开发环境中的应用状态。与所述代码库的功能类似,所述镜像存储器在监测到有新的镜像存储时,响应于所述存储动作,步骤8中,所述镜像存储器触发生成第二通知消息,并将所述第二通知消息发送给代码开发平台。所述代码开发平台在接收到所述第二通知消息后,步骤9中,可以至少基于所述镜像构建第二容器,所述第二容器的容器环境与所述代码集codes的生产环境相匹配。所述生产环境与所述开发环境的不同之处在于生产环境是面向客户的运行环境,且更加注重环境的稳定性。最后,如步骤10、11所示,在所述第二容器中对所述代码集codes进行验证,若代码集codes在第二容器中通过验证,则将所述代码集codes发布至终端设备,并将所述第二容器作为用户操作容器。后续的,用户可以在所述终端设备上启动所述第二容器,并在所述第二容器中对所述代码集codes进行操作。
基于以上介绍的本申请提供的实施例方法的具体应用场景,下面结合附图对本申请所述的代码处理方法进行详细的说明。图1是本申请提供的代码处理方法的一种实施例的方法流程示意图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑性上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。所述方法在实际中的代码处理过程中或者方法执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
具体的本申请提供的代码处理方法的一种实施例如图2所示,所述方法可以包括:
S21:至少基于代码集以及所述代码集的开发环境,构建容器副本。
本实施例的实施主体可以为基于容器技术的代码开发平台,例如,所述代码开发平台可以为基于Docker***的开发平台。本实施例中,软件开发者在线下编译、测试通过的代码上传至所述代码开发平台后,所述代码开发平台可以基于软件开发者上传的代码构建容器,所述容器可以提供可移植的、完全隔离的运行环境,基于所述容器提供的运行环境,可以对代码进行测试、验证等操作。
本实施例中代码集可以为单个软件开发项目对应的程序代码的集合。在实际软件开发过程中,单个软件开发项目的开发任务往往被分成多个子任务,并由多个程序开发人员共同完成。本实施例中,将子任务对应的程序代码作为子代码集,将所述软件开发项目的全部子任务所对应的子代码集集合之后,生成所述软件开发项目对应的代码集。需要说明的是,在代码开发平台中,往往将所述代码集作为整体进行测试、验证等操作。所述代码集的开发环境可以包括运行所述代码集所需的操作***、应用软件、软件环境数据库等,例如,所述操作***可以为Unix***、Linux***、Windows***等,所述应用软件可以为对所述代码集进行编译、测试的仿真软件等,所述软件环境数据库可以为软件半成品代码集、测试数据、客供数据库以及各种文档资料等。所述容器副本可以为包含所述代码集以及所述代码集的开发环境等信息的文件形式,并且,所述容器副本可以用于创建容器并启动所述容器,在一个具体的场景中,所述容器副本可以为Docker***中的镜像。需要说明的是,所述容器副本可以为只读存储形式,且所述容器副本可以启动多个容器,因此,所述容器的运行不影响所述容器副本中存储的内容。当然,本实施例中并不仅仅基于代码集以及所述代码集的开发环境构建所述容器副本,在本申请的另一个实施例中,还可以进一步基于所述软件开发项目的整体预设配置参数构建所述容器副本。
一般地,在软件开发过程中,一个开发项目的任务往往由多人合作完成,并且每个人可能同时参与多个开发项目的开发,每天可能有多人多次上传子代码集至所述代码开发平台上。所述代码开发平台在接收所述子代码集之后,将所述子代码集存入或者更新至所述子代码集对应的代码集中,并对所述代码集进行测试、验证等操作。
针对上述场景中持续上传代码以及复杂的代码处理过程,在本申请的一个实施例中,所述至少基于代码集以及所述代码集的开发环境构建容器副本可以包括:
至少基于代码集以及所述代码集的开发环境,并进一步基于接收到的第一通知消息构建所述容器副本,所述第一通知消息包括当检测到所述代码集中存入新增的子代码集或所述代码集中的子代码集有更新时触发生成的消息。
所述代码开发平台在检测到所述代码集中存入新增的子代码集或所述代码集中的子代码集有更新时,触发生成第一通知消息。在本申请的一个实施例中,所述触发生成第一通知消息的主体可以为用于存储代码集的代码库,所述代码库可以有序管理各个开发项目对应的代码集,其中包括实时监测代码库中存储的代码集的动态。具体地,当所述代码集中存入新增的子代码集或所述代码集中的子代码集有更新时,所述代码库触发生成所述第一通知消息。在一个具体的场景中,可以通过预设的回调函数实现所述第一通知消息的推送,具体地,可以在代码库中预先设置回调函数,并设置指定动作可以触发所述回调函数发送所述第一通知消息至指定的url地址,所述指定动作可以包括所述代码集中存入新增的子代码集或所述代码集中的子代码集有更新等,所述回调函数可以包括基于所述Docker***中的webhook函数等。
本实施例中,基于接收到的所述第一通知消息构建所述容器副本,可以在持续上传代码以及复杂的代码处理过程的场景中,提高构建容器副本的处理效率,从而进一步提高所述开发项目的持续集成和持续部署的效率。
在多人团队合作完成开发项目的任务过程中,同一团队中的程序开发人员运行的线下开发环境有可能相互之间不匹配,具体可以表现在开发软件的不同、操作***的不同、数据库的不同等。程序开发人员上传的子代码集往往是所述开发项目的子任务对应的子代码集,也是所述开发项目对应的代码集的子集,同一代码集的开发环境的不匹配可能导致测试结果的误差,影响所述开发项目的开发进程。
本实施例中,进一步的,所述子代码集的开发环境均满足预设开发条件。
所述预设开发条件可以包括预设开发环境,通过设置的所述预设开发条件可以实现子代码集开发环境的统一机制,避免由于子代码集的开发环境的不统一而导致的代码集的测试结果的误差。在本申请的一个实施例中,可以在所述子代码集存入或者更新至所述代码集之前进行开发环境匹配性判断,确定子代码集的开发环境是否满足预设开发条件。具体地,图3是本申请提供的开发环境匹配性判断方法的一种实施例的方法流程图,如图3所示,所述方法可以包括:
S31:判断触发生成所述第一通知消息的子代码集的开发环境是否与预设开发环境相匹配。
在将所述子代码集存入或者更新至所述代码集之前,可以判断所述子代码集的开发环境是否与预设开发环境相匹配。在本申请的一个实施例中,所述预设开发环境可以为所述作业任务预先设定的开发环境。在本申请的另一个实施例中,所述预设开发环境可以为所述开发项目首次上传至代码库的子代码集对应的开发环境。
S32:当判断的结果为是时,将所述子代码集存入或者更新至所述代码集中。
当判断结果为是时,所述代码开发平台允许将所述子代码集存入或者更新至所述代码集中,当然,该动作的实施主体依然可以为所述代码开发平台中的代码库。后续的,在本申请的另一个实施例中,当判断结果为否时,所述代码开发平台可以返回错误报告,通知程序开发人员所述子代码集由于开发环境不匹配而不允许被存入或者更新至所述代码集中,并将所述预设开发环境告知程序开发人员,程序开发人员可以根据所述错误报告调整线下开发环境,完成测试后再重新上传。
下面通过一个具体的场景说明上述实施例方法,程序开发人员甲参与开发项目project16的任务开发,已知所述开发项目project16的预设开发环境为Linux操作***、开发软件matlab8.0、客供数据库2.0。开发人员甲在开发过程中,***自动将开发软件升级为matlab8.5,甲在matlab8.5中完成project16的子任务的开发,生成子代码集A。将所述子代码集A上传至代码开发平台后,代码库检测到所述子代码集与预设开发环境不匹配,发送错误报告至甲,告知所述子代码集A的开发软件与预设开发环境的开发软件的版本不匹配。甲根据所述错误报告,将开发软件降级为matlab8.0,并在开发软件matlab8.0中重新对子代码集A进行测试、修改,生成子代码集B,并将所述子代码集B上传至所述代码开发平台。所述代码库在验证所述子代码集B的开发环境与所述预设开发环境匹配之后,将所述子代码集B存储至所述开发项目project16对应的代码集。
在本实施例中,在将所述子代码集存入或者更新至所述代码集之前,对所述子代码集的开发环境与预设开发环境进行匹配性判断,若匹配,则将所述子代码集存入或者更新至所述代码集,可以在软件开发过程中持续交付、持续集成过程中,保证所述开发项目各个子任务对应的开发环境的一致性,提高开发环境的管理效率。
现有技术中,由于开发、测试中运行软件安装包的版本或者依赖关系的不同,难以保证开发项目的代码集在各个阶段的运行环境相同。在本实施例中,可以基于代码集以及所述代码集的开发环境构建容器副本,将容器副本作为传输代码集及所述代码集开发环境的载体。在后续的代码处理过程中,还可以通过所述容器副本构建容器,并在所述容器中对所述代码集进行测试、验证,可以保证所述代码集的开发环境与测试环境的一致性。
S22:至少根据所述容器副本构建第一容器,并在所述第一容器中对所述代码集进行测试,所述第一容器的容器环境与所述代码集的开发环境相匹配。
在至少基于所述代码集以及所述代码集的开发环境构建容器副本之后,可以至少根据所述容器副本构建第一容器,并在所述第一容器中对所述代码集进行测试,所述第一容器的容器环境与所述代码集的开发环境相匹配。在本申请的一个实施例中,所述容器副本可以是由多个只读层组成的文件***,只读层之间可以相互关联,在基于所述容器副本构建所述第一容器的过程中,可以将所述容器副本的最上层只读层设置为可读可写层,生成新的可读可写文件***,将所述可读可写文件***设置于隔离的进程空间中,并在所述进程空间中提供必须的运行进程,如此,生成所述第一容器。所述容器可以为所述代码集提供隔离的运行空间,不随其他容器或者容器之外的环境的影响。在本申请的一个实施例中,在第一容器中构建与所述代码集的开发环境相匹配的测试环境,可以保证在代码开发阶段和代码测试阶段所使用的操作***、应用软件、数据库等运行环境是一致的。
在所述构建的第一容器中,可以对所述代码集进行测试,本实施例中,若所述代码集可以实现所述开发项目的任务目标,则可以确定所述代码集通过测试。例如,在一个场景中,开发项目的任务目标为用户打开应用程序A可以自动接收账单,并且接收延迟不高于150毫秒,若测试结果为通过所述代码集可以实现用户打开应用程序时可以自动接收账单的任务目标,并且接受延迟为130毫秒,则可以确定所述代码集通过测试。若所述容器副本中的代码集不能实现或者不能完全实现所述开发项目的任务目标,则可以确定所述容器副本中的代码集未通过测试。例如,在上述场景中,虽然测试结果为通过所述代码集可以实现用户打开应用程序可以自动接收账单的功能,但是接受延迟却为200毫秒,则可以确定所述代码集未通过测试。
本实施例中,从容器副本与第一容器的结构来看,所述容器副本与所述第一容器的区别在于,所述容器副本的文件层为只读层,而所述第一容器是以容器副本为基础,并将所述容器副本的最上层文件设置为可读可写层。因此,在给所述第一容器分配以隔离的运行进程空间后,所述第一容器可以完全还原所述容器副本所包含的信息,其中包括所述代码集的开发环境。当所述第一容器的容器环境与所述代码集的开发环境相匹配时,在所述第一容器中对所述代码集进行测试,可以在与开发环境一致的测试环境中对所述代码集进行测试,还原所述代码集在开发环境中的应用状态,解决了现有技术中由于开发、测试所使用的运行软件的版本或者依赖关系的不同导致的代码集在各个阶段的运行环境不相同的问题。
S23:若所述代码集通过测试,则至少根据所述容器副本构建第二容器,并在所述第二容器中对所述代码集进行验证,所述第二容器的容器环境与所述代码集的生产环境相匹配。
若所述代码集可以通过测试,即实现所述开发项目的任务目标,则可以构建第二容器,并在所述第二容器中对所述代码集进行验证,所述第二容器的容器环境与所述代码集的生产环境相匹配。在实际软件开发过程中,开发环境为程序开发人员在开发代码阶段运行的环境,开发环境的配置相对比较随意,可以根据开发人员的个人分析进行设置,比如,开发人员可以在每次开发测试时都将运行软件升级到最新版本,或者在对代码进行测试时调高或者调低输入参数等。而生产环境与开发环境的不同之处在于生产环境是面向客户的运行环境,当把验证通过后的代码集发布给客户后,客户是在生产环境中验证所述代码集。所述生产环境可以是客户要求的基于稳定性的运行环境,例如,生产环境中使用的运行软件需要是相对比较稳定的版本,而不要求为最新的版本;生产环境中的数据库可以是用户提供的相对比较经典的数据库。
本实施例中,虽然所述容器副本中已经包含所述代码集的开发环境信息,但是在根据所述容器副本构建所述第二容器的过程中,可以读取预先存储的生产环境的配置参数,并按照所述配置参数设置所述第二容器的容器环境,使得所述第二容器的容器环境与所述生产环境相匹配。
在构建得到所述第二容器后,可以在所述第二容器中对所述代码集进行验证。验证的过程与上述代码集测试的过程类似,目的均是验证所述容器副本中的代码集是否能够实现所述开发项目的任务目标,在此不再赘述。
在本申请的一个实施例中,在所述代码集通过测试之后,还可以存储所述代码集对应的容器副本,对所述容器副本进行持久化,图4是本申请提供的存储容器副本方法的一种实施例的方法流程图,如图4所示,所述若所述代码集通过测试,则至少根据所述容器副本构建第二容器可以包括:
S41:若所述代码集通过测试,则将所述代码集的版本标签与所述容器副本相关联。
若所述代码集通过测试,可以将所述代码集的版本标签与所述容器副本相关联。所述版本标签可以为包含所述代码集版本的信息标识,所述版本标签可以用于区别不同的开发项目对应的代码集,或者相同的开发项目对应的不同版本的代码集。例如,对于上述以用户打开应用程序可以自动接收账单为任务目标的开发项目,将第一版本代码集的版本标签设置为“ListV1”,若在第三版本代码集上进行第二次改进,则可以设置此次改进的代码集的版本标签为“ListV3.2”。
S42:将与所述版本标签相关联的所述容器副本存储至容器副本存储器,并触发生成第二通知消息。
S43:基于接收到的所述第二通知消息构建第二容器。
在给所述容器副本与所述版本标签关联之后,可以将所述关联后的容器副本存储至容器副本存储器。例如,在基于所述Docker***的代码开发平台中,可以在容器hub服务平台的镜像存储器Registry中存储镜像。所述容器副本存储器可以通过数据表的方式关联存储版本标签和容器副本,数据表中的一列可以存储版本标签,另一列可以容器副本,相关联的版本标签与容器副本可以处于同一行。当然,版本标签与容器副本关联的方式不限于上述举例,所属领域技术人员在本申请技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本申请相同或相似,均应涵盖于本申请保护范围内。如此,可以根据所述版本标签获取与之相关联的容器副本。
在实际的场景中,所述代码开发平台频繁地将各个开发项目的容器副本上传至所述容器存储器,且所述容器副本中包含待验证的代码集。针对上述容器存储器频繁接收容器副本的场景,在本申请的一个实施例中,所述容器副本存储器在检测到存入新的容器副本时,还可以触发生成第二通知消息。所述第二通知消息可以通知所述代码开发平台对所述代码集进行验证。在一个具体的场景中,可以通过预设的回调函数实现所述通知消息的发送,具体地,可以在所述容器副本存储器中预先设置回调函数,并设置指定动作可以触发所述回调函数发送所述第二通知消息至指定的url地址,所述指定动作可以包括所述容器副本存储器中存入新的容器副本等,所述回调函数可以包括基于所述Docker***中的webhook函数等。
本实施例中,可以给通过测试的容器副本与所述代码集的版本标签相关联,并将关联后的容器副本存储至容器副本存储器中,进行持久化。相对于现有技术中虚拟机中的快照,容器副本存储空间较小,构建容器的速度更快,因此,容器副本的存储成本较低,利用价值较高。另外,将容器副本存储之后,在后续的软件开发过程中,可以随时构建与开发环境相匹配的容器环境,还原代码集在开发环境中的应用状态。如此,存储容器副本不仅将软件开发持续集成推进至代码验证阶段,还进一步完善测试阶段的工作。当然,所述容器副本存储器可以基于接收的关联上版本标签的容器副本,触发生成第二通知消息,可以推进待验证的代码集尽早进入代码验证阶段,提高所述代码集的验证效率,缩短开发项目的开发周期。
本实施例中,在所述代码集通过测试之后,可以根据所述容器副本构建第二容器,并将所述第二容器的容器环境设置为生产环境,一方面,在软件开发过程中,可以根据开发需求设置所述容器的运行环境,体现容器环境设置的灵活性;另一方面,构建的第二容器基于所述容器副本,所述容器副本的只读性可以保证其中包含的代码集等原始信息的完整性。最后,在所述第二容器中对所述代码集进行验证实现了软件开发持续集成从测试向生产的转化,提高代码集的验证效率。
S24:若所述代码集通过验证,则发布所述的代码集。
若所述代码集的验证结果为通过验证,可以发布所述代码集。本实施例中,若所述代码集可以通过验证,即所述代码集可以在生产环境中实现所述开发项目的任务目标,则可以将所述开发项目的代码集发布给用户,作为开发项目的任务交付。
在本申请的一个实施例中,所述方法还可以包括:
若所述代码集通过验证,则将所述第二容器作为用户操作容器。
本实施例中,用户可以通过终端设备使用所述用户操作容器,具体地,用户可以在所述用户操作容器中查看所述开发项目对应的通过验证的代码集,还可以在所述操作容器中对所述代码集进行验证,验证所述代码集是否可以实现所述开发项目的任务目标。本实施例中,将所述第二容器作为用户操作容器可以加快开发项目的任务交付,并且便于用户对所述代码集进行线上操作,及时获取操作结果。
当所述代码集未通过验证时,本申请也可以提供相应的处理方法,图5是本申请提供的代码集未通过验证的处理方法的一种实施例的方法流程图,如图5所示,所述方法可以包括:
S51:若所述代码集未通过验证,则根据所述代码集的版本标签,从版本历史信息中获取生成时间早于所述版本标签的历史版本标签。
本实施例中的版本历史信息中可以包含通过测试的代码集对应的版本标签,具体可以通过数据表、链表等存储方式存储所述版本标签,且,所述版本历史信息还可以体现生成所述版本标签的时间先后关系。若所述代码集的验证结果为未通过验证,则可以根据所述代码集的版本标签,从版本历史信息中获取生成时间早于所述版本标签的历史版本标签。所述历史版本标签可以为生成时间距离所述版本标签生成时间最近的标签,还可以为指定的生成时间早于所述版本标签的标签。
S52:提取与所述历史版本标签相关联的容器副本。
在获取所述历史版本标签之后,可以提取与所述历史版本标签相关联的容器副本。例如,对于上述用户打开应用程序可以自动接收账单的开发项目,若第三版本的第二次改进的代码集“ListV3.2”未能通过验证,则从版本历史信息中获取生成时间距离版本标签“ListV3.2”生成时间最近的版本标签为“ListV3.1”。根据所述版本标签“ListV3.1”可以从所述容器副本存储器中提取与所述版本标签“ListV3.1”相关联的容器副本。
S53:根据所述提取的所述容器副本,构建第三容器,并将所述第三容器作为用户操作容器。
本实施例中,在与所述历史版本标签相关联的容器副本之后,可以根据所述提取的所述容器副本,构建第三容器,并将所述第三容器作为用户操作容器。在本申请的一个实施例中,可以根据所述容器副本构建新的容器,将所述新的容器作为所述第三容器。在本申请的另一个实施例中,还可以将已有的根据所述容器副本构建的暂停容器作为所述第三容器。容器作为独立的运行空间,可以保留并暂停,暂停的容器可以保存被暂停时的运行状态,并可以被重新激活。被激活的容器被重新分配运行进程空间,恢复成正常使用状态。此时,可以将当前容器切换至所述第三容器,并将所述第三容器作为用户操作容器
本实施例中,若所述代码集不能通过验证,则可以根据版本历史信息获取历史版本标签,提取与所述历史版本标签相关联的容器副本,将根据提取的容器副本构建的第三容器作为用户操作容器。由于当前容器与所述第三容器都运行于同样的生产环境中,并且容器之间的切换迁移速度快,不仅可以提高代码集发布的处理效率,还可以降低故障的发生概率。
本申请提供的代码处理方法,可以基于代码集以及代码集的开发环境构建容器副本,将代码集以及代码集的开发环境以容器副本的形式进行传输,并在容器中对所述代码集进行测试和验证。包含代码集开发环境信息的容器副本可以保证开发环境与测试环境的一致性,同时,容器可以使得代码集的运行环境不受外界影响,测试结果准确。本申请提供的容器技术可以在单机上运行多个容器,且容器之间切换迁移速度较快,不仅可以节省硬件资源,还可以提高代码的处理效率。本申请提供的代码的处理方法可以将软件生产生命周期中的持续集成、持续部署和代码发布集成于可以自动化实现的平台,与现有技术相比,该平台可以使得各个开发环节的时间消耗降低,实现软件开发的高效自动化和可持续交付。
另外,本申请还提供一种代码处理方法的另一种实施方式,图6是本申请提供的代码处理方法的另一种实施例的方法流程图,如图6所示,所述方法可以包括:
S61:至少基于代码集以及所述代码集的开发环境,构建容器副本;
S62:至少根据所述容器副本构建容器;
S63:在所述容器中对所述代码集进行操作。
所述S61-S63的具体实施方式可以参考S21-S24的实施方式的描述,在此不再赘述。
在本申请的一个实施例中,所述在所述容器中对所述代码集进行操作可以包括:
设置所述容器的容器环境与所述代码集的开发环境相匹配;
在所述容器中对所述代码集进行测试。
在本申请的一个实施例中,在所述容器中对所述代码集进行测试之后,所述方法还可以包括:
若所述代码集通过测试,则设置所述容器的容器环境与所述代码集的生产环境相匹配;
在所述容器中对所述代码集进行验证。
在本申请的一个实施例中在所述容器中对所述代码集进行验证之后,所述方法还包括:
若所述代码集通过验证,则发布所述代码集,并将所述容器作为用户操作容器。
上述方法步骤的实施方式可以参考S3、S4的实施方式的描述,在此不再赘述。
本申请提供的代码处理方法,可以基于代码集以及所述代码集的开发环境构建容器副本,将代码集以及所述代码集的开发环境以容器副本的形式进行传输,并在容器中对所述代码集进行操作。容器可以使得代码集的运行环境不受外界影响,操作结果准确。本申请提供的容器技术可以在单机上运行多个容器,且容器之间切换迁移速度较快,不仅可以节省硬件资源,还可以提高代码的处理效率。本申请提供的代码的处理方法可以将软件生产生命周期中的持续集成、持续部署和代码发布集成于可以自动化实现的平台,与现有技术相比,该平台可以使得各个开发环节的时间消耗降低,实现软件开发的高效自动化和可持续交付。
基于本申请实施例所述的代码处理方法,本申请还提供一种代码处理装置。图7是本申请提供的代码处理装置的一种实施例的模块结构示意图,如图7所示,所述装置70可以包括:
容器副本构建单元71,用于至少基于代码集以及所述代码集的开发环境,构建容器副本;
代码集测试单元72,用于至少根据所述容器副本构建第一容器,并在所述第一容器中对所述代码集进行测试,所述第一容器的容器环境与所述代码集的开发环境相匹配;
代码集验证单元73,用于若所述代码集通过测试,则构建第二容器,并在所述第二容器中对所述代码集进行验证,所述第二容器的容器环境与所述代码集的生产环境相匹配;
代码集发布单元74,用于若所述代码集验证单元的验证结果为通过验证,发布所述代码集。
本申请提供的代码处理装置,可以基于代码集以及代码集的开发环境构建容器副本,将代码集以及代码集的开发环境以容器副本的形式进行传输,并在容器中对所述代码集进行测试和验证。包含代码集开发环境信息的容器副本可以保证开发环境与测试环境的一致性,同时,容器可以使得代码集的运行环境不受外界影响,测试结果准确。本申请提供的容器技术可以在单机上运行多个容器,且容器之间切换迁移速度较快,不仅可以节省硬件资源,还可以提高代码的处理效率。本申请提供的代码处理装置可以将软件生产生命周期中的持续集成、持续部署和代码发布集成于可以自动化实现的平台,与现有技术相比,该平台可以使得各个开发环节的时间消耗降低,实现软件开发的高效自动化和可持续交付。
本申请的一个实施例中,所述容器副本构建单元71还用于:至少基于代码集以及所述代码集的开发环境,并进一步基于接收到的第一通知消息构建所述容器副本,所述第一通知消息包括当检测到所述代码集中存入新增的子代码集或所述代码集中的子代码集有更新时触发生成的消息。
本实施例中,基于接收到的所述第一通知消息构建所述容器副本,可以在持续上传代码以及复杂的代码处理过程的场景中,提高构建容器副本的处理效率,从而进一步提高开发项目的持续集成和持续部署的效率。
在本申请的一个实施例中,所述子代码集的开发环境均满足预设开发条件。
本实施例中,通过设置的所述预设开发条件可以实现子代码集开发环境的统一机制,避免由于子代码集的开发环境的不统一而导致的代码集的测试结果的误差,还可以在软件开发过程中持续交付、持续集成过程中,保证所述开发项目各个子任务对应的开发环境的一致性,提高开发环境的管理效率。
图8是本申请提供的代码集验证单元的一种实施例的模块结构示意图,如图8所示,所述代码集验证单元73可以包括:
标签关联单元81,用于若所述代码集通过测试,则将所述代码集的版本标签与所述容器副本相关联;
副本存储单元82,用于将与所述版本标签相关联的所述容器副本存储至容器副本存储器,并触发生成第二通知消息;
第二容器构建单元83,用于基于接收到的所述第二通知消息构建第二容器。
本实施例中,可以给通过测试的容器副本与所述代码集的版本标签相关联,并将关联后的容器副本存储至容器副本存储器中,进行持久化。相对于现有技术中虚拟机中的快照,容器副本存储空间较小,构建容器的速度更快,因此,容器副本的存储成本较低,利用价值较高。另外,将容器副本存储之后,在后续的软件开发过程中,可以随时构建与开发环境相匹配的容器环境,还原代码集在开发环境中的应用状态。如此,存储容器副本不仅将软件开发持续集成推进至代码验证阶段,还进一步完善测试阶段的工作。
本申请的一个实施例中,图9是本申请提供的代码处理装置的另一种实施例的模块结构示意图,装置90不仅包括容器副本构建单元71、代码集测试单元72、代码集验证单元73及代码集发布单元74,还可以包括:
历史标签获取单元91,用于若所述代码集未通过验证,则根据所述代码集的版本标签,从版本历史信息中获取生成时间早于所述版本标签的历史版本标签;
容器副本提取单元92,用于提取与所述历史版本标签相关联的容器副本;
第三容器构建单元93,用于根据所述提取的所述容器副本,构建第三容器,并将所述第三容器作为用户操作容器。
本实施例中,若所述代码集不能通过验证,则可以根据版本历史信息获取历史版本标签,提取与所述历史版本标签相关联的容器副本,将根据提取的容器副本构建的第三容器作为用户操作容器。由于当前容器与所述第三容器都运行于同样的生产环境中,并且容器之间的切换迁移速度快,不仅可以提高代码集发布的处理效率,还可以降低故障的发生概率。
本申请的另一个实施例中,所述装置还可以包括:
操作容器设置单元,用于若所述代码集通过验证,则将所述第二容器作为用户操作容器。
本实施例中,将所述第二容器作为用户操作容器可以加快开发项目的任务交付,并且便于用户对所述代码集进行线上操作,及时获取操作结果。
在本申请还提供一种代码处理装置的实施方式,图10是本申请提供的代码处理装置的另一种实施例的模块结构示意图,如图10所示,所述装置100可以包括:
容器副本构建单元101,用于至少基于代码集以及所述代码集的开发环境,构建容器副本;
容器构建单元102,用于至少根据所述容器副本构建容器;
代码集操作单元103,用于在所述容器中对所述代码集进行操作。
所述结构单元101-103的具体实施方式可以参考S21-S24的实施方式的描述,在此不再赘述。
在本申请的一个实施例中,所述代码集操作单元103可以包括:
开发环境设置单元,用于设置所述容器的容器环境与所述代码集的开发环境相匹配;
代码集测试单元,用于在所述容器中对所述代码集进行测试。
在本申请的一个实施例中,所述代码集操作单元103还可以包括:
生产环境设置单元,用于若所述代码集通过测试,则设置所述容器的容器环境与所述代码集的生产环境相匹配;
代码集验证单元,用于在所述容器中对所述代码集进行验证。
在本申请的一个实施例中,所述代码集操作单元103还可以包括:
代码集发布单元,用于若所述代码集通过验证,则发布所述代码集,并将所述容器作为用户操作容器。
上述结构单元的实施方式可以参考S23、S24的实施方式的描述,在此不再赘述。
本申请提供的代码处理装置,可以基于代码集以及所述代码集的开发环境构建容器副本,将代码集以及所述代码集的开发环境以容器副本的形式进行传输,并在容器中对所述代码集进行操作。容器可以使得代码集的运行环境不受外界影响,操作结果准确。本申请提供的容器技术可以在单机上运行多个容器,且容器之间切换迁移速度较快,不仅可以节省硬件资源,还可以提高代码的处理效率。本申请提供的代码处理装置可以将软件生产生命周期中的持续集成、持续部署和代码发布集成于可以自动化实现的平台,与现有技术相比,该平台可以使得各个开发环节的时间消耗降低,实现软件开发的高效自动化和可持续交付。
基于本申请实施例所述的代码处理方法及装置,本申请还提供一种代码发布***,具体的所述***可以包括I/O接口、代码存储单元、容器副本存储单元、处理器,其中,
I/O接口,用于接收子代码集;以及,用于若代码集的验证结果为通过验证,发布所述代码集;
代码存储单元,用于当检测到所述代码集中存入新增的子代码集或所述代码集中的子代码集有更新时触发生成第一通知消息;
容器副本存储单元,用于存储与通过开发环境测试的代码集相对应的容器副本;
处理器,被设置成,用于至少基于代码集以及所述代码集的开发环境,构建容器副本;还用于至少根据所述容器副本构建第一容器,并在所述第一容器中对所述代码集进行测试,所述第一容器的容器环境与所述代码集的开发环境相匹配;还用于若所述代码集通过测试,则至少根据所述容器副本构建第二容器,并在所述第二容器中对所述代码集进行验证,所述第二容器的容器环境与所述代码集的生产环境相匹配;还用于若所述代码集通过验证,则发布所述代码集;还用于若所述代码集通过测试,则将所述代码集的版本标签与所述容器副本相关联;将与所述版本标签相关联的所述容器副本存储至容器副本存储器,并触发生成第二通知消息;基于接收到的所述第二通知消息构建第二容器。
本申请提供的代码发布***,可以基于代码集以及代码集开发环境信息构建容器副本,将代码集以及所述代码集的开发环境以容器副本的形式进行传输,并在容器中对所述代码集进行测试和验证。包含代码集开发环境信息的容器副本可以保证开发环境与测试环境的一致性,同时,容器可以使得代码集的运行环境不受外界影响,测试结果准确。本申请提供的容器技术可以在单机上运行多个容器,且容器之间切换迁移速度较快,不仅可以节省硬件资源,还可以提高代码的处理效率。本申请提供的代码发布***可以将软件生产生命周期中的持续集成、持续部署和代码发布集成于可以自动化实现的平台,与现有技术相比,该平台可以使得各个开发环节的时间消耗降低,实现软件开发的高效自动化和可持续交付。
尽管本申请内容中提到实施例中的构建容器副本、在Docker容器中对代码集进行测试、验证等之类的代码集成、部署等描述,但是,本申请并不局限于必须是在Docker容器中测试、验证代码集或实施例所描述的代码集成、部署的情况。某些持续集成和持续部署平台或实施例描述的基础上略加修改后的实施方案也可以实行上述实施例相同、等同或相近、或变形后可预料的实施效果。当然,即使不采用上述代码集成、部署的方式,只要符合本申请上述各实施例的构建容器副本、在容器中对代码集进行测试、验证,仍然可以实现相同的申请,在此不再赘述。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的方法或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的单元、装置、***,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,本申请中所述的某一单元模块也可以将实现同一功能的模块由多个子模块或子模块的组合实现。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现装置的软件模块又可以是硬件部件内的结构。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的装置。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请可用于众多通用或专用的计算机***环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器***、基于微处理器的***、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何***或设备的分布式计算环境等等。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。

Claims (19)

1.一种代码处理方法,其特征在于,所述方法包括:
至少基于代码集以及所述代码集的开发环境构建容器副本;
至少根据所述容器副本构建第一容器,并在所述第一容器中对所述代码集进行测试,所述第一容器的容器环境与所述代码集的开发环境相匹配;
若所述代码集通过测试,则至少根据所述容器副本构建第二容器,并在所述第二容器中对所述代码集进行验证,所述第二容器的容器环境与所述代码集的生产环境相匹配;
若所述代码集通过验证,则发布所述代码集。
2.根据权利要求1所述的方法,其特征在于,所述至少基于代码集以及所述代码集的开发环境构建容器副本包括:
至少基于代码集以及所述代码集的开发环境,并进一步基于接收到的第一通知消息构建所述容器副本,所述第一通知消息包括当检测到所述代码集中存入新增的子代码集或所述代码集中的子代码集有更新时触发生成的消息。
3.根据权利要求2所述的方法,其特征在于,所述子代码集的开发环境均满足预设开发条件。
4.根据权利要求1-3中任意一项所述的方法,其特征在于,所述若所述代码集通过测试,则至少根据所述容器副本构建第二容器包括:
若所述代码集通过测试,则将所述代码集的版本标签与所述容器副本相关联;
将与所述版本标签相关联的所述容器副本存储至容器副本存储器,并触发生成第二通知消息;
基于接收到的所述第二通知消息构建第二容器。
5.根据权利要求1-3中任意一项所述的方法,其特征在于,所述方法还包括:
若所述代码集通过验证,则将所述第二容器作为用户操作容器。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述代码集未通过验证,则根据所述代码集的版本标签,从版本历史信息中获取生成时间早于所述版本标签的历史版本标签;
提取与所述历史版本标签相关联的容器副本;
根据所述提取的所述容器副本,构建第三容器,并将所述第三容器作为用户操作容器。
7.一种代码处理装置,其特征在于,所述装置包括:
容器副本构建单元,用于至少基于代码集以及所述代码集的开发环境构建容器副本;
代码集测试单元,用于至少根据所述容器副本构建第一容器,并在所述第一容器中对所述代码集进行测试,所述第一容器的容器环境与所述代码集的开发环境相匹配;
代码集验证单元,用于若所述代码集通过测试,则至少根据所述容器副本构建第二容器,并在所述第二容器中对所述代码集进行验证,所述第二容器的容器环境与所述代码集的生产环境相匹配;
代码集发布单元,用于若所述代码集通过验证,则发布所述代码集。
8.根据权利要求7所述的装置,其特征在于,所述容器副本构建单元还用于:至少基于代码集以及所述代码集的开发环境,并进一步基于接收到的第一通知消息构建所述容器副本,所述第一通知消息包括当检测到所述代码集中存入新增的子代码集或所述代码集中的子代码集有更新时触发生成的消息。
9.根据权利要求8所述的装置,其特征在于,所述子代码集的开发环境均满足预设开发条件。
10.根据权利要求7-9中任意一项所述的装置,其特征在于,所述代码集验证单元包括:
标签关联单元,用于若所述代码集通过测试,则将所述代码集的版本标签与所述容器副本相关联;
副本存储单元,用于将与所述版本标签相关联的所述容器副本存储至容器副本存储器,并触发生成第二通知消息;
第二容器构建单元,用于基于接收到的所述第二通知消息构建第二容器。
11.根据权利要求7-9中任意一项所述的装置,其特征在于,所述装置还包括:
操作容器设置单元,用于若所述代码集通过验证,则将所述第二容器作为用户操作容器。
12.根据权利要求10所述的装置,其特征在于,所述装置还包括:
历史标签获取单元,用于若所述代码集未通过验证,则根据所述代码集的版本标签,从版本历史信息中获取生成时间早于所述版本标签的历史版本标签;
容器副本提取单元,用于提取与所述历史版本标签相关联的容器副本;
第三容器构建单元,用于根据所述提取的所述容器副本,构建第三容器,并将所述第三容器作为用户操作容器。
13.一种代码处理方法,其特征在于,所述方法包括:
至少基于代码集以及所述代码集的开发环境,构建容器副本;
至少根据所述容器副本构建容器;
设置所述容器的容器环境与所述代码集的开发环境相匹配,在所述容器中对所述代码集进行测试。
14.根据权利要求13所述的方法,其特征在于,在所述容器中对所述代码集进行测试之后,所述方法还包括:
若所述代码集通过测试,则设置所述容器的容器环境与所述代码集的生产环境相匹配;
在所述容器中对所述代码集进行验证。
15.根据权利要求14所述的方法,其特征在于,在所述容器中对所述代码集进行验证之后,所述方法还包括:
若所述代码集通过验证,则发布所述代码集,并将所述容器作为用户操作容器。
16.一种代码处理装置,其特征在于,所述装置包括:
容器副本构建单元,用于至少基于代码集以及所述代码集的开发环境,构建容器副本;
容器构建单元,用于至少根据所述容器副本构建容器;
代码集操作单元,用于在所述容器中对所述代码集进行操作;
所述代码集操作单元包括:
开发环境设置单元,用于设置所述容器的容器环境与所述代码集的开发环境相匹配;
代码集测试单元,用于在所述容器中对所述代码集进行测试。
17.根据权利要求16所述的装置,其特征在于,所述代码集操作单元还包括:
生产环境设置单元,用于若所述代码集通过测试,则设置所述容器的容器环境与所述代码集的生产环境相匹配;
代码集验证单元,用于在所述容器中对所述代码集进行验证。
18.根据权利要求17所述的装置,其特征在于,所述代码集操作单元还包括:
代码集发布单元,用于若所述代码集通过验证,则发布所述代码集,并将所述容器作为用户操作容器。
19.一种代码发布***,其特征在于,包括I/O接口、代码存储单元、容器副本存储单元、处理器,其中,
I/O接口,用于接收子代码集;以及,用于若代码集的验证结果为通过验证,发布所述代码集;
代码存储单元,用于当检测到所述代码集中存入新增的子代码集或所述代码集中的子代码集有更新时触发生成第一通知消息;
容器副本存储单元,用于存储与通过开发环境测试的代码集相对应的容器副本;
处理器,被设置成,用于至少基于代码集以及所述代码集的开发环境,构建容器副本;还用于至少根据所述容器副本构建第一容器,并在所述第一容器中对所述代码集进行测试,所述第一容器的容器环境与所述代码集的开发环境相匹配;还用于若所述代码集通过测试,则至少根据所述容器副本构建第二容器,并在所述第二容器中对所述代码集进行验证,所述第二容器的容器环境与所述代码集的生产环境相匹配;还用于若所述代码集通过验证,则发布所述代码集;还用于若所述代码集通过测试,则将所述代码集的版本标签与所述容器副本相关联;将与所述版本标签相关联的所述容器副本存储至容器副本存储器,并触发生成第二通知消息;基于接收到的所述第二通知消息构建第二容器。
CN201610807131.XA 2016-09-07 2016-09-07 代码处理方法、装置及代码发布*** Active CN107797914B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610807131.XA CN107797914B (zh) 2016-09-07 2016-09-07 代码处理方法、装置及代码发布***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610807131.XA CN107797914B (zh) 2016-09-07 2016-09-07 代码处理方法、装置及代码发布***

Publications (2)

Publication Number Publication Date
CN107797914A CN107797914A (zh) 2018-03-13
CN107797914B true CN107797914B (zh) 2021-04-09

Family

ID=61529905

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610807131.XA Active CN107797914B (zh) 2016-09-07 2016-09-07 代码处理方法、装置及代码发布***

Country Status (1)

Country Link
CN (1) CN107797914B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108537503A (zh) * 2018-03-26 2018-09-14 西南电子技术研究所(中国电子科技集团公司第十研究所) 软件开发管理***
CN108829588B (zh) * 2018-05-30 2021-12-07 北京顺丰同城科技有限公司 一种测试应用程序的处理方法、部署***及装置
CN110019145B (zh) * 2018-06-19 2021-09-14 杭州数澜科技有限公司 一种大数据平台的多环境级联的方法和装置
CN109101269A (zh) * 2018-08-30 2018-12-28 长沙软工信息科技有限公司 一种软件交付方法及装置、电子设备
CN110347389B (zh) * 2019-07-19 2023-09-15 中国工商银行股份有限公司 算法文件的处理方法、装置和***
CN111737132B (zh) * 2020-06-23 2024-05-17 携程商旅信息服务(上海)有限公司 项目代码数据的发布方法、***、电子设备及存储介质
CN112328213B (zh) * 2020-09-29 2023-06-06 浪潮通用软件有限公司 一种在线软件开发过程的隔离方法、设备及介质
CN112231233A (zh) * 2020-11-20 2021-01-15 平安养老保险股份有限公司 代码测试调度方法、装置、计算机设备及可读存储介质
CN113504937A (zh) * 2021-06-07 2021-10-15 广发银行股份有限公司 一种分体式开发部署平台

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105187500A (zh) * 2015-08-07 2015-12-23 浪潮(北京)电子信息产业有限公司 一种基于容器的分布式存储***部署方法
CN105224466A (zh) * 2015-11-17 2016-01-06 广州亦云信息技术有限公司 一种基于Docker的集成测试方法及***

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9009704B2 (en) * 2012-09-07 2015-04-14 Red Hat, Inc. Application partitioning in a multi-tenant platform-as-a-service environment in a cloud computing system
US9690945B2 (en) * 2012-11-14 2017-06-27 International Business Machines Corporation Security analysis using relational abstraction of data structures

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105187500A (zh) * 2015-08-07 2015-12-23 浪潮(北京)电子信息产业有限公司 一种基于容器的分布式存储***部署方法
CN105224466A (zh) * 2015-11-17 2016-01-06 广州亦云信息技术有限公司 一种基于Docker的集成测试方法及***

Also Published As

Publication number Publication date
CN107797914A (zh) 2018-03-13

Similar Documents

Publication Publication Date Title
CN107797914B (zh) 代码处理方法、装置及代码发布***
EP3643049B1 (en) Edge devices and associated networks utilising microservices
CN107660289B (zh) 自动网络控制
US11169815B2 (en) Method and system for automation tool set for server maintenance actions
CN109683899A (zh) 一种软件集成方法及装置
CN108776643B (zh) 一种基于版本控制流程的目标代码合并控制方法及***
CN102025778A (zh) 一种基于Shell的软件版本升级工作方法
WO2014031454A2 (en) Transaction-level health monitoring of online services
CN112395196B (zh) 数据作业开发测试方法、装置、设备、***及存储介质
CN112764753A (zh) 一种项目的部署方法、装置、电子设备及存储介质
CN108052336A (zh) 一种分布式软件升级***及其实现方法
CN112199355B (zh) 数据迁移方法、装置、电子设备及存储介质
US9633323B2 (en) Integrated modeling and analysis in a discrete event simulation
EP3320436A1 (en) System and method for provisioning cloud services across heterogeneous computing environments
CN111651352B (zh) 一种仓库代码的合并方法及装置
US20140053144A1 (en) Service environment upgrades based on upgrade health of service units
CN108920171A (zh) 固件更新方法及装置、电子设备
US12026082B2 (en) Infrastructure quality assurance framework
CN110007946B (zh) 一种算法模型的更新方法、装置、设备及介质
CN110764785B (zh) 基于开源组件的电力行业云平台工具链及云平台运维方法
CN114816969A (zh) 测试用例的生成方法、装置、设备及存储介质
CN112231231A (zh) 云端服务的调试方法、***及装置
US20230259362A1 (en) Computer-implemented method for verifying a plurality of commits
CN116149707B (zh) 分布式***的升级风险检测和规避方法及装置
CN115022317B (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
GR01 Patent grant
GR01 Patent grant