一种代码持续交付的方法技术

技术编号:24454959 阅读:25 留言:0更新日期:2020-06-10 15:16
本发明专利技术公开了一种代码持续交付的方法,使用容器安装代码持续交付过程中的各种工具,包括:接收开发人员提交的代码;将所述代码输入编译工具进行编译,编译处理后的所述代码经过静态扫描工具;接收所述静态扫描工具对所述代码的第一执行结果;根据第一执行结果判断所述代码是否可用于持续交付;将可用于持续交付的代码持续交付。从而有效提高代码交付的速度。

A method of continuous code delivery

【技术实现步骤摘要】
一种代码持续交付的方法
本专利技术涉及软件工程
,特别是涉及一种代码持续交付的方法。
技术介绍
代码持续交付是一种软件工程手法,让软件产品在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以发布的状况。持续交付的目标在于让软件的构建、测试与发布变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。持续交付在持续集成的基础上,将集成后的代码部署到“类线上环境”中,即部署到贴近真实运行的环境中。代码持续交付过程中需要持续集成代码,软件研发团队的成员经常需要集成他们的代码编写工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次代码集成都通过自动化的构建,通过各种流程来验证代码。从每次软件开发人员提交代码到合仓,每次构建流程的时间成本都客观存在,然而在不同的软件生命周期、客户现场的真实需求、项目开发的实际进度等不同情况下,过于滞后的构建时间会严重影响代码和软件的交付时间。
技术实现思路
本专利技术的目的在于提供一种代码持续交付的方法,有效提高代码交付的速度。实现上述目的的技术方案是:一种代码持续交付的方法,使用容器安装代码持续交付过程中的各种工具,包括:接收开发人员提交的代码;将所述代码输入编译工具进行编译,编译处理后的所述代码经过静态扫描工具;接收所述静态扫描工具对所述代码的第一执行结果;根据第一执行结果判断所述代码是否可用于持续交付;将可用于持续交付的代码持续交付。优选的,还包括:编译处理后的所述代码还经过单元测试工具或者行覆盖率统计工具;接收所述单元测试工具或所述行覆盖率统计工具反馈的第二执行结果;当所述第二执行结果由所述单元测试工具反馈时,所述第二执行结果为所述单元测试工具对所述代码的单元测试结果;当所述第二执行结果由所述行覆盖率统计工具反馈时,所述第二执行结果为所述行覆盖率统计工具对所述代码所执行测试的行覆盖率的统计结果;根据所述第一执行结果和所述第二执行结果判断所述代码是否可用于持续交付。优选的,还包括:编译处理后的所述代码或者满足持续交付并部署后的代码,经过自定义测试脚本或者系统测试,获得第三执行结果。优选的,系统测试分为功能测试和健壮性测试。优选的,还包括:编译处理后的所述代码经过人工评审,获得第四执行结果;根据所述第一执行结果、所述第二执行结果、所述第三执行结果和第四执行结果,判断所述代码是否可用于持续交付。优选的,所述编译工具为Maven(项目对象模型),所述静态扫描工具为SonarQube(管理源代码质量的一个开源平台);所述单元测试工具为Junit(一个单元测试框架),所述行覆盖率统计工具为Jacoco(一个开源的代码覆盖率工具)和CoberturaCoverage(一种测试覆盖率报告方案);所述人工评审使用Gerrit(一种开放源代码的代码审查软件,使用网页界面)。优选的,所述的容器为docker(一个开源的应用容器引擎)。优选的,第一执行结果显示静态代码规则指标,根据事先定义的阈值,如果代码质量问题大于阈值判断本次代码不可用于持续交付,反之本次代码可用于持续交付。优选的,第二执行结果显示单元测试工具或者行覆盖率统计工具测试结果,根据是否存在致命性错误和严重错误,存在判断本次代码不可用于持续交付,反之本次代码可用于持续交付。优选的,第三执行结果显示自定义测试策略执行结果,根据测试命中的问题数量和事先定义的问题数量阈值,如果测试命中的问题数量大于阈值判断本次代码不可用于持续交付,反之本次代码可用于持续交付;第四执行结果显示审查人员对于本次代码的代码复查,如果审查人员认为本次代码的逻辑或者代码编写规范不符合标准,则不可用于持续交付,反之,可用于持续交付。本专利技术的有益效果是:本专利技术通过在容器中安装诸如编译工具等各种工具,然后进行执行,获得至少一个执行结果,根据执行结果判断代码是否可用于持续交付,以使开发人员能够尽早获知代码持续集成过程中暴露的问题,进而提高代码交付速度。附图说明图1是本专利技术的代码持续交付的方法的流程图;图2是本专利技术中容器更新的示意图;图3是本专利技术中持续交付产生文档保存的示意图。具体实施方式下面将结合附图对本专利技术作进一步说明。本专利技术的代码持续交付的方法,使用容器安装代码持续交付过程中的各种工具,本实施例中采用容器为docker。参阅图2,通过docker下载合适的持续交付工具的镜像或者构建适用于自己项目的交付工具镜像,通过镜像创建容器,运行容器。通过Jenkins(一种开源的持续集成工具)容器创建构建任务,Jenkins集成静态代码扫描工具Sonarqube需要安装Sonarqubescanner(Jenkins集成Sonarqube所需插件),配置Sonarqube容器的地址端口和Sonarqube的token(计算机身份认证中的一种方式)。Sonarqube中可以直接配置需要执行的代码扫描规则,如项目前期定义扫描规则为类名函数名是否规范,项目后期定义代码重复率检查等。可直接定义扫描规则无或者新建无静态扫描的Jenkins任务完成跳过静态扫描。Jenkins集成单元测试工具Junit需要安装JunitPlugin(Jenkins集成Junit所需插件),行覆盖率统计工具JaCoCo需要安装JaCoCoplugin(Jenkins集成JaCoCo所需插件)。Jenkins集成Gerrit需要GerritTriggerPlugin(Jenkins集成Gerrit所需插件)。单元测试完后生成测试报告。可直接定义测试用例无或者新建无单元测试的Jenkins任务完成跳过单元测试。在Gerrit里创建Jenkins用户,并且为Jenkins生成SSH(一种为远程登录会话和其他网络服务提供安全性的协议)密钥,将公钥添加到Jenkins的Gerrit帐户上。Gerrit配置代码审核需要两步:Jenkins自动验证和人工评审:将Jenkins用户添加到None-Interactive-Group(通过Gerrit接口进行操作的用户组)里并将其赋有审查验证功能,可直接赋予Jenkins用户不用审核,直接同步部署代码。参见图3,持续交付过程中,产生的文档统一保存在同一数据库容器中,以方便分析代码质量等各种问题。数据库容器选择mysql(一个小型关系型数据库管理系统)容器,静态代码扫描工具Sonarqube等默认保存数据库即为mysql,其他默认数据库不同的,如Gerrit的默认数据库为h2(一个嵌入式数据库),可配置保存数据库为mysql。请参阅图1,本专利技术的代码持续交付的方法包括下列步骤:一、接收开发人员提交的代码。二、将代码输入编译工具进行编译,编译处理后的代码经过静态扫描工具。三、接收静态扫描工具对代码的第一执行结果。四、根据第一执行结果判断所述代码是否本文档来自技高网...

