IP Library › Granted Patent US 10,339,332
Granted Patent B1
US 10,339,332 · App. 15/269,411 · Granted Jul 2, 2019

Containerized build steps

Inventors: David Bendory (Livingston, NJ); John Asmuth (Rutherford, NJ); Scott Zawalski (New York, NY); Jason Hall (Brooklyn, NY); David Dopson (New York, NY)
Assignee: Google LLC
G06F21/6218G06F8/433G06F8/447G06F8/60G06F21/31
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,339,332
App. No.
15/269,411
Granted
Jul 2, 2019
Kind
B1
Abstract

A method includes receiving a build request containing build step instructions from a user. The build step instructions specify a usage of containers within memory hardware for building an output container. The containers include at least one private container having private contents and/or at least one public container having public contents. The method also includes authenticating the user initiating the build request and determining whether the user is authorized to access the private containers. When the user is authenticated and authorized to access the private containers, the method includes obtaining the containers specified by the build step instructions from the memory hardware, executing the build step instructions to build the output container while using the received containers, and outputting the built output container.

Claims (81)

1. A method comprising:

receiving, at data processing hardware, a build request containing build step instructions from a user, the build step instructions specifying a usage of containers within memory hardware for building an output container, the containers comprising at least one private container having private contents and/or at least one public container having public contents, the at least one private container requiring a user authorization for accessing the private contents, the private contents of the at least one private container comprising a proprietary software development kit for use in building the output container;

authenticating, by the data processing hardware, the user initiating the build request;

determining, by the data processing hardware, whether the user is authorized to access the private containers; and

when the user is authenticated and authorized to access the private containers:

obtaining, by the data processing hardware, the containers specified by the build step instructions from the memory hardware;

executing, by the data processing hardware, the build step instructions to build the output container while using the obtained containers; and

outputting, by the data processing hardware, the built output container,

wherein the built output container includes contents that exclude the proprietary software development kit.

2. The method of claim 1 , wherein the build step instructions specify a series of build steps required to execute for building the output container, each build step associated with at least one of the obtained containers and comprising a unique identifier.

3. The method of claim 2 , wherein the build step instructions define an order of execution for executing the build steps in succession, each successive build step commences to execute after execution of an immediately prior build step is complete.

4. The method of claim 2 , wherein one or more of the build steps comprise a corresponding dependency constraint, the dependency constraint specifying the unique identifier of a prior build step that must complete execution before the corresponding build step commences to execute.

5. The method of claim 4 , further comprising:

determining, by the data processing hardware, whether two or more of the build steps comprise dependency constraints specifying the same unique identifier; and

when at least two of the build steps comprise dependency constraints specifying the same unique identifier, executing, by the data processing hardware, the at least two build steps in parallel after execution of the prior build step associated with the specified unique identifier is complete.

6. The method of claim 1 , wherein executing the build step instructions comprises:

executing at least two build steps in parallel to build corresponding output build results, each build step associated with one of the obtained containers; and

merging the built output build results to build the output container.

7. The method of claim 1 , wherein executing the build step instructions comprises:

executing a compiling build step to build executable code of a software distribution from input source code, the compiling build step using the proprietary software development kit to build the executable code; and

executing a packaging build step that packages the executable code from the compiling build step into a deployment container, the deployment container containing a runtime environment for executing the executable code while excluding the proprietary software development kit.

8. The method of claim 7 , further comprising:

receiving, at the data processing hardware, a pull request from the user to view the deployment container, the pull request comprising a container identifier associated with the deployment container; and

transmitting, by the data processing hardware, the deployment container to a user device associated with the user, the user device configured to execute the deployment container.

9. The method of claim 7 , further comprising:

prior to executing the packaging build step, executing, by the data processing hardware, a unit test build step to determine whether the executable code satisfies operation requirements of the software distribution,

wherein the packaging build step executes when the unit test build step determines the executable code satisfies the operation requirements.

10. The method of claim 1 , further comprising storing, by the data processing hardware, the built output container in a secure container system for executing a corresponding secure execution environment for contents of the built output container, the contents of the output container associated with execution of a software application.

11. The method of claim 10 , further comprising:

receiving, at the data processing hardware, an access request from one or more client devices in communication with the data processing hardware to obtain the software application, each access request including an application identifier associated with the software application; and

distributing the built output container from the data processing hardware to the one or more client devices.

12. The method of claim 1 , further comprising:

receiving, at the data processing hardware, a status request from the user requesting a status of the build step instructions;

obtaining, by the data processing hardware, the status of the build step instructions; and

transmitting a status notification from the data processing hardware to a user device associated with the user, the status notification indicating the status of the build step instructions, the status of the build step instructions indicating one of:

execution of the build step instructions is complete;

execution of the build step instructions has failed;

execution for the build step instructions is currently in progress; or

the build step instructions are currently waiting to execute.

13. The method of claim 1 , wherein the built output container comprises a container identifier associated with the output container and a build step record comprising at least one of a series of build steps specified by the build step instructions, the usage of the received containers during each build step, the order of execution of the build steps, a start timestamp indicating a time when execution of each build step began, an end timestamp indicating a time when execution of each build step completed, or contents of each build result output after executing the corresponding build step.

