IP Library › Granted Patent US 12,405,784
Granted Patent B2
US 12,405,784 · App. 17/735,829 · Granted Sep 2, 2025

Software development environment prebuild triggered by environment change commits

Inventors: Anthony Van Der Hoorn (Portland, OR); Srivatsn Narayanan (Bothell, WA); Anuradha Sharma (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F8/71G06F8/36G06F9/45558G06F2009/45562
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 12,405,784
App. No.
17/735,829
Granted
Sep 2, 2025
Kind
B2
Abstract

A computer system is configured to identify a software development environment (SDE), and generate a first prebuild of the SDE. The computer system is further configured to obtain data associated with a plurality of elements that are related to a state of the SDE, and generate a first hash based on data associated with the plurality of elements. The computer system is also configured to identify a commit to the SDE and determine that the commit changed the state of SDE by obtaining data associated with the plurality of elements, generating a second hash based on the data, and determining that the second hash is different from the first hash. In response to determining that the first commit changed the state of the SDE, the computer system then generates a second prebuild of the SDE.

Claims (82)

1. A method implemented at a computer system for generating prebuilds based on state-changing commits of software development environments (SDEs), the method comprising:

identifying a software development environment (SDE);

generating a first prebuild of the SDE, the first prebuild representing a first point-in-time snapshot of the SDE;

obtaining first data associated with a plurality of elements that are related to a state of the SDE;

generating a first hash based on the first data associated with the plurality of elements that are related to the state of the SDE;

identifying a first commit to the SDE that alters the state of the SDE;

determining that the first commit changed the state of the SDE to be incompatible with the first point-in-time snapshot of the SDE, including:

obtaining second data associated with the plurality of elements that are related to the state of the SDE;

generating a second hash based on the second data associated with the plurality of elements that are related to the state of the SDE; and

determining that the second hash is different from the first hash; and

in response to determining that the first commit changed the state of the SDE to be incompatible with the first point-in-time snapshot of the SDE, generating a second prebuild of the SDE, the second prebuild representing a second point-in-time snapshot of the SDE that occurs after the first point-in-time snapshot of the SDE.

2. The method of claim 1 , wherein the plurality of elements of the SDE include a manifest file that defines the SDE, or another file specified in the manifest file.

3. The method of claim 1 , wherein the SDE is hosted in a container, and the plurality of elements of the SDE include a container image file, or a container definition file.

4. The method of claim 1 , wherein the first prebuild or the second prebuild of the SDE is a storage-backed prebuild or a compute-backed prebuild.

5. The method of claim 1 , wherein the method further comprises:

identifying a second commit to the SDE;

determining that the second commit did not create a new state of the SDE, including:

obtaining third data associated with the plurality of elements that are related to the state of the SDE;

generating a third hash based on the third data associated with the plurality of elements that are related to the state of the SDE; and

determining that the third hash is same as at least one of the first hash or the second hash; and

in response to determining that the second commit did not create a new state of the SDE, determining that no additional prebuild is needed.

6. The method of claim 1 , wherein: a storage backs up a plurality of historical prebuilds of the SDE and a plurality of historical hashes generated based on the plurality of historical prebuilds of the SDE, and the method further includes: comparing the second hash with each of the plurality of historical hashes to determine whether the second hash is different from each of the plurality of historical hashes; and in response to determining that the second hash is different from each of the plurality of historical hashes, backing up the second prebuild of the SDE and the second hash in the storage.

7. The method of claim 1 , wherein the method further includes:

identifying a second commit to the SDE;

determining that the second commit requires the first prebuild of the SDE rather than the second prebuild of the SDE, including:

obtaining third data associated with the plurality of elements that are related to the state of the SDE;

generating a third hash based on the third data associated with the plurality of elements that are related to the state of the SDE; and

determining that the third hash is different from the second hash and same as the first hash; and

in response to determining that the second commit requires the first prebuild of the SDE,

retrieving the first prebuild of the SDE; and

starting the SDE based on the first prebuild.

8. A computer system comprising:

one or more processors; and

one or more computer-readable storage devices having stored thereon computer-executable instructions that are structured such that, when the computer-executable instructions are executed by the one or more processors, the computer system is configured to:

identify a software development environment (SDE);

generate a first prebuild of the SDE, the first prebuild representing a first point-in-time snapshot of the SDE;

obtain first data associated with a plurality of elements that are related to a state of the SDE;

generate a first hash based on the first data associated with the plurality of elements that are related to the state of the SDE;

identify a first commit to the SDE that alters the state of the SDE;

determine that the first commit changed the state of the SDE to be incompatible with the first point-in-time snapshot of the SDE, including:

obtaining second data associated with the plurality of elements that are related to the state of the SDE;

generating a second hash based on the second data associated with the plurality of elements that are related to the state of the SDE; and

determining that the second hash is different from the first hash; and

in response to determining that the first commit changed the state of the SDE to be incompatible with the first point-in-time snapshot of the SDE, generate a second prebuild of the SDE, the second prebuild representing a second point-in-time snapshot of the SDE that occurs after the first point-in-time snapshot of the SDE.

9. The computer system of claim 8 , wherein the plurality of elements of the SDE include a manifest file that defines the SDE, or another file specified in the manifest file.

10. The computer system of claim 9 , wherein the plurality of elements of the SDE include a container image file.

11. The computer system of claim 9 , wherein the plurality of elements of the SDE include a container definition file.

12. The computer system of claim 8 , wherein the SDE is hosted in a container.

13. The computer system of claim 8 , wherein the first prebuild or the second prebuild of the SDE is a storage-backed prebuild or a compute-backed prebuild.

14. The computer system of claim 8 , wherein the computer system is further configured to:

identify a second commit to the SDE;

determine that the second commit did not create a new state of the SDE, including:

obtaining third data associated with the plurality of elements that are related to the state of the SDE;

generating a third hash based on the third data associated with the plurality of elements that are related to the state of the SDE; and

determining that the third hash is same as at least one of the first hash or the second hash; and

in response to determining that the second commit did not create a new state of the SDE, determine that no additional prebuild is needed.

15. The computer system of claim 8 , wherein the computer system is further configured to, in response to determining that the first commit to the SDE is incompatible with the SDE,

retrieve the first prebuild of the SDE from a storage; and

start the SDE based on the first prebuild.

16. The computer system of claim 1 , wherein: a storage backs up a plurality of historical prebuilds of the SDE and a plurality of historical hashes generated based on the plurality of historical prebuilds of the SDE, and the computer system is configured to: compare the second hash with each of the plurality of historical hashes to determine whether the second hash is different from each of the plurality of historical hashes; and in response to determining that the second hash is different from each of the plurality of historical hashes, back up the second prebuild of the SDE and the second hash in the storage.

17. The computer system of claim 16 , wherein the storage backs up a predetermined number of prebuilds and corresponding historical hashes.

18. The computer system of claim 16 , wherein the storage backs up each prebuild and its corresponding historical hash for a predetermined time.

19. The computer system of claim 8 , wherein the computer system is further configured to:

identify a second commit to the SDE;

determine that the second commit requires the first prebuild of the SDE rather than the second prebuild of the SDE, including:

obtaining third data associated with the plurality of elements that are related to the state of the SDE;

generating a third hash based on the third data associated with the plurality of elements that are related to the state of the SDE; and

determining that the third hash is different from the second hash and same as the first hash; and

in response to determining that the second commit requires the first prebuild of the SDE,

retrieve the first prebuild of the SDE; and

start the SDE based on the first prebuild.

20. A hardware storage device having stored thereon computer-executable instructions that are structured such that, when the computer-executable instructions are executed by one or more processors of a computer system, the computer-executable instructions configure the computer system to at least:

identify a software development environment (SDE);

generate a first prebuild of the SDE, the first prebuild representing a first point-in-time snapshot of the SDE;

obtain first data associated with a plurality of elements that are related to a state of the SDE;

generate a first hash based on the first data associated with the plurality of elements that are related to the state of the SDE;

identify a first commit to the SDE that alters the state of the SDE;

determine that the first commit changed the state of the SDE to be incompatible with the first point-in-time snapshot of the SDE, including:

obtaining second data associated with the plurality of elements that are related to the state of the SDE;

generating a second hash based on the second data associated with the plurality of elements that are related to the state of the SDE; and

determining that the second hash is different from the first hash; and

in response to determining that the first commit changed the state of the SDE to be incompatible with the first point-in-time snapshot of the SDE, generate a second prebuild of the SDE, the second prebuild representing a second point-in-time snapshot of the SDE that occurs after the first point-in-time snapshot of the SDE.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 15, 2022
From: NARAYANAN, SRIVATSN; SHARMA, ANURADHA
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 060216/0521 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2022
From: VAN DER HOORN, ANTHONY
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 059818/0392 →
Continuity (1)
Related Publication 20230359457A1 · Nov 9, 2023
References Cited (4)
US 11907699B2 · Chen · 2024 [cited by examiner]
US 20130297579A1 · Andrew · 2013 [cited by examiner]
US 20210382709A1 · Sagal · 2021 [cited by examiner]
US 20220197621A1 · Plewa · 2022 [cited by examiner]