【技术保护点】
1.一种代码持续交付的方法,使用容器安装代码持续交付过程中的各种工具,其特征在于,包括:/n接收开发人员提交的代码;/n将所述代码输入编译工具进行编译,编译处理后的所述代码经过静态扫描工具;/n接收所述静态扫描工具对所述代码的第一执行结果;/n根据第一执行结果判断所述代码是否可用于持续交付;/n将可用于持续交付的代码持续交付。/n

【技术特征摘要】
1.一种代码持续交付的方法,使用容器安装代码持续交付过程中的各种工具,其特征在于,包括:
接收开发人员提交的代码;
将所述代码输入编译工具进行编译,编译处理后的所述代码经过静态扫描工具;
接收所述静态扫描工具对所述代码的第一执行结果;
根据第一执行结果判断所述代码是否可用于持续交付;
将可用于持续交付的代码持续交付。


2.根据权利要求1所述的代码持续交付的方法,其特征在于,还包括:
编译处理后的所述代码还经过单元测试工具或者行覆盖率统计工具;
接收所述单元测试工具或所述行覆盖率统计工具反馈的第二执行结果;当所述第二执行结果由所述单元测试工具反馈时,所述第二执行结果为所述单元测试工具对所述代码的单元测试结果;当所述第二执行结果由所述行覆盖率统计工具反馈时,所述第二执行结果为所述行覆盖率统计工具对所述代码所执行测试的行覆盖率的统计结果;
根据所述第一执行结果和所述第二执行结果判断所述代码是否可用于持续交付。


3.根据权利要求2所述的代码持续交付的方法,其特征在于,还包括:
编译处理后的所述代码或者满足持续交付并部署后的代码,经过自定义测试脚本或者系统测试,获得第三执行结果。


4.根据权利要求3所述的代码持续交付的方法,其特征在于,系统测试分为功能测试和健壮性测试。


5.根据权利要求3所述的代码持续交付的方法,其特征在于,还包括:
编译处理后的所述代码经过人工评审,获得第四执行结果;

【专利技术属性】
技术研发人员:姚松林谢赟吴新野黄海清罗明刚
申请(专利权)人:上海德拓信息技术股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1