CN103226485B - 代码发布方法、代码发布机和代码发布系统 - Google Patents

代码发布方法、代码发布机和代码发布系统 Download PDF

Info

Publication number
CN103226485B
CN103226485B CN201310190079.4A CN201310190079A CN103226485B CN 103226485 B CN103226485 B CN 103226485B CN 201310190079 A CN201310190079 A CN 201310190079A CN 103226485 B CN103226485 B CN 103226485B
Authority
CN
China
Prior art keywords
code file
regression machine
machine
regression
code
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
CN201310190079.4A
Other languages
English (en)
Other versions
CN103226485A (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.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing 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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201310190079.4A priority Critical patent/CN103226485B/zh
Publication of CN103226485A publication Critical patent/CN103226485A/zh
Application granted granted Critical
Publication of CN103226485B publication Critical patent/CN103226485B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了代码发布方法、代码发布机和代码发布系统。本发明的这种创建发布任务,将该发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机,其中,回归机用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试,待该多个回归机回归测试通过后,将该多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器的技术方案,由于进行回归测试,避免了有漏洞的代码直接上线,且线上服务器被划分成多个服务器集群,多个回归机对应多个服务器集群,因此能够并行地进行回归测试和代码发布,大大缩短了代码发布的时间,提高了效率。

Description

代码发布方法、代码发布机和代码发布系统
技术领域
本发明涉及计算机技术领域,具体涉及一种代码发布方法、代码发布机和代码发布系统。
背景技术
在互联网行业中,做服务端开发的工程师将程序开发完毕后,需要将程序代码或者编译结果部署到服务器上运行,才能间接的为用户提供服务,这个过程称为代码发布。
代码开发时所使用的机器称为开发机,运行代码并为用户提供服务的服务器称为线上服务器。因此代码发布这个应用场景可以抽象为:将程序代码从开发机拷贝到线上服务器。最简单的是可以采用复制、粘贴等。对于Linux服务器,其一般采用scp(Linux下的远程文件拷贝命令)方式。但是当机器数量超过十台,达到数十台时,这个工作就会非常的繁琐。同时,在部署代码时通常需要执行一些特定的操作,从而导致整个代码发布过程异常艰辛。
为了解决这个问题,现有的解决方式是编写shell脚本,采用scp方式,对所有服务器依次执行代码文件比对和代码文件拷贝工作,同时可以执行一些特定的脚本,以将代码文件发布到线上服务器。这可以解决一部分问题,但当机器数量达到上百台时,这个串行发布的过程会达到数十分钟甚至数小时。
由于发布过程的持续时间长,会导致线上代码的不一致时间会很长,进而影响用户的使用。且由于代码直接上线,没法进行测试,如果代码存在漏洞,会直接影响用户的使用。此外,现有的代码发布过程不利于管理和操作。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种代码发布方法、代码发布机和代码发布系统。
依据本发明的一个方面,提供了一种代码发布方法,用于将待发布的代码文件发布到线上服务器,该方法包括:
创建发布任务;
将所述发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机,其中,所述回归机用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试;
待所述多个回归机回归测试通过后,将所述多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器。
可选地,所述将所述发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机进一步包括:
对于第一回归机,在其上查找所述待发布的代码文件的旧版本代码文件;
如果未查找到,则将所述待发布的代码文件上传到所述第一回归机;否则,将所述待发布的代码文件与所述旧版本代码文件进行比较;
如果所述待发布的代码文件与所述旧版本代码文件存在差异,则将所述待发布的代码文件上传到所述第一回归机。
可选地,将所述发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机进一步包括:
对于除所述第一回归机之外的每个其它回归机,在其上查找所述待发布的代码文件的旧版本代码文件;
如果未查找到,则将所述待发布的代码文件上传到所述其它回归机;否则,将在所述其它回归机上查找到的旧版本代码文件与在所述第一回归机上查找到的旧版本代码文件进行比较;
如果在所述其它回归机上查找到的旧版本代码文件与在所述第一回归机上查找到的旧版本代码文件相同,则按照对所述第一回归机那样对所述其它回归机进行上传;否则将所述待发布的代码文件与在所述其它回归机上查找到的旧版本代码文件进行比较;
如果所述待发布的代码文件与在所述其它回归机上查找到的旧版本代码文件存在差异,则将所述待发布的代码文件上传到所述其它回归机。
可选地,将所述多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器包括:
将每个回归机上的代码文件通过同时同步的方式,并行地同步到与每个回归机对应的服务器集群中的各线上服务器。
可选地,所述将所述多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器包括:
对于每个回归机,将该回归机上的代码文件先同步到与该回归机对应的服务器集群中的部分线上服务器,之后当所述代码文件在所述部分线上服务器上的运行达到预设要求时,再逐步将该回归机上的代码文件同步到与该回归机对应的服务器集群中的其余线上服务器。
可选地,所述创建发布任务之前还包括:对待发布的代码文件进行语法错误检查,把没有语法错误的待发布的代码文件作为本次发布任务待发布的代码文件。
依据本发明的一个方面,提供了一种代码发布机,用于将待发布的代码文件发布到线上服务器,其包括:
发布任务管理单元,适于创建发布任务;
一级发布单元,适于将所述发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机;其中,所述回归机用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试;
二级发布单元,适于待所述多个回归机回归测试通过后,将所述多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器。
可选地,所述一级发布单元进一步适于:
对第一回归机,在其上查找所述待发布的代码文件的旧版本代码文件;如果未查找到,则将所述待发布的代码文件上传到所述第一回归机;否则,将所述待发布的代码文件与所述旧版本代码文件进行比较;如果所述待发布的代码文件与所述旧版本代码文件存在差异,则将所述待发布的代码文件上传到所述第一回归机。
可选地,所述一级发布单元进一步适于:
对除所述第一回归机之外的每个其它回归机,在其上查找所述待发布的代码文件的旧版本代码文件;如果未查找到,则将所述待发布的代码文件上传到所述其它回归机;否则,将在所述其它回归机上查找到的旧版本代码文件与在所述第一回归机上查找到的旧版本代码文件进行比较;如果在所述其它回归机上查找到的旧版本代码文件与在所述第一回归机上查找到的旧版本代码文件相同,则按照对所述第一回归机那样对所述其它回归机进行上传;否则将所述待发布的代码文件与在所述其它回归机上查找到的旧版本代码文件进行比较;如果所述待发布的代码文件与在所述其它回归机上查找到的旧版本代码文件存在差异,则将所述待发布的代码文件上传到所述其它回归机。
可选地,所述二级发布单元进一步适于:将每个回归机上的代码文件通过同时同步的方式,并行地同步到与每个回归机对应的服务器集群中的各线上服务器。
可选地,所述二级发布单元进一步适于:对每个回归机,将该回归机上的代码文件先同步到与该回归机对应的服务器集群中的部分线上服务器,之后当所述代码文件在所述部分线上服务器上的运行达到预设要求时,再逐步将该回归机上的代码文件同步到与该回归机对应的服务器集群中的其余线上服务器。
可选地,所述发布任务管理单元还适于:对待发布的代码文件进行语法错误检查,把没有语法错误的待发布的代码文件作为本次发布任务待发布的代码文件。
依据本发明的又一个方面,提供了一种代码发布系统,其包括多个回归机以及如上述任一项所述的代码发布机,其中,
所述多个回归机与多个服务器集群对应;
每个回归机用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试。
根据本发明的这种创建发布任务,将该发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机,其中,回归机用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试,待该多个回归机回归测试通过后,将该多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器的技术方案,由于进行回归测试,避免了有漏洞的代码直接上线,且线上服务器被划分成多个服务器集群,多个回归机对应多个服务器集群,因此能够并行地进行回归测试和代码发布,大大缩短了代码发布的时间,提高了效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的代码发布方法的流程图;
图2示出了根据本发明一个实施例的代码开发、测试及发布的整体架构图;
图3示出了根据本发明一个实施例的代码发布过程的流程图;
图4示出了根据本发明一个实施例的代码发布机的结构图;以及
图5示出了根据本发明一个实施例的代码发布系统的组成结构图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的代码发布方法的流程图。该方法用于将待发布的代码文件发布到线上服务器,参见图1该方法包括:
步骤S110,创建发布任务。
步骤S120,将所述发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机,其中,所述回归机用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试。
这里,回归机是用来模拟线上服务器的环境,可以运行代码,但是不对用户提供服务,而是用于回归测试。在本发明中,将线上服务器划分成多个服务器集群,每个服务器集群对应一个回归机,也就是说,要发送到该服务器集群上的代码文件首先在与该服务器集群对应的回归机上进行回归测试。
步骤S130,待所述多个回归机回归测试通过后,将所述多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器。
图1所示的方法中,对待发布的代码文件进行回归测试,回归测试通过后,才将代码文件同步到线上服务器,这样就避免了有漏洞的代码直接上线,并且由于多个服务器集群分别对应多个回归机,因此能够进行并行回归测试和代码发布,大大缩短了代码发布的时间,提高了效率。
以下参照图2和图3对本发明的技术方案进行详细说明。
图2示出了根据本发明一个实施例的代码开发、测试及发布的整体架构图。在图2中,开发机230是指代码开发时使用的机器。RD(Research andDevelopment)是指代码开发人员。QA(Quality Assurance)是指代码测试人员。QA测试机240是指测试人员搭建的测试环境;SVN(subversion)220是版本管理工具;代码发布机210是执行代码发布任务的机器。回归机是模拟线上服务器的环境并可以运行代码的机器。多个回归机与多个服务器集群对应,在本实施例中第一回归机250模拟第一服务器集群255的运行环境,第二回归机260模拟第二服务器集群266的运行环境,第三回归机270模拟第三服务器集群277的运行环境,第四回归机280模拟第四服务器集群288的运行环境,以此类推。每个服务器集群由多个线上服务器组成。需要说明的是,本例中每个服务器集群只对应一个回归机,当然每个服务器集群还可以对应于一个以上回归机,这需要视具体情况而定。
测试人员的测试工作包括但并不局限于功能测试和回归测试两种。这里功能测试是开发人员将系统开发完毕后,测试人员对新开发的功能进行测试,重点是测试部分功能的实现完整性。回归测试是对系统整体进行验证,通常验证一个系统的所有功能的完整性。开发人员开发完毕后,先将代码部署到QA测试机240进行功能测试。由于测试版本较多,QA测试机240上的测试环境可能会同时进行多个版本的测试。为了保证上线代码的质量,在QA环境做功能测试,此外为每个服务器集群设置一个回归环境(也即回归机),在回归环境做全面的、针对性的回归测试。为了保证代码发布的质量,代码的发布过程需要QA的确认。RD发起发布请求,将代码分布到回归环境,通知QA到回归环境做回归测试,QA回归测试通过后,允许RD执行发布操作,RD执行最后的发布步骤,将代码从回归环境同步到各自的服务器集群。更详细的代码发布过程参见图3。
图3示出了根据本发明一个实施例的代码发布过程的流程图。如图3所示包括如下步骤S310至步骤S340:
步骤S310,创建发布任务。
具体来说在本步骤中,RD登录代码发布系统(可以远程登录),如果回归环境未被占用,进行创建任务的操作。具体可以在代码发布系统所提供的界面中填写发布说明,在待发布文件框中输入要发布的代码文件在SVN中的路径或者根据SVN的目录树勾选需要上线的文件。然后从SVN中导出对应的代码文件,对代码文件进行语法错误检查,如果有语法错误则提示用户,如果没有语法错误则将该代码文件作为本次发布任务待发布的代码文件进行打包。
步骤S320,将发布任务待发布的代码文件上传到回归环境。
本步骤中,将发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机上。其中,具体的上传过程包括:
(1)对于运行回归环境1的回归机,在其上查找待发布的代码文件的旧版本代码文件;如果未查找到,则将待发布的代码文件上传到该运行回归环境1的回归机;如果查找到,将待发布的代码文件与该旧版本代码文件进行比较。如果待发布的代码文件与该旧版本代码文件存在差异,则将待发布的代码文件上传到该运行回归环境1的回归机。
(2)对于除运行回归环境1的回归机之外的运行其他回归环境(回归环境2、3、4等)的回归机,在其上查找待发布的代码文件的旧版本代码文件;如果未查找到,则将待发布的代码文件上传到该运行其它回归环境的回归机;否则,将在该运行其它回归环境的回归机上查找到的旧版本代码文件与在运行回归环境1的回归机上查找到的旧版本代码文件进行比较,即将运行回归环境1的回归机上查找到的旧版本代码文件作为比较的标准。如果在该运行其它回归环境的回归机上查找到的旧版本代码文件与在运行回归环境1的回归机上查找到的旧版本代码文件相同,则按照对运行回归环境1的回归机那样将代码文件上传到该运行其他回归环境的回归机;否则将待发布的代码文件与在该运行其它回归环境的回归机上查找到的旧版本代码文件进行比较,如果待发布的代码文件与在该运行其它回归环境的回归机上查找到的旧版本代码文件存在差异,则将待发布的代码文件上传到该运行其他回归环境的回归机。
根据上述(1)和(2)对所有的回归机都进行上传完毕后,即完成了将代码从代码发布机发布到回归机的一级发布过程,将本次发布任务标记为“待测试”状态。
在本发明的一个实施例中,提供Web方式的人机交互界面,且在一级发布过程中以diff方式进行比较,并以Web方式显示比较结果的方案,这样可以形象化地显示待发布的代码文件的修改。具体来说本发明中的通过Web模拟Linux diff的方式,给用户提供了一个直观且熟悉的代码文件对比显示方案。diff是Linux中的比较文本文件的命令。
具体地,在上述(1)和(2)中,采用如下方式进行代码文件的比较:
1.调用Linux下的diff命令将两个版本的代码文件进行比较,得到比较结果。为了便于解析,可采用如下命令:
diff-L′Old′-L′New′-U 6old_file_path new_file_path
这样可以将diff的结果顺序的显示出来,由于diff结果有严格的规范,因此便于解析。
2.用PHP(PHP是英文超文本预处理语言Hypertext Preprocessor的缩写)对所述比较结果进行解析,得到解析结果;
具体用PHP对diff的结果按行分析,将结果解析成四个数组,分别是new、old、intra和visible,他们分别记录新文件的每一行、旧文件的每一行、新旧文件在每一行的差异和需要显示的行数。由这四个数组明确的标识出两个文件的具体差异。
3.通过Javascript在Web端重现所述解析结果。
利用如上的四个数组的信息,将文件为Web方式显示出来,并对每一行的每一个字符标识颜色,用于区别。这样,就可以直观的看到两个文件的区别。
步骤S330,进行回归测试。
在本步骤中,RD可以给QA发送回归测试邮件,邮件中可以包含回归机的地址、测试地址、测试说明和RD的联系方式等信息。QA进行回归测试,并在测试完毕后登录代码发布系统,将本次发布任务的状态修改为“允许发布”状态,并给对应的RD发送允许发布的邮件。
步骤S340,将回归机上的代码文件同步到对应的服务器集群中的各线上服务器。
将本步骤的发布过程称为二级发布,具体为:RD收到允许发布的邮件后,登录代码发布系统,显示发布任务列表,从中选择“允许发布”状态的发布任务,将该发布任务在每个回归机上的代码文件通过同时同步的方式,并行地同步到与每个回归机对应的服务器集群中的各线上服务器。考虑到灵活性,可以采用灰度发布方式,即对于每个回归机,将该回归机上的代码文件先同步到与该回归机对应的服务器集群中的部分线上服务器,之后当所述代码文件在所述部分线上服务器上的运行达到预设要求(如代码运行稳定)时,再逐步将该回归机上的代码文件同步到与该回归机对应的服务器集群中的其余线上服务器。
这里可以采用Rsync协议(同步命令)作为文件传输协议将回归机上的代码文件同步到对应服务器集群中的线上服务器,完成二级发布,从而保证发布的安全性和效率。
将已发布的集群标记为“已发布”状态,如果所有的集群都已经发布完毕,则标记本次任务为“已发布”状态。完毕发布后,释放回归环境。将每个发布任务的发布过程采用日志方式进行记录。
图3所示的代码发布方案中通过两级发布,规范了代码发布的流程,降低了误操作对发布过程的影响。其中通过一级发布的严格检查以及回归测试可以有效避免问题代码上线对用户造成的干扰,提高了业务的可靠性。二级发布时,采用并行执行的方式,一个集群中的数十台或数百台线上服务器可以在较快的时间内并行完成新代码的上线,降低了线上代码的不一致时间,从而降低了线上代码不一致导致发生错误的概率。由于发布时间缩短,也大大节省了开发人员的时间,使得开发人员可以节省关注发布过程的时间。采用Web方式的人机交互方式,简化了用户的操作,降低了相关人员进行代码上线操作的复杂度。因为传统的发布过程使用Linux下的脚本,对于不熟悉Linux的人员来说操作比较复杂,而Web方式是大多数人熟悉的,操作起来非常简单方便。且本发明的这种代码发布方案也便于对发布过程进行管理,优化了发布过程,提高了发布效率。发布过程采用统一的日志记录方式,利于问题的追溯与排查。
基于上述实施例给出本发明的代码发布机和代码发布系统的结构。
图4示出了根据本发明一个实施例的代码发布机的结构图。该代码发布机即为上述实施例中用于将待发布的代码文件发布到线上服务器的代码发布机。参见图4,该代码发布机包括:发布任务管理单元401、存储单元402、一级发布单元403和二级发布单元404。
所述发布任务管理单元401,适于创建发布任务,将待发布的代码文件进行语法错误检查,把没有语法错误的待发布的代码文件作为本次发布任务待发布的代码文件。
存储单元402,适于存储代码文件。
一级发布单元403,适于将本次发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机;其中,回归机用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试;
二级发布单元404,适于待该多个回归机回归测试通过后,将多个回归机上的代码文件同步到与该多个回归机对应的多个服务器集群中的各线上服务器。
在本发明的一个实施例中,一级发布单元403进一步适于:对第一回归机,在其上查找待发布的代码文件的旧版本代码文件;如果未查找到,则将该待发布的代码文件上传到第一回归机;否则,将所述待发布的代码文件与所述旧版本代码文件进行比较;如果所述待发布的代码文件与所述旧版本代码文件存在差异,则将所述待发布的代码文件上传到所述第一回归机。这里第一回归即是指与运行第一个服务器集群的回归环境的回归机。
一级发布单元403进一步适于:对除第一回归机之外的每个其它回归机,在其上查找待发布的代码文件的旧版本代码文件;如果未查找到,则将待发布的代码文件上传到所述其它回归机;否则,将在其它回归机上查找到的旧版本代码文件与在所述第一回归机上查找到的旧版本代码文件进行比较;如果在所述其它回归机上查找到的旧版本代码文件与在所述第一回归机上查找到的旧版本代码文件相同,则按照对第一回归机那样对该其它回归机进行上传;否则将待发布的代码文件与在所述其它回归机上查找到的旧版本代码文件进行比较;如果待发布的代码文件与在所述其它回归机上查找到的旧版本代码文件存在差异,则将待发布的代码文件上传到所述其它回归机。
在本发明的一个实施例中,二级发布单元404进一步适于:将每个回归机上的代码文件通过同时同步的方式,并行地同步到与每个回归机对应的服务器集群中的各线上服务器。
在本发明的一个实施例中,二级发布单元404进一步适于:对每个回归机,将该回归机上的代码文件先同步到与该回归机对应的服务器集群中的部分线上服务器,之后当所述代码文件在所述部分线上服务器上的运行达到预设要求时,再逐步将该回归机上的代码文件同步到与该回归机对应的服务器集群中的其余线上服务器。
图5示出了根据本发明一个实施例的代码发布系统的组成结构图。如图5所示,该代码分布系统包括代码发布机500和多个回归机600。
代码发布机500可以是图4和图2所示的代码发布机。多个回归机600可以是如图2中所示的多个回归机,其用于模拟服务器集群中的线上服务器的环境来运行代码文件,并且可以采用本领域技术人员现在已知或者将来已知的任何方法和/或装置来实现。多个回归机600与多个服务器集群对应。每个回归机600用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试。
综上所述,本发明的这种创建发布任务,将该发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机,其中,回归机用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试,待该多个回归机回归测试通过后,将该多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器的技术方案,由于进行回归测试,避免了有漏洞的代码直接上线,且线上服务器被划分成多个服务器集群,多个回归机对应多个服务器集群,因此能够并行地进行回归测试和代码发布,大大缩短了代码发布的时间,提高了效率。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的代码发布机和代码发布系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本文公开了A1、一种代码发布方法,用于将待发布的代码文件发布到线上服务器,该方法包括:创建发布任务;将所述发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机,其中,所述回归机用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试;待所述多个回归机回归测试通过后,将所述多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器。A2、如A1所述的方法,其中,所述将所述发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机进一步包括:对于第一回归机,在其上查找所述待发布的代码文件的旧版本代码文件;如果未查找到,则将所述待发布的代码文件上传到所述第一回归机;否则,将所述待发布的代码文件与所述旧版本代码文件进行比较;如果所述待发布的代码文件与所述旧版本代码文件存在差异,则将所述待发布的代码文件上传到所述第一回归机。A3、如A2所述的方法,其中,将所述发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机进一步包括:对于除所述第一回归机之外的每个其它回归机,在其上查找所述待发布的代码文件的旧版本代码文件;如果未查找到,则将所述待发布的代码文件上传到所述其它回归机;否则,将在所述其它回归机上查找到的旧版本代码文件与在所述第一回归机上查找到的旧版本代码文件进行比较;如果在所述其它回归机上查找到的旧版本代码文件与在所述第一回归机上查找到的旧版本代码文件相同,则按照对所述第一回归机那样对所述其它回归机进行上传;否则将所述待发布的代码文件与在所述其它回归机上查找到的旧版本代码文件进行比较;如果所述待发布的代码文件与在所述其它回归机上查找到的旧版本代码文件存在差异,则将所述待发布的代码文件上传到所述其它回归机。A4、如A1至A3中任一项所述的方法,其中,将所述多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器包括:将每个回归机上的代码文件通过同时同步的方式,并行地同步到与每个回归机对应的服务器集群中的各线上服务器。A5、如A1至A3中任一项所述的方法,其中,所述将所述多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器包括:对于每个回归机,将该回归机上的代码文件先同步到与该回归机对应的服务器集群中的部分线上服务器,之后当所述代码文件在所述部分线上服务器上的运行达到预设要求时,再逐步将该回归机上的代码文件同步到与该回归机对应的服务器集群中的其余线上服务器。A6、如A1所述的方法,其中,所述创建发布任务之前还包括:对待发布的代码文件进行语法错误检查,把没有语法错误的待发布的代码文件作为本次发布任务待发布的代码文件。
本文公开了B7、一种代码发布机,用于将待发布的代码文件发布到线上服务器,其包括:发布任务管理单元,适于创建发布任务;一级发布单元,适于将所述发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机;其中,所述回归机用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试;二级发布单元,适于待所述多个回归机回归测试通过后,将所述多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器。B8、如B7所述的代码发布机,其中,所述一级发布单元进一步适于:对第一回归机,在其上查找所述待发布的代码文件的旧版本代码文件;如果未查找到,则将所述待发布的代码文件上传到所述第一回归机;否则,将所述待发布的代码文件与所述旧版本代码文件进行比较;如果所述待发布的代码文件与所述旧版本代码文件存在差异,则将所述待发布的代码文件上传到所述第一回归机。B9、如B8所述的代码发布机,其中,所述一级发布单元进一步适于:对除所述第一回归机之外的每个其它回归机,在其上查找所述待发布的代码文件的旧版本代码文件;如果未查找到,则将所述待发布的代码文件上传到所述其它回归机;否则,将在所述其它回归机上查找到的旧版本代码文件与在所述第一回归机上查找到的旧版本代码文件进行比较;如果在所述其它回归机上查找到的旧版本代码文件与在所述第一回归机上查找到的旧版本代码文件相同,则按照对所述第一回归机那样对所述其它回归机进行上传;否则将所述待发布的代码文件与在所述其它回归机上查找到的旧版本代码文件进行比较;如果所述待发布的代码文件与在所述其它回归机上查找到的旧版本代码文件存在差异,则将所述待发布的代码文件上传到所述其它回归机。B10、如B7至B9中任一项所述的代码发布机,其中,所述二级发布单元进一步适于:将每个回归机上的代码文件通过同时同步的方式,并行地同步到与每个回归机对应的服务器集群中的各线上服务器。B11、如B7至B9中任一项所述的代码发布机,其中,所述二级发布单元进一步适于:对每个回归机,将该回归机上的代码文件先同步到与该回归机对应的服务器集群中的部分线上服务器,之后当所述代码文件在所述部分线上服务器上的运行达到预设要求时,再逐步将该回归机上的代码文件同步到与该回归机对应的服务器集群中的其余线上服务器。B12、如B7所述的代码发布机,其中,所述发布任务管理单元还适于:对待发布的代码文件进行语法错误检查,把没有语法错误的待发布的代码文件作为本次发布任务待发布的代码文件。
本文公开了C13、一种代码发布系统,其包括多个回归机以及如B7至B12中任一项所述的代码发布机,其中,所述多个回归机与多个服务器集群对应;每个回归机用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试。

Claims (13)

1.一种代码发布方法,用于将待发布的代码文件发布到线上服务器,所述线上服务器划分成多个服务器集群,该方法包括:
创建发布任务;
将所述发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机,其中,所述回归机用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试;
待所述多个回归机回归测试通过后,将所述多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器。
2.如权利要求1所述的方法,其中,所述将所述发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机进一步包括:
对于第一回归机,在其上查找所述待发布的代码文件的旧版本代码文件;
如果未查找到,则将所述待发布的代码文件上传到所述第一回归机;否则,将所述待发布的代码文件与所述旧版本代码文件进行比较;
如果所述待发布的代码文件与所述旧版本代码文件存在差异,则将所述待发布的代码文件上传到所述第一回归机。
3.如权利要求2所述的方法,其中,将所述发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机进一步包括:
对于除所述第一回归机之外的每个其它回归机,在其上查找所述待发布的代码文件的旧版本代码文件;
如果未查找到,则将所述待发布的代码文件上传到所述其它回归机;否则,将在所述其它回归机上查找到的旧版本代码文件与在所述第一回归机上查找到的旧版本代码文件进行比较;
如果在所述其它回归机上查找到的旧版本代码文件与在所述第一回归机上查找到的旧版本代码文件相同,则按照对所述第一回归机那样对所述其它回归机进行上传;否则将所述待发布的代码文件与在所述其它回归机上查找到的旧版本代码文件进行比较;
如果所述待发布的代码文件与在所述其它回归机上查找到的旧版本代码文件存在差异,则将所述待发布的代码文件上传到所述其它回归机。
4.如权利要求1至3中任一项所述的方法,其中,将所述多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器包括:
将每个回归机上的代码文件通过同时同步的方式,并行地同步到与每个回归机对应的服务器集群中的各线上服务器。
5.如权利要求1至3中任一项所述的方法,其中,所述将所述多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器包括:
对于每个回归机,将该回归机上的代码文件先同步到与该回归机对应的服务器集群中的部分线上服务器,之后当所述代码文件在所述部分线上服务器上的运行达到预设要求时,再逐步将该回归机上的代码文件同步到与该回归机对应的服务器集群中的其余线上服务器。
6.如权利要求1所述的方法,其中,所述创建发布任务之前还包括:
对待发布的代码文件进行语法错误检查,把没有语法错误的待发布的代码文件作为本次发布任务待发布的代码文件。
7.一种代码发布机,用于将待发布的代码文件发布到线上服务器,所述线上服务器划分成多个服务器集群,其包括:
发布任务管理单元,适于创建发布任务;
一级发布单元,适于将所述发布任务待发布的代码文件上传到与多个服务器集群对应的多个回归机;其中,所述回归机用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试;
二级发布单元,适于待所述多个回归机回归测试通过后,将所述多个回归机上的代码文件同步到与所述多个回归机对应的多个服务器集群中的各线上服务器。
8.如权利要求7所述的代码发布机,其中,
所述一级发布单元进一步适于:
对第一回归机,在其上查找所述待发布的代码文件的旧版本代码文件;如果未查找到,则将所述待发布的代码文件上传到所述第一回归机;否则,将所述待发布的代码文件与所述旧版本代码文件进行比较;如果所述待发布的代码文件与所述旧版本代码文件存在差异,则将所述待发布的代码文件上传到所述第一回归机。
9.如权利要求8所述的代码发布机,其中,
所述一级发布单元进一步适于:
对除所述第一回归机之外的每个其它回归机,在其上查找所述待发布的代码文件的旧版本代码文件;如果未查找到,则将所述待发布的代码文件上传到所述其它回归机;否则,将在所述其它回归机上查找到的旧版本代码文件与在所述第一回归机上查找到的旧版本代码文件进行比较;如果在所述其它回归机上查找到的旧版本代码文件与在所述第一回归机上查找到的旧版本代码文件相同,则按照对所述第一回归机那样对所述其它回归机进行上传;否则将所述待发布的代码文件与在所述其它回归机上查找到的旧版本代码文件进行比较;如果所述待发布的代码文件与在所述其它回归机上查找到的旧版本代码文件存在差异,则将所述待发布的代码文件上传到所述其它回归机。
10.如权利要求7至9中任一项所述的代码发布机,其中,
所述二级发布单元进一步适于:将每个回归机上的代码文件通过同时同步的方式,并行地同步到与每个回归机对应的服务器集群中的各线上服务器。
11.如权利要求7至9中任一项所述的代码发布机,其中,
所述二级发布单元进一步适于:对每个回归机,将该回归机上的代码文件先同步到与该回归机对应的服务器集群中的部分线上服务器,之后当所述代码文件在所述部分线上服务器上的运行达到预设要求时,再逐步将该回归机上的代码文件同步到与该回归机对应的服务器集群中的其余线上服务器。
12.如权利要求7所述的代码发布机,其中,
所述发布任务管理单元还适于:对待发布的代码文件进行语法错误检查,把没有语法错误的待发布的代码文件作为本次发布任务待发布的代码文件。
13.一种代码发布系统,其包括多个回归机以及如权利要求7至12中任一项所述的代码发布机,其中,
所述多个回归机与多个服务器集群对应;
每个回归机用于模拟与其对应的服务器集群中的线上服务器的环境运行代码文件以对所述代码文件进行回归测试。
CN201310190079.4A 2013-05-21 2013-05-21 代码发布方法、代码发布机和代码发布系统 Active CN103226485B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310190079.4A CN103226485B (zh) 2013-05-21 2013-05-21 代码发布方法、代码发布机和代码发布系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310190079.4A CN103226485B (zh) 2013-05-21 2013-05-21 代码发布方法、代码发布机和代码发布系统

Publications (2)

Publication Number Publication Date
CN103226485A CN103226485A (zh) 2013-07-31
CN103226485B true CN103226485B (zh) 2016-09-28

Family

ID=48836947

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310190079.4A Active CN103226485B (zh) 2013-05-21 2013-05-21 代码发布方法、代码发布机和代码发布系统

Country Status (1)

Country Link
CN (1) CN103226485B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103699385A (zh) * 2013-12-23 2014-04-02 国云科技股份有限公司 一种代码持续集成的方法
CN103955429B (zh) * 2014-05-16 2016-08-31 北京金山网络科技有限公司 确定回归测试范围的方法及装置
CN104410542A (zh) * 2014-11-18 2015-03-11 小米科技有限责任公司 模拟测试方法及装置
CN105045601A (zh) * 2015-08-14 2015-11-11 广东能龙教育股份有限公司 一种基于云平台的产品发布及部署系统
CN106775602B (zh) * 2015-11-20 2020-01-17 北京国双科技有限公司 一种代码发布方法及装置
CN105549992A (zh) * 2015-12-08 2016-05-04 北京奇虎科技有限公司 一种代码发布方法、装置和系统
CN105893035A (zh) * 2016-03-30 2016-08-24 乐视控股(北京)有限公司 分布式代码管理方法及系统
CN107092472B (zh) * 2016-08-19 2021-01-29 浙江口碑网络技术有限公司 一种动态发布方法及设备
CN106557423A (zh) * 2016-11-22 2017-04-05 深圳市掌世界网络科技有限公司 一种互联网代码自动发布方法及系统
CN107239340A (zh) * 2017-04-27 2017-10-10 清华大学 一种数值计算结果可重现性保障系统
CN108958900A (zh) * 2017-05-18 2018-12-07 腾讯科技(深圳)有限公司 一种任务发布方法和任务发布系统
CN107193747B (zh) * 2017-05-27 2022-01-11 北京金山安全软件有限公司 代码测试方法、装置和计算机设备
CN107168763A (zh) * 2017-05-27 2017-09-15 北京思特奇信息技术股份有限公司 一种基于云环境的应用同步方法、发布主机和生产主机
CN107678936B (zh) * 2017-06-25 2021-02-09 平安科技(深圳)有限公司 业务系统预先稽查方法、服务器及计算机可读存储介质
CN107315687A (zh) * 2017-06-29 2017-11-03 环球智达科技(北京)有限公司 代码自动发布方法
CN108093075A (zh) * 2017-12-29 2018-05-29 浪潮软件股份有限公司 一种应用系统灰度发布的实现方法
CN109144562B (zh) * 2018-04-19 2019-06-21 南京新贝金服科技有限公司 一种基于zookeeper的智能代码发布告警方法
CN111324524A (zh) * 2018-12-14 2020-06-23 北京奇虎科技有限公司 一种广告的稳定性测试方法及装置
CN110134431A (zh) * 2019-04-16 2019-08-16 深圳壹账通智能科技有限公司 代码数据管理方法和系统
CN111815401B (zh) * 2020-06-16 2024-02-13 上海万物新生环保科技集团有限公司 一种订单流程控制的方法及设备
CN112800011A (zh) * 2021-01-20 2021-05-14 王铭东 一种对比式在线编程教学方法
CN113094066B (zh) * 2021-03-16 2024-03-26 北京优奥创思科技发展有限公司 一种多服务器代码发布方法及系统
CN114217821A (zh) * 2022-02-21 2022-03-22 深圳市秦丝科技有限公司 多服务器代码灰度发布方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101267645A (zh) * 2008-02-29 2008-09-17 中兴通讯股份有限公司 用于w基站业务流程软件开发的自动化测试方法和系统
CN101963911A (zh) * 2010-09-29 2011-02-02 用友软件股份有限公司 补丁生成方法和装置
CN102521700A (zh) * 2011-12-13 2012-06-27 广东电网公司信息中心 电网信息化评测快速测试系统
CN103067489A (zh) * 2012-12-26 2013-04-24 昆明亿尚科技有限公司 基于三网融合的广电信息发布系统及方法
CN103064663A (zh) * 2012-11-19 2013-04-24 北京百度网讯科技有限公司 浏览器插件的生成、发布、加载和更新方法以及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8312430B2 (en) * 2008-08-27 2012-11-13 International Business Machines Corporation Guarding code check-in with test case execution results

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101267645A (zh) * 2008-02-29 2008-09-17 中兴通讯股份有限公司 用于w基站业务流程软件开发的自动化测试方法和系统
CN101963911A (zh) * 2010-09-29 2011-02-02 用友软件股份有限公司 补丁生成方法和装置
CN102521700A (zh) * 2011-12-13 2012-06-27 广东电网公司信息中心 电网信息化评测快速测试系统
CN103064663A (zh) * 2012-11-19 2013-04-24 北京百度网讯科技有限公司 浏览器插件的生成、发布、加载和更新方法以及系统
CN103067489A (zh) * 2012-12-26 2013-04-24 昆明亿尚科技有限公司 基于三网融合的广电信息发布系统及方法

Also Published As

Publication number Publication date
CN103226485A (zh) 2013-07-31

Similar Documents

Publication Publication Date Title
CN103226485B (zh) 代码发布方法、代码发布机和代码发布系统
Jiang et al. Co-evolution of infrastructure and source code-an empirical study
Gallaba et al. Use and misuse of continuous integration features: An empirical study of projects that (mis) use Travis CI
US6941546B2 (en) Method and apparatus for testing a software component using an abstraction matrix
US6986125B2 (en) Method and apparatus for testing and evaluating a software component using an abstraction matrix
US20170372247A1 (en) Methods, systems, and articles of manufacture for implementing software application development and releases
EP3616066A1 (en) Human-readable, language-independent stack trace summary generation
Dang et al. Transferring code-clone detection and analysis to practice
Santana et al. RAIDE: a tool for Assertion Roulette and Duplicate Assert identification and refactoring
CN106681783A (zh) 一种svn代码检测方法及其系统
Lou et al. Understanding build issue resolution in practice: symptoms and fix patterns
Sotiropoulos et al. Practical fault detection in puppet programs
WO2012052215A1 (en) Software development
US9183122B2 (en) Automated program testing to facilitate recreation of test failure
Hassan et al. As code testing: Characterizing test quality in open source ansible development
US20050114836A1 (en) Block box testing in multi-tier application environments
Hanjura Heroku cloud application development
Mehrpour et al. Can static analysis tools find more defects? a qualitative study of design rule violations found by code review
Ali et al. Automated parallel GUI testing as a service for mobile applications
Guo Hadoop operations and cluster management cookbook
Pillai Software architecture with Python
CN106203091B (zh) 一种虚拟机逃逸检测方法及装置
Dubey Towards adopting ODC in automation application development projects
US9983983B2 (en) Auto-generation of testable units for COBOL code
Yoon et al. Repairing fragile gui test cases using word and layout embedding

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CB03 Change of inventor or designer information

Inventor after: Chen Bin

Inventor after: Sun Quangang

Inventor before: Sun Quangang

COR Change of bibliographic data
TR01 Transfer of patent right

Effective date of registration: 20220725

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right