14. A system comprising:

data processing hardware of a distributed system; and

memory hardware in communication with the data processing hardware, the memory hardware storing instructions that when executed on the data processing hardware cause the data processing hardware to perform operations comprising:

receiving a build request containing build step instructions from a user, the build step instructions specifying a usage of containers within memory hardware for building an output container, the containers comprising at least one private container having private contents and/or at least one public container having public contents, the at least one private container requiring a user authorization for accessing the private contents, the private contents of the at least one private container comprising a proprietary software development kit for use in building the output container;

authenticating the user initiating the build request;

determining whether the user is authorized to access the private containers; and

when the user is authenticated and authorized to access the private containers:

obtaining the containers specified by the build step instructions from the memory hardware;

executing the build step instructions to build the output container while using the received containers; and

outputting the built output container, wherein the built output container includes contents that exclude the proprietary software development kit.

15. The system of claim 14 , wherein the build step instructions specify a series of build steps required to execute for building the output container, each build step associated with at least one of the obtained containers and comprising a unique identifier.

16. The system of claim 15 , wherein the build step instructions define an order of execution for executing the build steps in succession, each successive build step commences to execute after execution of an immediately prior build step is complete.

17. The system of claim 15 , wherein one or more of the build steps comprise a corresponding dependency constraint, the dependency constraint specifying the unique identifier of a prior build step that must complete execution before the corresponding build step commences to execute.

18. The system of claim 17 , wherein the operations further comprise:

determining whether two or more of the build steps comprise dependency constraints specifying the same unique identifier; and

when at least two of the build steps comprise dependency constraints specifying the same unique identifier, executing the at least two build steps in parallel after execution of the prior build step associated with the specified unique identifier is complete.

19. The system of claim 14 , wherein executing the build step instructions comprises:

executing at least two build steps in parallel to build corresponding output build results, each build step associated with one of the obtained containers; and

merging the built output build results to build the output container.

20. The system of claim 14 , wherein executing the build step instructions comprises:

executing a compiling build step to build executable code of a software distribution from input source code, the compiling build step using the proprietary software development kit to build the executable code; and

executing a packaging build step that packages the executable code from the compiling build step into a deployment container, the deployment container containing a runtime environment for executing the executable code while excluding the proprietary software development kit.

21. The system of claim 20 , wherein the operations further comprise:

receiving a pull request from the user to view the deployment container, the pull request comprising a container identifier associated with the deployment container; and

transmitting the deployment container to a user device associated with the user, the user device configured to execute the deployment container.

22. The system of claim 20 , wherein the operations further comprise:

prior to executing the packaging build step, executing a unit test build step to determine whether the executable code satisfies operation requirements of the software distribution,

wherein the packaging build step executes when the unit test build step determines the executable code satisfies the operation requirements.

23. The system of claim 14 , wherein the operations further comprise storing the built output container in a secure container system for executing a corresponding secure execution environment for contents of the built output container, the contents of the output container associated with execution of a software application.

24. The system of claim 23 , wherein the operations further comprise:

receiving an access request from one or more client devices in communication with the data processing hardware to obtain the software application, each access request including an application identifier associated with the software application; and

distributing the built output container from the data processing hardware to the one or more client devices.

25. The system of claim 14 , wherein the operations further comprise:

receiving a status request from the user requesting a status of the build step instructions;

obtaining the status of the build step instructions; and

transmitting a status notification from the data processing hardware to a user device associated with the user, the status notification indicating the status of the build step instructions, the status of the build step instructions indicating one of:

execution of the build step instructions is complete;

execution of the build step instructions has failed;

execution for the build step instructions is currently in progress; or

the build step instructions are currently waiting to execute.

26. The system of claim 14 , wherein the built output container comprises a container identifier associated with the output container and a build step record comprising at least one of a series of build steps specified by the build step instructions, the usage of the received containers during each build step, the order of execution of the build steps, a start timestamp indicating a time when execution of each build step began, an end timestamp indicating a time when execution of each build step completed, or contents of each build result output after executing the corresponding build step.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 27, 2024
From: DOPSON, DAVID
To: GOOGLE INC.
Reel/Frame 069422/0899 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 22, 2024
From: BENDORY, DAVID; ASMUTH, JOHN; ZAWALSKI, SCOTT; HALL, JASON
To: GOOGLE LLC
Reel/Frame 068368/0159 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 12, 2019
From: BENDORY, DAVID; ASMUTH, JOHN; ZAWALSKI, SCOTT; HALL, JASON
To: GOOGLE INC.
Reel/Frame 049448/0776 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 12, 2019
From: DOPSON, DAVID
To: GOOGLE INC.
Reel/Frame 049449/0180 →
CONVERSION Recorded Jun 12, 2019
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 049453/0480 →
CHANGE OF NAME Recorded Oct 20, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044567/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2016
From: DOPSON, DAVID
To: GOOGLE INC.
Reel/Frame 039817/0742 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2016
From: BENDORY, DAVID; ASMUTH, JOHN; ZAWALSKI, SCOTT; HALL, JASON
To: GOOGLE INC.
Reel/Frame 039817/0662 →
Cited By (1)
US 12,340,198