Cloud-based build service

US10078536B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10078536-B2
Application numberUS-201615139693-A
CountryUS
Kind codeB2
Filing dateApr 27, 2016
Priority dateAug 30, 2011
Publication dateSep 18, 2018
Grant dateSep 18, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

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.

First claim

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

Assignees

Inventors

Classifications

  • G06F9/505Primary

    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

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10078536B2 cover?
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…
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F9/505. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Sep 18 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).