CN111736849A - 一种源代码编译方法及系统 - Google Patents
一种源代码编译方法及系统 Download PDFInfo
- Publication number
- CN111736849A CN111736849A CN202010590967.5A CN202010590967A CN111736849A CN 111736849 A CN111736849 A CN 111736849A CN 202010590967 A CN202010590967 A CN 202010590967A CN 111736849 A CN111736849 A CN 111736849A
- Authority
- CN
- China
- Prior art keywords
- source code
- development machine
- compiling
- gitlab
- server
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000011161 development Methods 0.000 claims abstract description 217
- 230000008569 process Effects 0.000 claims description 21
- 238000009434 installation Methods 0.000 claims description 7
- 230000003993 interaction Effects 0.000 claims description 3
- WZCQRUWWHSTZEM-UHFFFAOYSA-N 1,3-phenylenediamine Chemical compound NC1=CC=CC(N)=C1 WZCQRUWWHSTZEM-UHFFFAOYSA-N 0.000 description 5
- VOZKAJLKRJDJLL-UHFFFAOYSA-N 2,4-diaminotoluene Chemical compound CC1=CC=C(N)C=C1N VOZKAJLKRJDJLL-UHFFFAOYSA-N 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Images
Classifications
-
- 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
本发明公开了一种源代码编译方法及系统,在源代码开发时,每隔一段时间均将Gitlab服务器中的总源代码下载至目标开发机器,并将目标开发机器下载的总源代码与其上编写的源代码合并得到待编译源代码;利用目标开发机器上的Git版本控制系统将待编译源代码传送至Gitlab服务器,以更新其上总源代码;利用Gitlab服务器和目标开发机器上的Gitlab Runner触发目标开发机器上的源代码编译工具编译待编译源代码,并将编译结果通过服务器传送给各本地开发机器。可见,本申请在开发源代码的同时自动进行源代码编译工作,以尽早发现源代码冲突问题,使得开发人员较容易修改源代码,从而降低了源代码的开发难度及开发时间。
Description
技术领域
本发明涉及源代码编译领域,特别是涉及一种源代码编译方法及系统。
背景技术
目前,针对源代码的开发编译工作,通常采用的技术手段为:由多名开发人员分别在本地进行源代码开发,以分工协作共同完成源代码的开发工作;在源代码的开发工作全部完成后,将多名开发人员已编写好的源代码进行合并编译,以确定合并后的源代码有无冲突。但是,在多名开发人员全部已编写好源代码后进行合并编译,很容易产生源代码冲突问题,这是因为源代码多以开发后期暴露问题居多,导致开发难度较大;而且,当存在源代码冲突问题时,开发人员需重新查看编写的所有源代码进行修改,然后基于修改后的源代码重新进行合并编译,导致问题排查困难,开发周期长。
因此,如何提供一种解决上述技术问题的方案是本领域的技术人员目前需要解决的问题。
发明内容
本发明的目的是提供一种源代码编译方法及系统,在本地开发源代码的同时自动进行源代码编译工作,以尽早发现源代码冲突问题,使得本地开发人员较容易修改源代码,从而降低了源代码的开发难度及开发时间。
为解决上述技术问题,本发明提供了一种源代码编译方法,包括:
预先搭建Gitlab服务器,并在各本地开发机器上均安装Git版本控制系统、GitlabRunner及源代码编译工具;其中,各本地开发机器与所述Gitlab服务器均接入同一网域;
在源代码本地开发过程中,每隔一段时间均将所述Gitlab服务器中的总源代码下载至目标开发机器,并将所述目标开发机器下载的总源代码与其上编写的源代码合并得到待编译源代码;其中,目标开发机器为任一本地开发机器;
利用所述目标开发机器上的Git版本控制系统将所述待编译源代码传送至所述Gitlab服务器,以更新所述Gitlab服务器中的总源代码;
利用所述Gitlab服务器和所述目标开发机器上的Gitlab Runner触发所述目标开发机器上的源代码编译工具对所述待编译源代码进行编译,并将编译结果通过所述Gitlab服务器传送给各所述本地开发机器。
优选地,在目标开发机器上安装源代码编译工具的过程,包括:
在目标开发机器上下载源代码编译工具的安装包,以进行所述源代码编译工具的安装;
将所述源代码编译工具添加至所述目标开发机器的系统环境变量中,以将所述源代码编译工具作为所述目标开发机器驱动的源代码编译环境。
优选地,所述源代码编译工具具体为WinDDK编译工具。
优选地,将所述目标开发机器下载的总源代码与其上编写的源代码合并得到待编译源代码的过程,包括:
根据所述目标开发机器上当前已编写的源代码,更新所述目标开发机器当前下载的总源代码中所述目标开发机器对应的源代码部分,并将更新后的总源代码作为待编译源代码。
优选地,利用所述目标开发机器上的Git版本控制系统将所述待编译源代码传送至所述Gitlab服务器的过程,包括:
预先在所述目标开发机器的本地项目的根目录下构建.gitlab-ci.yml文件;
将所述待编译源代码的执行命令写入.gitlab-ci.yml文件,并将.gitlab-ci.yml文件通过所述目标开发机器上的Git版本控制系统传送至所述Gitlab服务器。
优选地,利用所述Gitlab服务器和所述目标开发机器上的Gitlab Runner触发所述目标开发机器上的源代码编译工具对所述待编译源代码进行编译,并将编译结果通过所述Gitlab服务器传送给各所述本地开发机器的过程,包括:
利用所述Gitlab服务器和所述目标开发机器上的Gitlab Runner触发所述目标开发机器上的源代码编译工具对所述待编译源代码进行编译,得到编译结果,并将所述编译结果传送至所述Gitlab服务器;
利用所述Gitlab服务器将所述编译结果以邮件通知方式传送给各所述本地开发机器,供本地开发人员查看。
优选地,所述源代码具体为BIOS源代码。
为解决上述技术问题,本发明还提供了一种源代码编译系统,包括:
预先搭建的Gitlab服务器;
多个本地开发机器;每个本地开发机器上均安装有Git版本控制系统、GitlabRunner及源代码编译工具;
其中,所述Gitlab服务器和多个所述本地开发机器在按照预设交互策略进行交互时实现上述任一种源代码编译方法的步骤。
本发明提供了一种源代码编译方法,预先搭建Gitlab服务器,并在各本地开发机器上均安装Git版本控制系统、Gitlab Runner及源代码编译工具;在源代码本地开发过程中,每隔一段时间均将Gitlab服务器中的总源代码下载至目标开发机器,并将目标开发机器下载的总源代码与其上编写的源代码合并得到待编译源代码;利用目标开发机器上的Git版本控制系统将待编译源代码传送至Gitlab服务器,以更新Gitlab服务器中的总源代码;利用Gitlab服务器和目标开发机器上的Gitlab Runner触发目标开发机器上的源代码编译工具对待编译源代码进行编译,并将编译结果通过Gitlab服务器传送给各本地开发机器。可见,本申请在本地开发源代码的同时自动进行源代码编译工作,以尽早发现源代码冲突问题,使得本地开发人员较容易修改源代码,从而降低了源代码的开发难度及开发时间。
本发明还提供了一种源代码编译系统,与上述源代码编译方法具有相同的有益效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种源代码编译方法的流程图;
图2为本发明实施例提供的一种源代码编译系统的结构示意图。
具体实施方式
本发明的核心是提供一种源代码编译方法及系统,在本地开发源代码的同时自动进行源代码编译工作,以尽早发现源代码冲突问题,使得本地开发人员较容易修改源代码,从而降低了源代码的开发难度及开发时间。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1,图1为本发明实施例提供的一种源代码编译方法的流程图。
该源代码编译方法包括:
步骤S1:预先搭建Gitlab服务器,并在各本地开发机器上均安装Git版本控制系统、Gitlab Runner及源代码编译工具。
需要说明的是,各本地开发机器与Gitlab服务器均接入同一网域,以实现Gitlab服务器与各本地开发机器之间的通讯。
具体地,本申请提前搭建Gitlab服务器,GitLab是一个用于仓库管理系统的开源项目,则GitLab服务器可作为源代码仓库服务器使用。与此同时,本申请还提前在各本地开发机器上均安装Git版本控制系统、Gitlab Runner及源代码编译工具;其中,Git版本控制系统作为GitLab服务器的代码管理工具;Gitlab Runner作为GitLab服务器的任务运行工具,其结合GitLab服务器的GitLab CI(Continuous Integration,持续集成)及GitLab CD(Continuous Delivery,持续交付)功能协调GitLab服务器的工作;源代码编译工具供后续进行源代码本地编译使用。
步骤S2:在源代码本地开发过程中,每隔一段时间均将Gitlab服务器中的总源代码下载至目标开发机器,并将目标开发机器下载的总源代码与其上编写的源代码合并得到待编译源代码。
需要说明的是,步骤S2中的目标开发机器为步骤S1的各本地开发机器中任一本地开发机器。
具体地,在源代码本地开发过程中,若目标开发机器当前具有编译需求,则首先将Gitlab服务器中的总源代码下载至目标开发机器,然后将目标开发机器当前从Gitlab服务器下载的总源代码与目标开发机器上当前已编写的源代码相应合并,并将合并后得到的源代码作为待编译源代码,供后续进行源代码本地编译使用。
还需要说明的是,在源代码本地开发过程中,各本地开发机器可每隔一段时间发出一次编译需求,目的是在本地开发源代码的同时自动进行源代码本地编译工作,以尽早发现源代码冲突问题并及时修正。
步骤S3:利用目标开发机器上的Git版本控制系统将待编译源代码传送至Gitlab服务器,以更新Gitlab服务器中的总源代码。
需要说明的是,将目标开发机器当前从Gitlab服务器下载的总源代码与目标开发机器上当前已编写的源代码合并得到待编译源代码的操作在目标开发机器中进行。
具体地,在目标开发机器得到待编译源代码之后,可利用目标开发机器上的Git版本控制系统将待编译源代码传送至Gitlab服务器,以将当前传送的待编译源代码作为Gitlab服务器中的总源代码,从而更新Gitlab服务器中的总源代码,即保证Gitlab服务器中的总源代码为最近一次编译的源代码,使后续本地开发机器基于最近一次编译的源代码完成类似步骤S2的源代码合并操作。
步骤S4:利用Gitlab服务器和目标开发机器上的Gitlab Runner触发目标开发机器上的源代码编译工具对待编译源代码进行编译,并将编译结果通过Gitlab服务器传送给各本地开发机器。
具体地,在Gitlab服务器接收到待编译源代码之后,利用Gitlab服务器和目标开发机器上的Gitlab Runner可立即触发目标开发机器上的源代码编译工具对待编译源代码进行编译,得到编译结果。基于目标开发机器和Gitlab服务器接入同一网域,在目标开发机器得到编译结果时,可将编译结果反馈给Gitlab服务器,目的是利用Gitlab服务器将编译结果传送给各本地开发机器,供本地开发人员查看并及时发现源代码冲突问题,从而尽早修改源代码。
比如,请参照图2,图2为本发明实施例提供的一种源代码编译系统的结构示意图。
源程序的开发工作可划分为三份,依次交给开发者A、开发者B及开发者C完成。在源代码刚开始进行本地开发时,需由其中一位开发者上传初始源代码S至Gitlab服务器,以作为Gitlab服务器中初始的总源代码。在源代码本地开发过程中,若开发者A最先具有编译需求,则将Gitlab服务器中的源代码S下载至开发者A所在的本地开发机器A,并将本地开发机器A当前从Gitlab服务器下载的源代码S与本地开发机器A上当前已编写的源代码A1相应合并,得到待编译源代码,即源代码S+源代码A1;利用本地开发机器A上的Git版本控制系统将源代码S+源代码A1传送至Gitlab服务器,以更新Gitlab服务器中的总源代码;利用Gitlab服务器和本地开发机器A上的Gitlab Runner触发本地开发机器A上的源代码编译工具对源代码S+源代码A1进行编译,并将编译结果通过Gitlab服务器传送给各本地开发机器,供各开发者查看编译结果。
若接下来开发者B具有编译需求,则将Gitlab服务器中的源代码S+源代码A1下载至开发者B所在的本地开发机器B,并将本地开发机器B当前从Gitlab服务器下载的源代码S+源代码A1与本地开发机器B上当前已编写的源代码B1相应合并,得到待编译源代码,即源代码S+源代码A1+源代码B1;利用本地开发机器B上的Git版本控制系统将源代码S+源代码A1+源代码B1传送至Gitlab服务器,以更新Gitlab服务器中的总源代码;利用Gitlab服务器和本地开发机器B上的Gitlab Runner触发本地开发机器B上的源代码编译工具对源代码S+源代码A1+源代码B1进行编译,并将编译结果通过Gitlab服务器传送给各本地开发机器,供各开发者查看编译结果。
若接下来开发者C具有编译需求,则将Gitlab服务器中的源代码S+源代码A1+源代码B1下载至开发者C所在的本地开发机器C,并将本地开发机器C当前从Gitlab服务器下载的源代码S+源代码A1+源代码B1与本地开发机器C上当前已编写的源代码C1相应合并,得到待编译源代码,即源代码S+源代码A1+源代码B1+源代码C1;利用本地开发机器C上的Git版本控制系统将源代码S+源代码A1+源代码B1+源代码C1传送至Gitlab服务器,以更新Gitlab服务器中的总源代码;利用Gitlab服务器和本地开发机器C上的Gitlab Runner触发本地开发机器C上的源代码编译工具对源代码S+源代码A1+源代码B1+源代码C1进行编译,并将编译结果通过Gitlab服务器传送给各本地开发机器,供各开发者查看编译结果。若接下来任一开发者具有编译需求,编译原理同上,从而在本地开发源代码的同时自动进行源代码编译工作,以尽早发现源代码冲突问题。
本发明提供了一种源代码编译方法,预先搭建Gitlab服务器,并在各本地开发机器上均安装Git版本控制系统、Gitlab Runner及源代码编译工具;在源代码本地开发过程中,每隔一段时间均将Gitlab服务器中的总源代码下载至目标开发机器,并将目标开发机器下载的总源代码与其上编写的源代码合并得到待编译源代码;利用目标开发机器上的Git版本控制系统将待编译源代码传送至Gitlab服务器,以更新Gitlab服务器中的总源代码;利用Gitlab服务器和目标开发机器上的Gitlab Runner触发目标开发机器上的源代码编译工具对待编译源代码进行编译,并将编译结果通过Gitlab服务器传送给各本地开发机器。可见,本申请在本地开发源代码的同时自动进行源代码编译工作,以尽早发现源代码冲突问题,使得本地开发人员较容易修改源代码,从而降低了源代码的开发难度及开发时间。
在上述实施例的基础上:
作为一种可选的实施例,在目标开发机器上安装源代码编译工具的过程,包括:
在目标开发机器上下载源代码编译工具的安装包,以进行源代码编译工具的安装;
将源代码编译工具添加至目标开发机器的系统环境变量中,以将源代码编译工具作为目标开发机器驱动的源代码编译环境。
具体地,本申请在各本地开发机器上均安装源代码编译工具,在各本地开发机器上安装源代码编译工具的安装流程相同,接下来以目标开发机器为例,对源代码编译工具的安装流程进行说明:
一方面,在目标开发机器上下载源代码编译工具的安装包,并基于源代码编译工具的安装包进行源代码编译工具的安装;另一方面,将源代码编译工具添加至目标开发机器的系统环境变量中,以将源代码编译工具作为目标开发机器驱动的源代码编译环境,从而后续实现利用Gitlab服务器和目标开发机器上的Gitlab Runner触发目标开发机器上的源代码编译工具对待编译源代码进行编译。
作为一种可选的实施例,源代码编译工具具体为WinDDK编译工具。
具体地,本申请的源代码编译工具可选用WinDDK编译工具,WinDDK编译工具是一种编译性能较优的源代码编译工具。当然,本申请的源代码编译工具也可选用其它类型的编译工具,本申请在此不做特别的限定。
接下来,以源代码编译工具选用WinDDK编译工具为例,对将源代码编译工具添加至目标开发机器的系统环境变量中的流程进行说明:
首先编辑环境变量:
D:\WinDDK\7600.16385.1\bin\x86
D:\WinDDK\7600.16385.1\bin\x86\x86
D:\WinDDK\7600.16385.1\bin\x86\amd64
其次在系统变量下添加:
表1
至此本地编译环境变量设置完成。
作为一种可选的实施例,将目标开发机器下载的总源代码与其上编写的源代码合并得到待编译源代码的过程,包括:
根据目标开发机器上当前已编写的源代码,更新目标开发机器当前下载的总源代码中目标开发机器对应的源代码部分,并将更新后的总源代码作为待编译源代码。
具体地,若目标开发机器上的源代码编译工具的编译结果为源代码无冲突,则各本地开发人员无需修改当前已编写的源代码,继续编写剩余的源代码即可;若目标开发机器上的源代码编译工具的编译结果为源代码有冲突,则各本地开发人员需基于编译结果适应性修改当前已编写的源代码,并在源代码无误后继续编写剩余的源代码。
基于此,在目标开发机器当前下载的总源代码中目标开发机器对应的源代码部分,与目标开发机器上当前已编写的源代码相比可能存在以下改动情况:在下载的总源代码中目标开发机器对应的源代码部分的基础上,目标开发机器上当前已编写的源代码加入新的源代码;目标开发机器上当前已编写的源代码对下载的总源代码中目标开发机器对应的源代码部分进行修改。因此,根据目标开发机器上当前已编写的源代码,更新目标开发机器当前下载的总源代码中目标开发机器对应的源代码部分,如在总源代码的目标开发机器对应的源代码部分中加入新的源代码或修改总源代码的目标开发机器对应的源代码部分,并将更新后的总源代码作为待编译源代码。
比如,如图2所示,若开发者A在已编写源代码A1的基础上,又继续编写源代码A2,并在开发者C具有编译需求之后再次具有编译需求,则将Gitlab服务器中的源代码S+源代码A1+源代码B1+源代码C1下载至本地开发机器A,并将本地开发机器A当前从Gitlab服务器下载的源代码S+源代码A1+源代码B1+源代码C1与本地开发机器A上当前已编写的源代码源代码A1+源代码A2相应合并,可见,总源代码中本地开发机器A对应的源代码部分由源代码A1变为源代码A1+源代码A2,所以合并结果为源代码S+源代码A1+源代码A2+源代码B1+源代码C1,即为待编译源代码。
若开发者A在已编写源代码A1的基础上,重新修改源代码A1,得到新源代码A1,并在开发者C具有编译需求之后再次具有编译需求,则将Gitlab服务器中的源代码S+源代码A1+源代码B1+源代码C1下载至本地开发机器A,并将本地开发机器A当前从Gitlab服务器下载的源代码S+源代码A1+源代码B1+源代码C1与本地开发机器A上当前已编写的新源代码A1相应合并,可见,总源代码中本地开发机器A对应的源代码部分由源代码A1变为新源代码A1,所以合并结果为源代码S+新源代码A1+源代码B1+源代码C1,即为待编译源代码。
作为一种可选的实施例,利用目标开发机器上的Git版本控制系统将待编译源代码传送至Gitlab服务器的过程,包括:
预先在目标开发机器的本地项目的根目录下构建.gitlab-ci.yml文件;
将待编译源代码的执行命令写入.gitlab-ci.yml文件,并将.gitlab-ci.yml文件通过目标开发机器上的Git版本控制系统传送至Gitlab服务器。
具体地,本申请提前在各本地开发机器的本地项目的根目录下均构建.gitlab-ci.yml文件,.gitlab-ci.yml文件是Gitlab服务器能够识别的一种文件。以目标开发机器为例,对.gitlab-ci.yml文件的作用进行说明:将目标开发机器的待编译源代码的执行命令写入.gitlab-ci.yml文件,并将.gitlab-ci.yml文件通过目标开发机器上的Git版本控制系统传送至Gitlab服务器,在Gitlab服务器识别到.gitlab-ci.yml文件之后,立即通过Gitlab服务器和目标开发机器上的Gitlab Runner触发目标开发机器上的源代码编译工具对待编译源代码进行编译。
作为一种可选的实施例,利用Gitlab服务器和目标开发机器上的Gitlab Runner触发目标开发机器上的源代码编译工具对待编译源代码进行编译,并将编译结果通过Gitlab服务器传送给各本地开发机器的过程,包括:
利用Gitlab服务器和目标开发机器上的Gitlab Runner触发目标开发机器上的源代码编译工具对待编译源代码进行编译,得到编译结果,并将编译结果传送至Gitlab服务器;
利用Gitlab服务器将编译结果以邮件通知方式传送给各本地开发机器,供本地开发人员查看。
具体地,基于目标开发机器和Gitlab服务器接入同一网域,在目标开发机器得到编译结果时,可将编译结果反馈给Gitlab服务器,目的是利用Gitlab服务器将编译结果以邮件通知方式传送给各本地开发机器,供本地开发人员查看并及时发现源代码冲突问题,从而尽早修改源代码。
作为一种可选的实施例,源代码具体为BIOS源代码。
具体地,本申请的源代码编译方法可应用于BIOS(Basic Input Output System,基本输入输出系统)源代码的编译,当然也可应用于其它源代码的编译,根据实际需求而定。
本申请还提供了一种源代码编译系统,包括:
预先搭建的Gitlab服务器;
多个本地开发机器;每个本地开发机器上均安装有Git版本控制系统、GitlabRunner及源代码编译工具;
其中,Gitlab服务器和多个本地开发机器在按照预设交互策略进行交互时实现上述任一种源代码编译方法的步骤。
本申请提供的源代码编译系统的介绍请参考上述源代码编译方法的实施例,本申请在此不再赘述。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (8)
1.一种源代码编译方法,其特征在于,包括:
预先搭建Gitlab服务器,并在各本地开发机器上均安装Git版本控制系统、GitlabRunner及源代码编译工具;其中,各本地开发机器与所述Gitlab服务器均接入同一网域;
在源代码本地开发过程中,每隔一段时间均将所述Gitlab服务器中的总源代码下载至目标开发机器,并将所述目标开发机器下载的总源代码与其上编写的源代码合并得到待编译源代码;其中,目标开发机器为任一本地开发机器;
利用所述目标开发机器上的Git版本控制系统将所述待编译源代码传送至所述Gitlab服务器,以更新所述Gitlab服务器中的总源代码;
利用所述Gitlab服务器和所述目标开发机器上的Gitlab Runner触发所述目标开发机器上的源代码编译工具对所述待编译源代码进行编译,并将编译结果通过所述Gitlab服务器传送给各所述本地开发机器。
2.如权利要求1所述的源代码编译方法,其特征在于,在目标开发机器上安装源代码编译工具的过程,包括:
在目标开发机器上下载源代码编译工具的安装包,以进行所述源代码编译工具的安装;
将所述源代码编译工具添加至所述目标开发机器的系统环境变量中,以将所述源代码编译工具作为所述目标开发机器驱动的源代码编译环境。
3.如权利要求2所述的源代码编译方法,其特征在于,所述源代码编译工具具体为WinDDK编译工具。
4.如权利要求1所述的源代码编译方法,其特征在于,将所述目标开发机器下载的总源代码与其上编写的源代码合并得到待编译源代码的过程,包括:
根据所述目标开发机器上当前已编写的源代码,更新所述目标开发机器当前下载的总源代码中所述目标开发机器对应的源代码部分,并将更新后的总源代码作为待编译源代码。
5.如权利要求4所述的源代码编译方法,其特征在于,利用所述目标开发机器上的Git版本控制系统将所述待编译源代码传送至所述Gitlab服务器的过程,包括:
预先在所述目标开发机器的本地项目的根目录下构建.gitlab-ci.yml文件;
将所述待编译源代码的执行命令写入.gitlab-ci.yml文件,并将.gitlab-ci.yml文件通过所述目标开发机器上的Git版本控制系统传送至所述Gitlab服务器。
6.如权利要求1所述的源代码编译方法,其特征在于,利用所述Gitlab服务器和所述目标开发机器上的Gitlab Runner触发所述目标开发机器上的源代码编译工具对所述待编译源代码进行编译,并将编译结果通过所述Gitlab服务器传送给各所述本地开发机器的过程,包括:
利用所述Gitlab服务器和所述目标开发机器上的Gitlab Runner触发所述目标开发机器上的源代码编译工具对所述待编译源代码进行编译,得到编译结果,并将所述编译结果传送至所述Gitlab服务器;
利用所述Gitlab服务器将所述编译结果以邮件通知方式传送给各所述本地开发机器,供本地开发人员查看。
7.如权利要求1所述的源代码编译方法,其特征在于,所述源代码具体为BIOS源代码。
8.一种源代码编译系统,其特征在于,包括:
预先搭建的Gitlab服务器;
多个本地开发机器;每个本地开发机器上均安装有Git版本控制系统、Gitlab Runner及源代码编译工具;
其中,所述Gitlab服务器和多个所述本地开发机器在按照预设交互策略进行交互时实现如权利要求1-7任一项所述的源代码编译方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010590967.5A CN111736849A (zh) | 2020-06-24 | 2020-06-24 | 一种源代码编译方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010590967.5A CN111736849A (zh) | 2020-06-24 | 2020-06-24 | 一种源代码编译方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111736849A true CN111736849A (zh) | 2020-10-02 |
Family
ID=72651038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010590967.5A Withdrawn CN111736849A (zh) | 2020-06-24 | 2020-06-24 | 一种源代码编译方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111736849A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080059957A1 (en) * | 2006-08-29 | 2008-03-06 | International Business Machines Corporation | Method of compiling source code, compiler, computer system, and computer program product |
CN102929630A (zh) * | 2012-10-31 | 2013-02-13 | 中标软件有限公司 | 一种基于分布式协同开发环境下的代码管理方法及系统 |
CN106462434A (zh) * | 2014-06-25 | 2017-02-22 | 微软技术许可有限责任公司 | 整个程序代码的增量式编译 |
US20170147306A1 (en) * | 2015-11-20 | 2017-05-25 | Google Inc. | Dynamic update of an application in compilation and deployment with hot-swapping |
CN108874650A (zh) * | 2017-05-09 | 2018-11-23 | 上海秦苍信息科技有限公司 | 一种持续集成自动化测试方法 |
CN109766269A (zh) * | 2018-12-18 | 2019-05-17 | 微梦创科网络科技(中国)有限公司 | 持续集成自动化测试方法、装置、设备和介质 |
CN109947458A (zh) * | 2019-03-22 | 2019-06-28 | 广东电网有限责任公司 | 一种离线源代码安全持续集成方法 |
CN110297627A (zh) * | 2019-07-01 | 2019-10-01 | 四川长虹电器股份有限公司 | 一种基于gitlab-ci的前端代码自动化持续集成方法 |
-
2020
- 2020-06-24 CN CN202010590967.5A patent/CN111736849A/zh not_active Withdrawn
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080059957A1 (en) * | 2006-08-29 | 2008-03-06 | International Business Machines Corporation | Method of compiling source code, compiler, computer system, and computer program product |
CN102929630A (zh) * | 2012-10-31 | 2013-02-13 | 中标软件有限公司 | 一种基于分布式协同开发环境下的代码管理方法及系统 |
CN106462434A (zh) * | 2014-06-25 | 2017-02-22 | 微软技术许可有限责任公司 | 整个程序代码的增量式编译 |
US20170147306A1 (en) * | 2015-11-20 | 2017-05-25 | Google Inc. | Dynamic update of an application in compilation and deployment with hot-swapping |
CN108874650A (zh) * | 2017-05-09 | 2018-11-23 | 上海秦苍信息科技有限公司 | 一种持续集成自动化测试方法 |
CN109766269A (zh) * | 2018-12-18 | 2019-05-17 | 微梦创科网络科技(中国)有限公司 | 持续集成自动化测试方法、装置、设备和介质 |
CN109947458A (zh) * | 2019-03-22 | 2019-06-28 | 广东电网有限责任公司 | 一种离线源代码安全持续集成方法 |
CN110297627A (zh) * | 2019-07-01 | 2019-10-01 | 四川长虹电器股份有限公司 | 一种基于gitlab-ci的前端代码自动化持续集成方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391104B (zh) | 一种客户端与react native代码的更新依赖管理方法、装置及系统 | |
US7310801B2 (en) | Servicing a component-based software product throughout the software product lifecycle | |
CN111147555B (zh) | 一种异构资源混合编排的方法 | |
US20090183145A1 (en) | Techniques for reducing down time in updating applications with metadata | |
CN101546269B (zh) | 可执行文件版本更新系统及方法 | |
CN112558980A (zh) | 多软件包管理方法及装置 | |
CN111352653B (zh) | 基于PaaS云平台服务器的系统开发方法及服务器 | |
CN114296871A (zh) | 基于容器的持续集成方法、装置、系统及工作节点和介质 | |
CN110764839A (zh) | 一种业务处理流程配置方法、业务请求处理方法及装置 | |
US9904574B2 (en) | Parallel computing without requiring antecedent code deployment | |
KR20220132458A (ko) | 반응형 또는 적응형 웹 구현을 위한 사용자 인터페이스 플랫폼 통합 개발 시스템 및 방법 | |
US20060184924A1 (en) | Intelligent platform management interface firmware architecture and method of building the same | |
KR20130037995A (ko) | 멀티테넌시를 지원하는 비즈니스 로직 설정방법 | |
CN105320540A (zh) | 一种安卓应用的批量安装方法及系统 | |
CN115860451A (zh) | 一种流程运行方法、装置、电子设备及存储介质 | |
CN113760234B (zh) | 一种软件开发方法和系统 | |
CN103645888A (zh) | 一种自动构建操作系统的系统及方法 | |
WO2024174904A1 (zh) | 容器实例的管理迁移方法、装置和电子设备及存储介质 | |
CN113282318A (zh) | 业务实现方法与装置 | |
CN101169726A (zh) | 基于MTD分区的嵌入式Linux系统在线升级方法 | |
CN111736849A (zh) | 一种源代码编译方法及系统 | |
CN112230919A (zh) | 页面模板化配置发布方法、系统、存储介质及服务器 | |
US7225435B2 (en) | Method and system for eliminating redundant execution sequences that appear in workloads during workload simulation on an e-business application server | |
CN101458628A (zh) | 一种程序版本管理方法 | |
CN109857380B (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20201002 |
|
WW01 | Invention patent application withdrawn after publication |