Managing virtual machine migration
US-2016378532-A1 · Dec 29, 2016 · US
US10078536B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10078536-B2 |
| Application number | US-201615139693-A |
| Country | US |
| Kind code | B2 |
| Filing date | Apr 27, 2016 |
| Priority date | Aug 30, 2011 |
| Publication date | Sep 18, 2018 |
| Grant date | Sep 18, 2018 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Building binary packages for software products, particularly large-scale software products, is a highly computation intensive process. Thus, it is desirable to distribute the workload over a large number of computing nodes so as to have the build process complete in an optimal period of time. One environment providing compute resources that can be utilized for a highly available and dynamically scalable distributed build process is an elastic compute cloud. In such an environment, virtual machines can be instantiated and destroyed as the resource requirements of the build process dictate. This has the advantage that dedicated hardware is unneeded, and excess capacity on the hardware employed can be employed for other computation tasks when the build process is idle. Presented herein are systems, methods and computer storage media for distributing a highly available and scalable build service, suitable for use in an elastic compute environment or other distributed environment.
Opening claim text (preview).
The invention claimed is: 1. A computer-implemented method, suitable for use in a distributed computing environment, utilizing a processor and a memory for implementing a scalable and distributed build service, the method comprising: receiving, via a frontend, user input to instantiate a virtual machine for building at least part of a branch, wherein a branch is a pre-defined configuration of build settings and source files to create a software product; selecting the virtual machine from a pool of virtual machines of a build service, wherein the build service comprises the pool of virtual machines that have been pre-instantiated based on a historical demand for build services; deploying a build environment to the virtual machine, wherein the build environment comprises tools and build components to process a source file of a plurality of source files, to generate a binary file; and causing, using one or more processors, the virtual machine to generate the binary file based on processing at least the source file of the plurality of source files. 2. The computer-implemented method of claim 1 , further comprising: based on the historical demand, increasing or decreasing a size of the pool of virtual machines that are pre-instantiated. 3. The computer-implemented method of claim 1 , further comprising: causing a signing server to generate a digital signature for the binary file based on a representation of the binary file; transferring the digital signature to the virtual machine; causing at least the virtual machine to generate a binary package from at least the binary file and the digital signature; retrieving the binary package from the virtual machine; and causing the virtual machine to make the binary package available for subsequent retrieval. 4. The computer-implemented method of claim 3 , further comprising: generating a user notification that the binary package is available for retrieval. 5. The computer-implemented method of claim 3 , further comprising: causing the virtual machine to publish the binary package to a storage service. 6. The computer-implemented method of claim 1 , wherein the source file is identified and transferred to the virtual machine, wherein identifying and transferring source file comprises: obtaining a list of source files used to build the branch; determining, for a selected source file of the list of source files used to build the branch: (1) a destination virtual machine to which the selected source file is to be transferred; (2) whether the destination virtual machine is currently storing a source file that is in part identical to the selected source file; and a) if the destination virtual machine is currently storing a source file that overlaps the selected source file, identifying the selected source file as not to be transferred; and b) if the destination virtual machine is not currently storing a source file that overlaps the selected source file, identifying the selected source file as to be transferred. 7. The computer-implemented method of claim 1 , wherein identifying a virtual machine for building at least a part of the branch comprises: determining whether a first virtual machine server has an idle virtual machine; if the first virtual machine server has an idle virtual machine, identifying the idle virtual machine as the virtual machine for building at least a part of the branch; and if the first virtual machine server does not have an idle virtual machine, instantiating a new virtual machine and identifying the new virtual machine as the virtual machine for building at least a part of the branch. 8. One or more hardware-implemented computer storage media having computer-executable instructions embodied thereon that, when executed, cause a computing device to perform a method of distributing a scalable build service, the method comprising: receiving, at a virtual machine, a source file for a branch, wherein the virtual machine is one of a plurality of virtual machines in a pool of virtual machines that have been pre-instantiated based on a historical demand for build services, the virtual machine configured with a build environment; generating a binary file based on processing the source file; generating a binary package from at least the binary file and a digital signature corresponding to the binary file, wherein the digital signature is generated at a signing server based on a representation of the binary file, the signing server being different from the virtual machine; and sending the binary package to a predetermined location. 9. The computer storage media of claim 8 , wherein the build environment further comprises an agent that responds to a build service controller to facilitate activities in the build environment. 10. The computer storage media of claim 9 , wherein the build service controller performs at least the following sub-functions of the function of identifying source files to be transferred for the branch: obtains a list of source files used to build the branch; determines, for a selected source file of the list of source files used to build the branch: (1) a destination virtual machine to which the selected source file is to be transferred; (2) whether the destination virtual machine is currently storing a source file that overlaps the selected source file; and a) if the destination virtual machine is currently storing a source file that overlaps the selected source file, identifies the selected source file as not to be transferred; and b) if the destination virtual machine is not currently storing a source file that overlaps the selected source file, identifies the selected source file as to be transferred. 11. The computer storage media of claim 8 , wherein the build environment responds to direct user input in order to perform functions in the build environment. 12. The computer storage media of claim 8 , wherein the virtual machine generates the entire binary file associated with a given branch. 13. The computer storage media of claim 8 , wherein the binary file is allocated to the virtual machine for generation such that a load of generating the binary file is balanced among the virtual machines. 14. The computer storage media of claim 8 , wherein a plurality of binary files corresponding to different branches is allocated to a single virtual machine. 15. A scalable and distributed build service system comprising: a plurality of virtual machines in a pool of virtual machines that have been pre-instantiated based on a historical demand for build services, a virtual machine in the plurality of virtual machines is adapted to perform the following functions: receiving, a source file for a branch, wherein the virtual machine is configured with a build environment; generating a binary file based on processing the source file; generating a binary package from at least the binary file and a digital signature corresponding to the binary file, wherein the digital signature is generated at a signing server based on a representation of the binary file, the signing server being different from the virtual machine; and sending the binary package to a predetermined location; a build service controller adapted to perform the following functions: determining a branch to build; identifying a virtual machine for building at least a part of the branch; identifying a plurality of source files to be transferred for the branch, wherein the virtual machine processes at least the source file of the plurality of source files to generate a corresponding binary file; transferring the source file of the plurality of
considering the load · CPC title
Software deployment · CPC title
Software maintenance or management · CPC title
Version control (security arrangements therefor G06F21/57); Configuration management · CPC title
Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.