US20230053820A1 - Generating a build process for building software in a target environment - Google Patents
Generating a build process for building software in a target environment Download PDFInfo
- Publication number
- US20230053820A1 US20230053820A1 US17/406,356 US202117406356A US2023053820A1 US 20230053820 A1 US20230053820 A1 US 20230053820A1 US 202117406356 A US202117406356 A US 202117406356A US 2023053820 A1 US2023053820 A1 US 2023053820A1
- Authority
- US
- United States
- Prior art keywords
- software
- build
- target
- processor
- stack
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/77—Software metrics
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Definitions
- the present disclosure relates generally to software builds. More specifically, but not by way of limitation, this disclosure relates to generating and executing a build process for building software in a target environment based on a recommended software-stack.
- a software item such as a software application, service, or package, may be built by a computing device out of various software components.
- the software components may include operating systems, architectural layers, protocols, runtime environments, databases, libraries, etc.
- a build process may be a process for determining which software components to use and how to configure the software components together to build the software item.
- a build process may involve building a software item using a software-stack.
- a software-stack is a set of software components (e.g., packages) configured to work in tandem to produce a result or achieve a common goal.
- the software components may be stacked on top of each other in a hierarchy, such that at least some of the software components either directly or indirectly depend on others of the software components.
- LAMP Linux, Apache, MySQL, and PHP/Perl/Python
- WINS Windows Server, IIS, .NET, and SQL Server
- Software-stacks generally include all of the software components needed to run a particular software item so that no additional software is needed to support the software item.
- FIG. 1 is a block diagram of an example of a system for generating a build process for building a target software item based on a recommended software-stack according to some aspects of the present disclosure.
- FIG. 2 is a block diagram of another example of a system for generating a build process for building a target software item based on a recommended software-stack according to some aspects of the present disclosure.
- FIG. 3 is a flow chart of an example of a process for generating a build process for building a target software item based on a recommended software-stack according to some aspects of the present disclosure.
- Building a software item may involve combining and configuring software components in such a way as to create a software build of the software item.
- software components usable to build a target software item
- it may be difficult and time consuming to manually determine which combination of software components and hardware components to use for building a target software item in a target build environment.
- there may be thousands or hundreds of thousands of possible combinations of software components, when considering that each software component may have multiple versions available and its own dependencies, that can be employed to build a target software item.
- the software developer may need to iteratively and manually adjust a build process over time based on issues that may arise in the build environment (during previous iterations of the build process) or in a target runtime environment (where the software build is to be deployed to be run). This can be a slow and error-prone process that can consume a large amount of computing resources (e.g., processing power, memory, and storage space).
- Some examples of the present disclosure can overcome one or more of the abovementioned problems with a system that can determine a recommended software-stack usable in a build process for building a target software item, configure the build process based on the recommended software-stack, and then execute the build process to construct a software build for the target software item. More specifically, the system can determine the recommended software-stack using a recommendation engine. The recommendation engine can determine the recommended software-stack based on one or more characteristics of a target computing environment in which the target software item is to be built or is to run.
- the recommendation engine can determine the recommended software-stack (e.g., a specified set of packages) for use in the build process based on the hardware characteristics or the software characteristics of the target build environment in which the target software item is to be built, the target runtime environment in which the target software item is to be deployed, or both.
- the system can configure the build process and then execute the build process. In this way, the system can automatically determine a software-stack for use in the build process, configure the build process based on the recommended software-stack, and execute the build process.
- the system may also deploy the software build to a target runtime environment, collect performance metrics associated with the deployed software build, and use the performance metrics to modify the recommendation engine so as to improve recommendation results over time.
- the system can configure the build process based on the recommended software-stack from the recommendation engine. This may involve selecting a target built environment for use in building the target software item; installing software packages in the target build environment; setting environment variables, software settings such as compiler flags, and other parameters in the target build environment; or any combination of these. Additionally or alternatively, configuring the build process can involve adjusting an ordering of build steps to be implemented during the build process, removing certain build steps from the build process, or adding build steps to the build process.
- the system may determine an adjustment to the build process that differs from the recommendations provided in the recommended software-stack.
- the adjustments may be made, for example, based on lack of access to recommended software or hardware, issues with the target build environment or target runtime environment, user-inputted restrictions to the system, etc. This may allow for certain customizations or overrides to be made with respect to the build process.
- FIG. 1 is a block diagram of an example of a system 100 for generating a build process 108 for building a target software item based on a recommended software-stack 106 according to some aspects of the present disclosure.
- the system 100 includes a build system 102 .
- the build system 102 can include one or more computing devices, such as servers, laptop computers, desktop computers, or mobile devices (e.g., smartphone, tablet, or e-reader).
- the build system 102 may determine and execute a build process 108 for building a software build 124 of a target software item.
- the build system 102 can provide inputs to and receive outputs from a recommendation engine 104 , which may be internal or external to the build system 102 .
- the build system 102 can transmit a request to the recommendation engine 104 for a software stack for use in a build process for building the target software item.
- the recommendation engine 104 can receive the request, determine a recommended software-stack 106 for the target software item, and output the recommended software-stack 106 to the build process 108 .
- the recommendation engine 104 can determine the recommended software-stack 106 for the target software item by executing a recommendation process 132 that can involve executing a search algorithm to perform a search on a search space containing many or all possible combinations of the target software item and its dependencies.
- the search algorithm can be a heuristic search algorithm, such as a Monte-Carlo tree-analysis algorithm or a temporal-difference learning algorithm; a stochastic search algorithm, such as a simulated annealing algorithm; or another type of algorithm.
- the search algorithm may learn or be guided over time (e.g., between iterations) to more rapidly converge towards solutions, without having to test all of the possible combinations defined in the search space.
- This type of searching can be referred to as a combinatorial optimization problem, in which a space is searched for a local maximum or minimum that best satisfies an objective function.
- the recommendation process 132 can rapidly determine a group of software-stack candidates that are most likely to yield the best results, where each of the software-stack candidates in the group has a unique combination of the software components in the search space.
- the group of software-stack candidates may be a relatively small subset of the total number of software-stack combinations that can be generated using all of the software components in the search space.
- the group may include 100 thousand software-stack candidates, which may be a relatively small subset of 10 million total possibilities. In this way, the recommendation process 132 can significantly reduce the amount of software-stack candidates that will undergo further analysis.
- the recommendation process 132 can also determine respective scores for the software-stack candidates using a scoring function.
- the scoring function can take into account hardware and software characteristics of one or more target computing environments, such as the target build environment 122 and/or a target runtime environment 126 in which the target software item is to execute. Additionally or alternatively, the scoring function can take into account security properties of the target software item and each of its dependencies. Additionally or alternatively, the scoring function can take into account performance properties of the target software item and each of its dependencies. The scoring function may also take into account other factors. Using a scoring function to characterize each of the software-stack candidates in this way can be faster and less resource-intensive than building and testing each of the software-stack candidates to verify application behavior.
- the recommendation engine 104 can select one of the software-stack candidates from the group as a recommended software-stack 106 based on its corresponding score. For example, the recommendation engine 104 can select whichever software-stack candidate in the group has the highest score or the lowest score, depending on the scoring function, as the recommended software-stack 106 .
- the recommended software-stack 106 may be the best software stack for a given computing environment relative to the rest of the software-stack candidates in the group.
- the recommendation engine 104 may then transmit an output indicating the recommended software-stack 106 to the build system 102 , which may use the recommended software-stack 106 to determine and execute a build process 108 for building a software build 124 of the target software item.
- the recommended software-stack 106 may indicate certain hardware and software that is recommended for use in building the target software item.
- the recommended software-stack 106 can specify certain hardware components or software packages that are to be included in a target build environment 122 to achieve a certain build result (e.g., an optimized build process).
- Examples of such hardware components may include a certain number and type of processor, non-volatile memory, and volatile-memory.
- Examples of such software packages may include an operating system, databases, libraries, or any combination of these. Some of the software packages may be considered required packages that must be used for proper completion of the build process 108 or proper operation at runtime.
- the build system 102 can determine (e.g., formulate) a build process 108 for building the target software item based on the recommended software-stack 106 . In some examples, this may include selecting a target build environment 122 that includes or has access to the software packages (e.g., specified packages 110 ) and/or the hardware components 112 specified in the recommended software-stack 106 . For example, the build system 102 can determine whether a local build environment has the recommended software packages or hardware components 112 . If not, the build system 102 may select and initiate the build process 108 on a remote computing system that does have access to some or all of the specified packages 110 and hardware components 112 . An example of the remote computing system can include a remote computing cluster.
- the target software item can include a machine-learning model such as a neural network.
- the specified packages 110 may include machine learning libraries that may have certain build environment specifications. Examples of these specifications may include certain graphics processing unit (“GPU”) models, certain kernels or versions of kernels, certain operating systems, certain nodes, etc.
- the build system 102 may determine which computing cluster has a target build environment 122 that includes the specified packages 110 . In an example where the build system 102 is unable to determine a computing cluster that includes the specified packages 110 , the build system 102 may reconfigure the build process 108 to determine a different computing cluster with different specified packages 110 or hardware components 112 . The build process 108 may be executed using the different computing cluster to create a software build 124 for the target software item.
- Determining the build process 108 may additionally or alternatively include determining specified parameters 118 of the specified packages 110 and an installation order 120 of the specified packages 110 based on the recommended software-stack 106 .
- the specified parameters 118 may include configuration settings for configuring the specified packages 110 .
- the specified parameters 118 may include compiler flags or settings for use in compiling source code.
- the installation order 120 may be an order for installing the specified packages 110 in the target build environment 122 .
- the installation order 120 may be determined based on dependencies among the specified packages 110 .
- TensorFlow is a popular Python library for building artificial intelligence or machine learning applications.
- the recommendation engine 104 may transmit a recommended software-stack 106 for a target software item that is a machine-learning application to the build system 102 .
- the recommended software-stack 106 may include recommendations for certain versions of TensorFlow packages to use, other packages native to the build system 102 and their dependencies on one another and with the TensorFlow packages, files such as binary files and scripts to include in the machine-learning application, databases for training the machine-learning application, etc.
- the build system 102 may determine the build process 108 based on the recommendations.
- the build system 102 can determine that the build process 108 is to include the native packages and the certain versions of the Tensor Flow packages.
- the build system 102 may also determine an available hardware component 112 (e.g., CPU type or GPU type) with characteristics that may allow for installing and configuring the specified packages 110 .
- the installation order 120 may be determined based on the dependencies between the specified packages as provided in the recommended software-stack 106 . For example, if the recommended software-stack 106 includes a first package that depends on a second package, the build system 102 may determine the installation order 120 that involves installing the second package before the first package.
- the build system 102 may also use the recommended dependencies and files provided in the recommended software-stack 106 to determine the specified parameters 118 . For example, a first package may depend on a second package, but only if the second package has a specific configuration. Therefore, the build system 102 may determine a specified parameter 118 for the second package so that the second package may have the specific configuration. Additionally, if the recommended software-stack 106 includes a package accessing a certain database, the build system 102 may determine specified parameters 118 for which database to access, how the specified package 110 uses the database, etc.
- the build system 102 may execute the build process 108 to generate the software build 124 in a target build environment 122 . Executing the build process may involve using the hardware component 112 to install the specified packages 110 in a certain installation order 120 and configuring the specified packages 110 and hardware component 112 to have specified parameters 118 . In some examples, the build process may be stateless. This may allow the build process to be executed multiple times concurrently for multiple target software items.
- the target build environment 122 is shown in FIG. 1 as being internal to the build system 102 , it will be appreciated that in other examples the target build environment 122 may be external to the build system 102 . In some such examples, the build system 102 may execute the build process 108 by transmitting one or more commands to the target build environment 122 for causing the target build environment 122 to perform the build process.
- the build system 102 may deploy the software build 124 in a target runtime environment 126 .
- the target runtime environment 126 is shown in FIG. 1 as being internal to the build system 102 , in other examples the target runtime environment 126 may be external to and accessible by the build system 102 .
- the target runtime environment 126 may be the same as target build environment 122 .
- the target build environment 122 and the target runtime environment 126 may be located in the same or different computing clusters that are inside or outside of the build system 102 .
- the build system 102 may determine performance metrics 128 for the software build 124 in the target runtime environment 126 .
- the performance metrics 128 may a memory consumption metric, a processor consumption metric, a bandwidth consumption metric, a latency metric, or any combination of these.
- the performance metrics 128 may be obtained by testing the software build 124 in the target runtime environment 126 .
- the test results may indicate any of the above metrics as well as other performance characteristics. For example, the test results may indicate whether the software build 124 runs properly in the target runtime environment 126 , whether the software build 124 is an accurate build of the target software item, and the functional performance of the software build 124 .
- the build system 102 may determine feedback 130 for the recommendation engine 104 based on the performance metrics 128 .
- the build system 102 may determine that its target build environment 122 may not have access to certain hardware or software included in the recommended software-stack 106 .
- the build system 102 may configure the feedback 130 to indicate that the certain hardware or software is unavailable.
- the performance metrics 128 may indicate that the target software item has high latency.
- the build system 102 may analyze the software build 124 to determine that use of a certain version of a specified package 110 in the software build 124 may be a cause of the increased latency of the target software item.
- the build system 102 may configure the feedback 130 to indicate the high latency and to indicate that the certain version of the software package is a cause thereof.
- the feedback 130 may take the form of one or more suggestions for changes to the recommendation process 132 .
- the build system 102 may transmit the feedback 130 to the recommendation engine 104 over a network, such as a local area network or the Internet.
- the recommendation engine 104 may receive the feedback 130 and adjust the recommendation process 132 based on the feedback 130 .
- the recommendation engine 104 can adjust a score or stored characteristic associated with one or more of the specified packages 110 based on the feedback 130 .
- This feedback loop may allow the recommendation process 132 to be improved over time.
- the build system 102 may provide the performance metrics 128 or the feedback 130 to a user via a display, which may be for example a liquid crystal display (LCD) or a light-emitting diode (LED) display, to allow the user to modify and improve the build process 108 or the recommendation process 132 accordingly.
- LCD liquid crystal display
- LED light-emitting diode
- FIG. 1 shows a certain number and arrangement of components, it will be appreciated that this is for illustrative purposes and not intended to be limiting. Other examples may include more components, fewer components, different components, or a different arrangement of the components shown in FIG. 1 .
- the recommendation engine 104 may be part of the build system 102 in other examples.
- FIG. 2 is a block diagram of another example of a system 200 for generating a build process 108 for building a target software item based on a recommended software-stack 106 according to some aspects of the present disclosure.
- the system 200 includes a processor 202 communicatively coupled with a memory 204 .
- the processor 202 and the memory 204 can be included in the same housing (e.g., in the same computing device) or remote from one another.
- the processor 202 can include one processor or multiple processors. Examples of the processor 202 include a Field-Programmable Gate Array (FPGA), an application-specific integrated circuit (ASIC), a microprocessor, or any combination of these.
- the processor 202 can execute instructions 206 stored in the memory 204 to perform operations.
- the instructions 206 can include processor-specific instructions generated by a compiler or an interpreter from code written in any suitable computer-programming languages, such as C, C++, C#, etc.
- the memory 204 can include one memory or multiple memories.
- the memory 204 can be non-volatile such that it retains stored information when powered off.
- the memory 204 can include electrically erasable and programmable read-only memory (EEPROM), flash memory, or any other type of non-volatile memory.
- EEPROM electrically erasable and programmable read-only memory
- flash memory or any other type of non-volatile memory.
- At least some of the memory 204 includes a non-transitory computer-readable medium from which the processor 202 can read instructions 206 .
- a computer-readable medium can include electronic, optical, magnetic, or other storage devices capable of providing the processor 202 with computer-readable instructions or other program code. Examples of a non-transitory computer-readable medium can include magnetic disk(s), memory chip(s), ROM, random-access memory (RAM), an ASIC, a configured processor, optical storage, or any combination of these.
- the processor 202 can execute the instructions 206 to perform operations. For example, the processor 202 may receive a recommended software-stack 106 from a recommendation engine 104 for a target software item. The processor 202 may determine, based on the recommended software-stack 106 , a build process 108 for a software build 124 of the target software item in a target build environment 122 . The processor 202 may then execute the build process 108 to generate a software build 124 of the target software item in the target build environment 122 .
- the processor 202 can deploy the software build 124 in a target runtime environment 126 . After deploying the software build 124 in the target runtime environment 126 , the processor 202 may determine performance metrics 128 for the software build 124 in the target runtime environment 126 . The processor 202 may then transmit feedback 130 based on the performance metrics 128 to the recommendation engine 104 . Based on the feedback 130 , the recommendation engine 104 may reconfigure its recommendation process 132 for selecting recommended software-stacks 106 , thereby improving the system 200 .
- the processor 202 can implement some or all of the steps shown in FIG. 3 .
- Other examples can include more steps, fewer steps, different steps, or a different order of the steps than is shown in FIG. 3 . Some or all of the steps may be repeated.
- the steps of FIG. 3 are discussed below with reference to the components discussed above from FIGS. 1 - 2 .
- the processor 202 receives a recommended software-stack 106 from a recommendation engine 104 for a target software item to be built in a target build environment 122 .
- the processor 202 can receive the recommended software-stack 106 as an electronic communication via a network, such as a local area network or the Internet.
- the processor 202 determines, based on the recommended software-stack 106 , a build process 108 for a software build 124 of the target software item in the target build environment 122 . Determining the build process 108 can involve determining how one or more aspects of the build process 108 are to be configured.
- the recommended software-stack 106 may include recommendations for software and hardware characteristics of the target build environment 122 .
- the processor 202 may select a target build environment 122 that has access to the software and hardware characteristics.
- the processor 202 may then configure the build process 108 so as to be performed on the target built environment 122 .
- the processor 202 may command a hardware component 112 of the target built environment 122 to obtain and install specified packages 110 in an installation order 120 .
- the processor 202 may also command the hardware component 112 of the target built environment 122 to configure the specified packages 110 to have specified parameters 118 .
- the processor 202 may then use the target built environment 122 to create the software build 124 .
- determining the build process 108 may include determining a suitable (e.g., compatible) alternative to one or more software items specified in the recommended software-stack 106 .
- the processor 202 may identify a need for a suitable alternative for a particular software item if the software item is not accessible by the target build environment 122 or if the processor 202 has been previously configured by a user to avoid use of the one or more software items.
- the processor 202 may compare characteristics of the particular software item to one or more other software items that are available to identify a suitable alternative.
- the recommended software-stack 106 may include a recommendation for software library that may not be available to the processor 202 .
- the processor 202 may determine a different software library to be used in the build process 108 , based on similarities between the functional characteristics of the two software libraries.
- the recommended software-stack 106 may include a recommendation for installing specified packages 110 from a public source.
- the processor 202 may be configured to not install specified packages 110 from public sources, for example due to security concerns. Therefore, the processor 202 may override the recommendation from the recommendation engine 104 to determine a private (e.g., corporate) source for accessing and installing the specified packages 110 .
- the recommended software-stack 106 may include a recommendation for deploying the software build 124 using Advanced Vector Extensions (“AVX”), but the processor 202 may only have access to Advanced Vector Extensions 2 (“AVX2”) nodes. So, the processor 202 may determine that AVX2 is an expansion of AVX and may configure the build process 108 to use nodes with AVX2 enabled.
- AVX Advanced Vector Extensions
- the build process 108 may be determined (e.g., adjusted) based on one or more characteristics of the target runtime environment 126 . Examples of such characteristics can include the hardware characteristics, software characteristics, and geographical location of the target runtime environment.
- the specified packages 110 may include databases for training a software build 124 for a target software item that is a machine learning model. If the software build 124 is to be deployed in a target runtime environment 126 located in the European Union (“EU”), the processor 202 can configure the build process 108 so that the software build 124 complies with EU laws or regulations, such as the General Data Protection Regulation (“GDPR”). For instance, the processor 202 may determine specified packages 110 that include databases that are specific to and cannot leave the EU.
- EU European Union
- GDPR General Data Protection Regulation
- the processor 202 executes the build process 108 to generate a software build 124 of the target software item in the target build environment 122 .
- This may involve commanding a compiler to compile source code or commanding an interpreter to interpret the source code.
- the processor 202 can instruct the target build environment 122 to use the hardware components 112 to download the specified packages 110 to the target build environment 122 , configure the specified packages 110 to have the specified parameters 118 , and use the specified packages 110 to generate the software build 124 .
- the processor 202 can deploy the software build 124 in a target runtime environment 126 .
- the processor 202 may then perform additional operations on the software build 124 after deployment in the target runtime environment 126 .
- the processor 202 may train the software build 124 , such as with databases included in the specified packages 110 .
- the processor 202 can determine performance metrics 128 for the software build 124 in the target runtime environment 126 .
- the performance metrics 128 may indicate accuracy, efficiency, and latency.
- the performance metrics 128 may be determined by executing tests, which may include user-supplied programs or scripts for testing the software build 124 .
- the processor 202 may be configured to monitor the software build 124 for issues.
- the processor 202 may execute multiple potential build processes 108 in one or more build environments and determine performance metrics 128 for each of the resulting software builds 124 .
- the multiple potential build processes 108 may be determined by the processor 202 based on adjustments to the recommended software-stack 106 . For example, if the recommended software-stack 106 recommends use of a software component that is unavailable to the processor 202 , the processor 202 may generate multiple potential build processes that use available software components that the processor 202 has determined to be similar to the recommended software component.
- the processor 202 may execute the multiple potential build processes 108 in the one or more build environments and may determine performance metrics 128 for the software builds 124 of each potential build process 108 .
- the processor 202 may determine which software build 124 to deploy in the target runtime environment 126 based on the results of the performance metrics 128 .
- the processor 202 may determine feedback 130 based on the performance metrics 128 and may transmit the feedback 130 to the recommendation engine 104 .
- the recommendation engine 104 may adjust a recommendation process 132 for determining recommended software-stacks 106 based on the feedback 130 .
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
Description
- The present disclosure relates generally to software builds. More specifically, but not by way of limitation, this disclosure relates to generating and executing a build process for building software in a target environment based on a recommended software-stack.
- A software item, such as a software application, service, or package, may be built by a computing device out of various software components. The software components may include operating systems, architectural layers, protocols, runtime environments, databases, libraries, etc. A build process may be a process for determining which software components to use and how to configure the software components together to build the software item. In some cases, a build process may involve building a software item using a software-stack. A software-stack is a set of software components (e.g., packages) configured to work in tandem to produce a result or achieve a common goal. The software components may be stacked on top of each other in a hierarchy, such that at least some of the software components either directly or indirectly depend on others of the software components. For example, two well-known software-stacks are LAMP (Linux, Apache, MySQL, and PHP/Perl/Python) and WINS (Windows Server, IIS, .NET, and SQL Server). Software-stacks generally include all of the software components needed to run a particular software item so that no additional software is needed to support the software item.
-
FIG. 1 is a block diagram of an example of a system for generating a build process for building a target software item based on a recommended software-stack according to some aspects of the present disclosure. -
FIG. 2 is a block diagram of another example of a system for generating a build process for building a target software item based on a recommended software-stack according to some aspects of the present disclosure. -
FIG. 3 is a flow chart of an example of a process for generating a build process for building a target software item based on a recommended software-stack according to some aspects of the present disclosure. - Building a software item, such as a software application, may involve combining and configuring software components in such a way as to create a software build of the software item. As there are may be a large number of possible combinations of software components usable to build a target software item, it may be difficult and time consuming to manually determine which combination of software components and hardware components to use for building a target software item in a target build environment. For example, there may be thousands or hundreds of thousands of possible combinations of software components, when considering that each software component may have multiple versions available and its own dependencies, that can be employed to build a target software item. There can also be different combinations of hardware components that can be employed in the target build environment to build the target software item. These factors can affect the quality of the software build, such that some combinations of software components and hardware components may yield software builds that are of significantly poorer quality (e.g., in terms of security, stability, or functionality) than other software builds. It can take considerable time and expertise on the part of a software developer to choose a combination of software components and hardware components that produces a suitable software build, which may still be suboptimal as compared to other possible options.
- It may also be difficult for a software developer to manually determine and configure a build process for use in generating a software build. For example, the software developer may need to iteratively and manually adjust a build process over time based on issues that may arise in the build environment (during previous iterations of the build process) or in a target runtime environment (where the software build is to be deployed to be run). This can be a slow and error-prone process that can consume a large amount of computing resources (e.g., processing power, memory, and storage space).
- Some examples of the present disclosure can overcome one or more of the abovementioned problems with a system that can determine a recommended software-stack usable in a build process for building a target software item, configure the build process based on the recommended software-stack, and then execute the build process to construct a software build for the target software item. More specifically, the system can determine the recommended software-stack using a recommendation engine. The recommendation engine can determine the recommended software-stack based on one or more characteristics of a target computing environment in which the target software item is to be built or is to run. For example, the recommendation engine can determine the recommended software-stack (e.g., a specified set of packages) for use in the build process based on the hardware characteristics or the software characteristics of the target build environment in which the target software item is to be built, the target runtime environment in which the target software item is to be deployed, or both. Upon receiving the recommended software-stack from the recommendation engine, the system can configure the build process and then execute the build process. In this way, the system can automatically determine a software-stack for use in the build process, configure the build process based on the recommended software-stack, and execute the build process. In some examples, the system may also deploy the software build to a target runtime environment, collect performance metrics associated with the deployed software build, and use the performance metrics to modify the recommendation engine so as to improve recommendation results over time.
- As noted above, the system can configure the build process based on the recommended software-stack from the recommendation engine. This may involve selecting a target built environment for use in building the target software item; installing software packages in the target build environment; setting environment variables, software settings such as compiler flags, and other parameters in the target build environment; or any combination of these. Additionally or alternatively, configuring the build process can involve adjusting an ordering of build steps to be implemented during the build process, removing certain build steps from the build process, or adding build steps to the build process.
- In some examples, the system may determine an adjustment to the build process that differs from the recommendations provided in the recommended software-stack. The adjustments may be made, for example, based on lack of access to recommended software or hardware, issues with the target build environment or target runtime environment, user-inputted restrictions to the system, etc. This may allow for certain customizations or overrides to be made with respect to the build process.
- These illustrative examples are given to introduce the reader to the general subject matter discussed here and are not intended to limit the scope of the disclosed concepts. The following sections describe various additional features and examples with reference to the drawings in which similar numerals indicate similar elements but, like the illustrative examples, should not be used to limit the present disclosure.
-
FIG. 1 is a block diagram of an example of asystem 100 for generating abuild process 108 for building a target software item based on a recommended software-stack 106 according to some aspects of the present disclosure. Thesystem 100 includes abuild system 102. Thebuild system 102 can include one or more computing devices, such as servers, laptop computers, desktop computers, or mobile devices (e.g., smartphone, tablet, or e-reader). Thebuild system 102 may determine and execute abuild process 108 for building asoftware build 124 of a target software item. - The
build system 102 can provide inputs to and receive outputs from arecommendation engine 104, which may be internal or external to thebuild system 102. In particular, thebuild system 102 can transmit a request to therecommendation engine 104 for a software stack for use in a build process for building the target software item. Therecommendation engine 104 can receive the request, determine a recommended software-stack 106 for the target software item, and output the recommended software-stack 106 to thebuild process 108. - In some examples, the
recommendation engine 104 can determine the recommended software-stack 106 for the target software item by executing arecommendation process 132 that can involve executing a search algorithm to perform a search on a search space containing many or all possible combinations of the target software item and its dependencies. The search algorithm can be a heuristic search algorithm, such as a Monte-Carlo tree-analysis algorithm or a temporal-difference learning algorithm; a stochastic search algorithm, such as a simulated annealing algorithm; or another type of algorithm. The search algorithm may learn or be guided over time (e.g., between iterations) to more rapidly converge towards solutions, without having to test all of the possible combinations defined in the search space. This type of searching can be referred to as a combinatorial optimization problem, in which a space is searched for a local maximum or minimum that best satisfies an objective function. By solving this combinatorial optimization problem, therecommendation process 132 can rapidly determine a group of software-stack candidates that are most likely to yield the best results, where each of the software-stack candidates in the group has a unique combination of the software components in the search space. The group of software-stack candidates may be a relatively small subset of the total number of software-stack combinations that can be generated using all of the software components in the search space. For example, the group may include 100 thousand software-stack candidates, which may be a relatively small subset of 10 million total possibilities. In this way, therecommendation process 132 can significantly reduce the amount of software-stack candidates that will undergo further analysis. - During or after the search process, the
recommendation process 132 can also determine respective scores for the software-stack candidates using a scoring function. In some examples, the scoring function can take into account hardware and software characteristics of one or more target computing environments, such as thetarget build environment 122 and/or atarget runtime environment 126 in which the target software item is to execute. Additionally or alternatively, the scoring function can take into account security properties of the target software item and each of its dependencies. Additionally or alternatively, the scoring function can take into account performance properties of the target software item and each of its dependencies. The scoring function may also take into account other factors. Using a scoring function to characterize each of the software-stack candidates in this way can be faster and less resource-intensive than building and testing each of the software-stack candidates to verify application behavior. - After scoring the software-stack candidates, the
recommendation engine 104 can select one of the software-stack candidates from the group as a recommended software-stack 106 based on its corresponding score. For example, therecommendation engine 104 can select whichever software-stack candidate in the group has the highest score or the lowest score, depending on the scoring function, as the recommended software-stack 106. The recommended software-stack 106 may be the best software stack for a given computing environment relative to the rest of the software-stack candidates in the group. Therecommendation engine 104 may then transmit an output indicating the recommended software-stack 106 to thebuild system 102, which may use the recommended software-stack 106 to determine and execute abuild process 108 for building asoftware build 124 of the target software item. - The recommended software-
stack 106 may indicate certain hardware and software that is recommended for use in building the target software item. For example, the recommended software-stack 106 can specify certain hardware components or software packages that are to be included in atarget build environment 122 to achieve a certain build result (e.g., an optimized build process). Examples of such hardware components may include a certain number and type of processor, non-volatile memory, and volatile-memory. Examples of such software packages may include an operating system, databases, libraries, or any combination of these. Some of the software packages may be considered required packages that must be used for proper completion of thebuild process 108 or proper operation at runtime. - After receiving the recommended software-
stack 106, thebuild system 102 can determine (e.g., formulate) abuild process 108 for building the target software item based on the recommended software-stack 106. In some examples, this may include selecting atarget build environment 122 that includes or has access to the software packages (e.g., specified packages 110) and/or thehardware components 112 specified in the recommended software-stack 106. For example, thebuild system 102 can determine whether a local build environment has the recommended software packages orhardware components 112. If not, thebuild system 102 may select and initiate thebuild process 108 on a remote computing system that does have access to some or all of the specifiedpackages 110 andhardware components 112. An example of the remote computing system can include a remote computing cluster. - In one specific example, the target software item can include a machine-learning model such as a neural network. The specified
packages 110 may include machine learning libraries that may have certain build environment specifications. Examples of these specifications may include certain graphics processing unit (“GPU”) models, certain kernels or versions of kernels, certain operating systems, certain nodes, etc. Thebuild system 102 may determine which computing cluster has atarget build environment 122 that includes the specified packages 110. In an example where thebuild system 102 is unable to determine a computing cluster that includes the specifiedpackages 110, thebuild system 102 may reconfigure thebuild process 108 to determine a different computing cluster with different specifiedpackages 110 orhardware components 112. Thebuild process 108 may be executed using the different computing cluster to create asoftware build 124 for the target software item. - Determining the
build process 108 may additionally or alternatively include determining specifiedparameters 118 of the specifiedpackages 110 and aninstallation order 120 of the specifiedpackages 110 based on the recommended software-stack 106. The specifiedparameters 118 may include configuration settings for configuring the specified packages 110. For example, the specifiedparameters 118 may include compiler flags or settings for use in compiling source code. Theinstallation order 120 may be an order for installing the specifiedpackages 110 in thetarget build environment 122. Theinstallation order 120 may be determined based on dependencies among the specified packages 110. - As one particular example, TensorFlow is a popular Python library for building artificial intelligence or machine learning applications. The
recommendation engine 104 may transmit a recommended software-stack 106 for a target software item that is a machine-learning application to thebuild system 102. The recommended software-stack 106 may include recommendations for certain versions of TensorFlow packages to use, other packages native to thebuild system 102 and their dependencies on one another and with the TensorFlow packages, files such as binary files and scripts to include in the machine-learning application, databases for training the machine-learning application, etc. In this example involving TensorFlow, thebuild system 102 may determine thebuild process 108 based on the recommendations. For example, thebuild system 102 can determine that thebuild process 108 is to include the native packages and the certain versions of the Tensor Flow packages. Thebuild system 102 may also determine an available hardware component 112 (e.g., CPU type or GPU type) with characteristics that may allow for installing and configuring the specified packages 110. Theinstallation order 120 may be determined based on the dependencies between the specified packages as provided in the recommended software-stack 106. For example, if the recommended software-stack 106 includes a first package that depends on a second package, thebuild system 102 may determine theinstallation order 120 that involves installing the second package before the first package. - In some examples, the
build system 102 may also use the recommended dependencies and files provided in the recommended software-stack 106 to determine the specifiedparameters 118. For example, a first package may depend on a second package, but only if the second package has a specific configuration. Therefore, thebuild system 102 may determine a specifiedparameter 118 for the second package so that the second package may have the specific configuration. Additionally, if the recommended software-stack 106 includes a package accessing a certain database, thebuild system 102 may determine specifiedparameters 118 for which database to access, how the specifiedpackage 110 uses the database, etc. - Having formulated the
build process 108 for the target software item, thebuild system 102 may execute thebuild process 108 to generate thesoftware build 124 in atarget build environment 122. Executing the build process may involve using thehardware component 112 to install the specifiedpackages 110 in acertain installation order 120 and configuring the specifiedpackages 110 andhardware component 112 to have specifiedparameters 118. In some examples, the build process may be stateless. This may allow the build process to be executed multiple times concurrently for multiple target software items. Although thetarget build environment 122 is shown inFIG. 1 as being internal to thebuild system 102, it will be appreciated that in other examples thetarget build environment 122 may be external to thebuild system 102. In some such examples, thebuild system 102 may execute thebuild process 108 by transmitting one or more commands to thetarget build environment 122 for causing thetarget build environment 122 to perform the build process. - After executing the
build process 108 to generate thesoftware build 124, thebuild system 102 may deploy thesoftware build 124 in atarget runtime environment 126. Although thetarget runtime environment 126 is shown inFIG. 1 as being internal to thebuild system 102, in other examples thetarget runtime environment 126 may be external to and accessible by thebuild system 102. In some examples, thetarget runtime environment 126 may be the same astarget build environment 122. For example, thetarget build environment 122 and thetarget runtime environment 126 may be located in the same or different computing clusters that are inside or outside of thebuild system 102. - After the
software build 124 has been built and deployed, thebuild system 102 may determineperformance metrics 128 for thesoftware build 124 in thetarget runtime environment 126. Examples of theperformance metrics 128 may a memory consumption metric, a processor consumption metric, a bandwidth consumption metric, a latency metric, or any combination of these. In some examples, theperformance metrics 128 may be obtained by testing thesoftware build 124 in thetarget runtime environment 126. The test results may indicate any of the above metrics as well as other performance characteristics. For example, the test results may indicate whether the software build 124 runs properly in thetarget runtime environment 126, whether thesoftware build 124 is an accurate build of the target software item, and the functional performance of thesoftware build 124. - In some examples, the
build system 102 may determinefeedback 130 for therecommendation engine 104 based on theperformance metrics 128. For example, thebuild system 102 may determine that itstarget build environment 122 may not have access to certain hardware or software included in the recommended software-stack 106. Thebuild system 102 may configure thefeedback 130 to indicate that the certain hardware or software is unavailable. In another example, theperformance metrics 128 may indicate that the target software item has high latency. Thebuild system 102 may analyze thesoftware build 124 to determine that use of a certain version of a specifiedpackage 110 in thesoftware build 124 may be a cause of the increased latency of the target software item. So, thebuild system 102 may configure thefeedback 130 to indicate the high latency and to indicate that the certain version of the software package is a cause thereof. In some examples, thefeedback 130 may take the form of one or more suggestions for changes to therecommendation process 132. Thebuild system 102 may transmit thefeedback 130 to therecommendation engine 104 over a network, such as a local area network or the Internet. - The
recommendation engine 104 may receive thefeedback 130 and adjust therecommendation process 132 based on thefeedback 130. For example, therecommendation engine 104 can adjust a score or stored characteristic associated with one or more of the specifiedpackages 110 based on thefeedback 130. This feedback loop may allow therecommendation process 132 to be improved over time. In some examples, thebuild system 102 may provide theperformance metrics 128 or thefeedback 130 to a user via a display, which may be for example a liquid crystal display (LCD) or a light-emitting diode (LED) display, to allow the user to modify and improve thebuild process 108 or therecommendation process 132 accordingly. - Although
FIG. 1 shows a certain number and arrangement of components, it will be appreciated that this is for illustrative purposes and not intended to be limiting. Other examples may include more components, fewer components, different components, or a different arrangement of the components shown inFIG. 1 . For instance, therecommendation engine 104 may be part of thebuild system 102 in other examples. -
FIG. 2 is a block diagram of another example of asystem 200 for generating abuild process 108 for building a target software item based on a recommended software-stack 106 according to some aspects of the present disclosure. Thesystem 200 includes aprocessor 202 communicatively coupled with amemory 204. In some examples, theprocessor 202 and thememory 204 can be included in the same housing (e.g., in the same computing device) or remote from one another. - The
processor 202 can include one processor or multiple processors. Examples of theprocessor 202 include a Field-Programmable Gate Array (FPGA), an application-specific integrated circuit (ASIC), a microprocessor, or any combination of these. Theprocessor 202 can executeinstructions 206 stored in thememory 204 to perform operations. In some examples, theinstructions 206 can include processor-specific instructions generated by a compiler or an interpreter from code written in any suitable computer-programming languages, such as C, C++, C#, etc. - The
memory 204 can include one memory or multiple memories. In some examples, thememory 204 can be non-volatile such that it retains stored information when powered off. For instance, thememory 204 can include electrically erasable and programmable read-only memory (EEPROM), flash memory, or any other type of non-volatile memory. At least some of thememory 204 includes a non-transitory computer-readable medium from which theprocessor 202 can readinstructions 206. A computer-readable medium can include electronic, optical, magnetic, or other storage devices capable of providing theprocessor 202 with computer-readable instructions or other program code. Examples of a non-transitory computer-readable medium can include magnetic disk(s), memory chip(s), ROM, random-access memory (RAM), an ASIC, a configured processor, optical storage, or any combination of these. - In some examples, the
processor 202 can execute theinstructions 206 to perform operations. For example, theprocessor 202 may receive a recommended software-stack 106 from arecommendation engine 104 for a target software item. Theprocessor 202 may determine, based on the recommended software-stack 106, abuild process 108 for asoftware build 124 of the target software item in atarget build environment 122. Theprocessor 202 may then execute thebuild process 108 to generate asoftware build 124 of the target software item in thetarget build environment 122. - In some examples, the
processor 202 can deploy thesoftware build 124 in atarget runtime environment 126. After deploying thesoftware build 124 in thetarget runtime environment 126, theprocessor 202 may determineperformance metrics 128 for thesoftware build 124 in thetarget runtime environment 126. Theprocessor 202 may then transmitfeedback 130 based on theperformance metrics 128 to therecommendation engine 104. Based on thefeedback 130, therecommendation engine 104 may reconfigure itsrecommendation process 132 for selecting recommended software-stacks 106, thereby improving thesystem 200. - In some examples, the
processor 202 can implement some or all of the steps shown inFIG. 3 . Other examples can include more steps, fewer steps, different steps, or a different order of the steps than is shown inFIG. 3 . Some or all of the steps may be repeated. The steps ofFIG. 3 are discussed below with reference to the components discussed above fromFIGS. 1-2 . - In
block 302, theprocessor 202 receives a recommended software-stack 106 from arecommendation engine 104 for a target software item to be built in atarget build environment 122. Theprocessor 202 can receive the recommended software-stack 106 as an electronic communication via a network, such as a local area network or the Internet. - In
block 304, theprocessor 202 determines, based on the recommended software-stack 106, abuild process 108 for asoftware build 124 of the target software item in thetarget build environment 122. Determining thebuild process 108 can involve determining how one or more aspects of thebuild process 108 are to be configured. - In some examples, the recommended software-
stack 106 may include recommendations for software and hardware characteristics of thetarget build environment 122. So, theprocessor 202 may select atarget build environment 122 that has access to the software and hardware characteristics. Theprocessor 202 may then configure thebuild process 108 so as to be performed on the target builtenvironment 122. For instance, theprocessor 202 may command ahardware component 112 of the target builtenvironment 122 to obtain and install specifiedpackages 110 in aninstallation order 120. Theprocessor 202 may also command thehardware component 112 of the target builtenvironment 122 to configure the specifiedpackages 110 to have specifiedparameters 118. Theprocessor 202 may then use the target builtenvironment 122 to create thesoftware build 124. - In some examples, determining the
build process 108 may include determining a suitable (e.g., compatible) alternative to one or more software items specified in the recommended software-stack 106. For example, theprocessor 202 may identify a need for a suitable alternative for a particular software item if the software item is not accessible by thetarget build environment 122 or if theprocessor 202 has been previously configured by a user to avoid use of the one or more software items. Theprocessor 202 may compare characteristics of the particular software item to one or more other software items that are available to identify a suitable alternative. For example, the recommended software-stack 106 may include a recommendation for software library that may not be available to theprocessor 202. So, theprocessor 202 may determine a different software library to be used in thebuild process 108, based on similarities between the functional characteristics of the two software libraries. In one example, the recommended software-stack 106 may include a recommendation for installing specifiedpackages 110 from a public source. Theprocessor 202 may be configured to not install specifiedpackages 110 from public sources, for example due to security concerns. Therefore, theprocessor 202 may override the recommendation from therecommendation engine 104 to determine a private (e.g., corporate) source for accessing and installing the specified packages 110. In another example, the recommended software-stack 106 may include a recommendation for deploying thesoftware build 124 using Advanced Vector Extensions (“AVX”), but theprocessor 202 may only have access to Advanced Vector Extensions 2 (“AVX2”) nodes. So, theprocessor 202 may determine that AVX2 is an expansion of AVX and may configure thebuild process 108 to use nodes with AVX2 enabled. - In some examples, the
build process 108 may be determined (e.g., adjusted) based on one or more characteristics of thetarget runtime environment 126. Examples of such characteristics can include the hardware characteristics, software characteristics, and geographical location of the target runtime environment. For example, the specifiedpackages 110 may include databases for training asoftware build 124 for a target software item that is a machine learning model. If thesoftware build 124 is to be deployed in atarget runtime environment 126 located in the European Union (“EU”), theprocessor 202 can configure thebuild process 108 so that thesoftware build 124 complies with EU laws or regulations, such as the General Data Protection Regulation (“GDPR”). For instance, theprocessor 202 may determine specifiedpackages 110 that include databases that are specific to and cannot leave the EU. - In
block 306, theprocessor 202 executes thebuild process 108 to generate asoftware build 124 of the target software item in thetarget build environment 122. This may involve commanding a compiler to compile source code or commanding an interpreter to interpret the source code. In some examples, theprocessor 202 can instruct thetarget build environment 122 to use thehardware components 112 to download the specifiedpackages 110 to thetarget build environment 122, configure the specifiedpackages 110 to have the specifiedparameters 118, and use the specifiedpackages 110 to generate thesoftware build 124. - Once the
software build 124 is created, in some examples theprocessor 202 can deploy thesoftware build 124 in atarget runtime environment 126. Theprocessor 202 may then perform additional operations on thesoftware build 124 after deployment in thetarget runtime environment 126. For example, when the target software item is a machine learning model, theprocessor 202 may train thesoftware build 124, such as with databases included in the specified packages 110. - In some examples, the
processor 202 can determineperformance metrics 128 for thesoftware build 124 in thetarget runtime environment 126. Theperformance metrics 128 may indicate accuracy, efficiency, and latency. Theperformance metrics 128 may be determined by executing tests, which may include user-supplied programs or scripts for testing thesoftware build 124. Theprocessor 202 may be configured to monitor thesoftware build 124 for issues. - In some examples, the
processor 202 may execute multiple potential build processes 108 in one or more build environments and determineperformance metrics 128 for each of the resulting software builds 124. The multiple potential build processes 108 may be determined by theprocessor 202 based on adjustments to the recommended software-stack 106. For example, if the recommended software-stack 106 recommends use of a software component that is unavailable to theprocessor 202, theprocessor 202 may generate multiple potential build processes that use available software components that theprocessor 202 has determined to be similar to the recommended software component. Theprocessor 202 may execute the multiple potential build processes 108 in the one or more build environments and may determineperformance metrics 128 for the software builds 124 of eachpotential build process 108. Theprocessor 202 may determine which software build 124 to deploy in thetarget runtime environment 126 based on the results of theperformance metrics 128. In some examples, theprocessor 202 may determinefeedback 130 based on theperformance metrics 128 and may transmit thefeedback 130 to therecommendation engine 104. Therecommendation engine 104 may adjust arecommendation process 132 for determining recommended software-stacks 106 based on thefeedback 130. - The foregoing description of certain examples, including illustrated examples, has been presented only for the purpose of illustration and description and is not intended to be exhaustive or to limit the disclosure to the precise forms disclosed. Numerous modifications, adaptations, and uses thereof will be apparent to those skilled in the art without departing from the scope of the disclosure. For instance, any examples described herein can be combined with any other examples to yield further examples.
Claims (20)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/406,356 US11995420B2 (en) | 2021-08-19 | 2021-08-19 | Generating a build process for building software in a target environment |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/406,356 US11995420B2 (en) | 2021-08-19 | 2021-08-19 | Generating a build process for building software in a target environment |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20230053820A1 true US20230053820A1 (en) | 2023-02-23 |
| US11995420B2 US11995420B2 (en) | 2024-05-28 |
Family
ID=85227571
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/406,356 Active 2041-09-12 US11995420B2 (en) | 2021-08-19 | 2021-08-19 | Generating a build process for building software in a target environment |
Country Status (1)
| Country | Link |
|---|---|
| US (1) | US11995420B2 (en) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN116860262A (en) * | 2023-06-26 | 2023-10-10 | 曙光智算信息技术有限公司 | Fantasy engine deployment method and device and computer equipment |
| US20240045786A1 (en) * | 2022-08-04 | 2024-02-08 | Airbiquity Inc. | Build system supporting code audits, code verification, and software forensics |
| US20250094318A1 (en) * | 2023-09-14 | 2025-03-20 | Oracle International Corporation | Multi-architecture rapid testing framework |
Citations (30)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070055963A1 (en) * | 2005-09-08 | 2007-03-08 | Lucent Technologies, Inc. | Compile target and compiler flag extraction in program analysis and transformation systems |
| US20170090884A1 (en) * | 2015-09-28 | 2017-03-30 | Semmle Limited | Automatic determination of compiler configuration |
| US20170102924A1 (en) * | 2015-10-11 | 2017-04-13 | Renesas Electronics America Inc. | Software architecture for embedded systems |
| US20170293695A1 (en) * | 2016-04-12 | 2017-10-12 | Ebay Inc. | Optimizing similar item recommendations in a semi-structured environment |
| US20180157486A1 (en) * | 2016-12-07 | 2018-06-07 | Sap Se | Software version fingerprint generation and identification |
| EP3432144A1 (en) * | 2017-07-20 | 2019-01-23 | Fujitsu Limited | A computer-implemented method and system for automatically recommending a code modification |
| US10216512B1 (en) * | 2016-09-29 | 2019-02-26 | Amazon Technologies, Inc. | Managed multi-container builds |
| WO2019099008A1 (en) * | 2017-11-16 | 2019-05-23 | Hewlett-Packard Development Company, L.P. | Software builds using a cloud system |
| CN110020121A (en) * | 2017-10-16 | 2019-07-16 | 上海交通大学 | Software crowdsourcing item recommendation method and system based on transfer learning |
| EP3572931A1 (en) * | 2018-05-23 | 2019-11-27 | Fujitsu Technology Solutions Intellectual Property GmbH | Installation and configuration of operating system and application software using local repositories |
| US20200034135A1 (en) * | 2018-07-30 | 2020-01-30 | International Business Machines Corporation | Analyzing software change impact based on machine learning |
| US20200117434A1 (en) * | 2016-12-21 | 2020-04-16 | Aon Global Operations Ltd (Singapore Branch) | Methods, systems, and portal for accelerating aspects of data analytics application development and deployment |
| US20200125996A1 (en) * | 2018-10-19 | 2020-04-23 | Red Hat, Inc. | Automated software selection using a vector-trained deep learning model |
| US20200159536A1 (en) * | 2018-11-21 | 2020-05-21 | Sri International | Unicontainers |
| US10671384B1 (en) * | 2017-12-07 | 2020-06-02 | Amazon Technologies, Inc. | Proactive seeding of build Artifacts |
| CN111242321A (en) * | 2019-04-18 | 2020-06-05 | 中科寒武纪科技股份有限公司 | Data processing method and related product |
| US10698668B1 (en) * | 2018-05-29 | 2020-06-30 | Amazon Technologies, Inc. | Custom code transformations during compilation process |
| US20200272459A1 (en) * | 2019-02-25 | 2020-08-27 | Red Hat, Inc. | Deploying applications in a computing environment |
| US20200356360A1 (en) * | 2019-05-06 | 2020-11-12 | Red Hat, Inc. | Automated software selection using matrix factorization |
| US20200387357A1 (en) * | 2017-12-05 | 2020-12-10 | Agile Stacks Inc. | Machine generated automation code for software development and infrastructure operations |
| US20210081837A1 (en) * | 2019-09-14 | 2021-03-18 | Oracle International Corporation | Machine learning (ml) infrastructure techniques |
| US20210096892A1 (en) * | 2019-10-01 | 2021-04-01 | Red Hat, Inc. | Snapshot for compiler optimization |
| US20210374558A1 (en) * | 2020-06-02 | 2021-12-02 | International Business Machines Corporation | Intelligent application library management |
| US11288061B1 (en) * | 2020-11-23 | 2022-03-29 | Humana Inc. | Tracking software assets generated from source code using a build pipeline |
| US20220164209A1 (en) * | 2020-11-24 | 2022-05-26 | International Business Machines Corporation | Containerized computing environments |
| US20220197633A1 (en) * | 2020-12-21 | 2022-06-23 | Bitrise Inc. | Software defined build infrastructure for hybrid, virtualized and native build environments |
| US20220342673A1 (en) * | 2021-04-23 | 2022-10-27 | Nvidia Corporation | Techniques for parallel execution |
| US20220350683A1 (en) * | 2021-04-26 | 2022-11-03 | Nvidia Corporation | Techniques for combining operations |
| US20230004858A1 (en) * | 2021-06-30 | 2023-01-05 | Oracle International Corporation | Software build management using machine learning model |
| US20230145783A1 (en) * | 2021-11-08 | 2023-05-11 | Nvidia Corporation | Parallel processing for combinatorial optimization |
Family Cites Families (20)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7669199B2 (en) | 2004-04-28 | 2010-02-23 | Openlogic, Inc. | Installation of software stacks including uncoordinated projects |
| WO2007087109A2 (en) | 2005-12-21 | 2007-08-02 | Transip, Inc. | System and method for efficient replication of and access to application specific environments and data |
| US7941801B2 (en) | 2006-03-07 | 2011-05-10 | Oracle America Inc. | Method and system for provisioning a virtual computer and scheduling resources of the provisioned virtual computer |
| US7971187B2 (en) | 2006-04-24 | 2011-06-28 | Microsoft Corporation | Configurable software stack |
| US20080201705A1 (en) | 2007-02-15 | 2008-08-21 | Sun Microsystems, Inc. | Apparatus and method for generating a software dependency map |
| US20110113420A1 (en) | 2009-11-09 | 2011-05-12 | Bank Of America Corporation | Distribution Of Software Updates |
| US9372482B2 (en) | 2010-05-14 | 2016-06-21 | Harnischfeger Technologies, Inc. | Predictive analysis for remote machine monitoring |
| US8793377B2 (en) | 2011-05-03 | 2014-07-29 | International Business Machines Corporation | Identifying optimal virtual machine images in a networked computing environment |
| US9552231B2 (en) | 2012-09-27 | 2017-01-24 | Adobe Systems Incorporated | Client classification-based dynamic allocation of computing infrastructure resources |
| US9519477B2 (en) | 2013-09-16 | 2016-12-13 | International Business Machines Corporation | Automatic pre-detection of potential coding issues and recommendation for resolution actions |
| US10127146B2 (en) | 2015-04-21 | 2018-11-13 | Cloudy Days, Inc. | Systems and methods to identify and classify performance bottlenecks in cloud based applications |
| US9841952B2 (en) | 2015-12-29 | 2017-12-12 | Wipro Limited | System and method for dynamically composing an integrated open source stack |
| US9910649B2 (en) | 2016-01-19 | 2018-03-06 | International Business Machines Corporation | Integrating and sharing software build component targets |
| US10261806B2 (en) | 2017-04-28 | 2019-04-16 | International Business Machines Corporation | Adaptive hardware configuration for data analytics |
| CN107135103B (en) | 2017-05-08 | 2021-03-19 | 网宿科技股份有限公司 | Method and system for building a content distribution network platform on heterogeneous resources |
| US20200311600A1 (en) | 2019-03-29 | 2020-10-01 | Dell Products L. P. | Method and system for prediction of application behavior |
| KR102760965B1 (en) | 2019-04-09 | 2025-02-03 | 삼성전자주식회사 | An electronic device for executing different operating system and method thereof |
| US10922072B1 (en) | 2019-05-25 | 2021-02-16 | Juniper Networks, Inc | Apparatus, system, and method for seamless and reversible in-service software upgrades |
| US11288166B2 (en) | 2020-07-20 | 2022-03-29 | Red Hat, Inc. | Determining a recommended software-stack for a target software item |
| CN112130866A (en) | 2020-10-09 | 2020-12-25 | 腾讯科技(深圳)有限公司 | Application deployment method and related device |
-
2021
- 2021-08-19 US US17/406,356 patent/US11995420B2/en active Active
Patent Citations (30)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070055963A1 (en) * | 2005-09-08 | 2007-03-08 | Lucent Technologies, Inc. | Compile target and compiler flag extraction in program analysis and transformation systems |
| US20170090884A1 (en) * | 2015-09-28 | 2017-03-30 | Semmle Limited | Automatic determination of compiler configuration |
| US20170102924A1 (en) * | 2015-10-11 | 2017-04-13 | Renesas Electronics America Inc. | Software architecture for embedded systems |
| US20170293695A1 (en) * | 2016-04-12 | 2017-10-12 | Ebay Inc. | Optimizing similar item recommendations in a semi-structured environment |
| US10216512B1 (en) * | 2016-09-29 | 2019-02-26 | Amazon Technologies, Inc. | Managed multi-container builds |
| US20180157486A1 (en) * | 2016-12-07 | 2018-06-07 | Sap Se | Software version fingerprint generation and identification |
| US20200117434A1 (en) * | 2016-12-21 | 2020-04-16 | Aon Global Operations Ltd (Singapore Branch) | Methods, systems, and portal for accelerating aspects of data analytics application development and deployment |
| EP3432144A1 (en) * | 2017-07-20 | 2019-01-23 | Fujitsu Limited | A computer-implemented method and system for automatically recommending a code modification |
| CN110020121A (en) * | 2017-10-16 | 2019-07-16 | 上海交通大学 | Software crowdsourcing item recommendation method and system based on transfer learning |
| WO2019099008A1 (en) * | 2017-11-16 | 2019-05-23 | Hewlett-Packard Development Company, L.P. | Software builds using a cloud system |
| US20200387357A1 (en) * | 2017-12-05 | 2020-12-10 | Agile Stacks Inc. | Machine generated automation code for software development and infrastructure operations |
| US10671384B1 (en) * | 2017-12-07 | 2020-06-02 | Amazon Technologies, Inc. | Proactive seeding of build Artifacts |
| EP3572931A1 (en) * | 2018-05-23 | 2019-11-27 | Fujitsu Technology Solutions Intellectual Property GmbH | Installation and configuration of operating system and application software using local repositories |
| US10698668B1 (en) * | 2018-05-29 | 2020-06-30 | Amazon Technologies, Inc. | Custom code transformations during compilation process |
| US20200034135A1 (en) * | 2018-07-30 | 2020-01-30 | International Business Machines Corporation | Analyzing software change impact based on machine learning |
| US20200125996A1 (en) * | 2018-10-19 | 2020-04-23 | Red Hat, Inc. | Automated software selection using a vector-trained deep learning model |
| US20200159536A1 (en) * | 2018-11-21 | 2020-05-21 | Sri International | Unicontainers |
| US20200272459A1 (en) * | 2019-02-25 | 2020-08-27 | Red Hat, Inc. | Deploying applications in a computing environment |
| CN111242321A (en) * | 2019-04-18 | 2020-06-05 | 中科寒武纪科技股份有限公司 | Data processing method and related product |
| US20200356360A1 (en) * | 2019-05-06 | 2020-11-12 | Red Hat, Inc. | Automated software selection using matrix factorization |
| US20210081837A1 (en) * | 2019-09-14 | 2021-03-18 | Oracle International Corporation | Machine learning (ml) infrastructure techniques |
| US20210096892A1 (en) * | 2019-10-01 | 2021-04-01 | Red Hat, Inc. | Snapshot for compiler optimization |
| US20210374558A1 (en) * | 2020-06-02 | 2021-12-02 | International Business Machines Corporation | Intelligent application library management |
| US11288061B1 (en) * | 2020-11-23 | 2022-03-29 | Humana Inc. | Tracking software assets generated from source code using a build pipeline |
| US20220164209A1 (en) * | 2020-11-24 | 2022-05-26 | International Business Machines Corporation | Containerized computing environments |
| US20220197633A1 (en) * | 2020-12-21 | 2022-06-23 | Bitrise Inc. | Software defined build infrastructure for hybrid, virtualized and native build environments |
| US20220342673A1 (en) * | 2021-04-23 | 2022-10-27 | Nvidia Corporation | Techniques for parallel execution |
| US20220350683A1 (en) * | 2021-04-26 | 2022-11-03 | Nvidia Corporation | Techniques for combining operations |
| US20230004858A1 (en) * | 2021-06-30 | 2023-01-05 | Oracle International Corporation | Software build management using machine learning model |
| US20230145783A1 (en) * | 2021-11-08 | 2023-05-11 | Nvidia Corporation | Parallel processing for combinatorial optimization |
Non-Patent Citations (5)
| Title |
|---|
| Collin McMillan, Recommending Source Code for Use in Rapid Software Prototypes, 2012, pages 1-11. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6227134 (Year: 2012) * |
| Davide Pizzolotto, Identifying Compiler and Optimization Options from Binary Code using Deep Learning Approaches, 2020, pages 1-11. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9240714 (Year: 2020) * |
| Liang Wei, Recommender Systems for Software Project Managers, 6/2021, pages 412-417. https://dl.acm.org/doi/pdf/10.1145/3463274.3463951 (Year: 2021) * |
| Nina Mazyavkina, Reinforcement Learning for Combinatorial Optimization: A Survey, 2020, pages 1-24. https://arxiv.org/pdf/2003.03600.pdf (Year: 2020) * |
| Zhipeng Li, Combinatorial Keyword Recommendations for Sponsored Search with Deep Reinforcement Learning, 2019, pages 1-6. file:///C:/Users/mnguyen4/Documents/e-Red%20Folder/17406356/NPL%20Doc%20Li.pdf (Year: 2019) * |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20240045786A1 (en) * | 2022-08-04 | 2024-02-08 | Airbiquity Inc. | Build system supporting code audits, code verification, and software forensics |
| US12204434B2 (en) * | 2022-08-04 | 2025-01-21 | Karma Automotive Llc | Build system supporting code audits, code verification, and software forensics |
| CN116860262A (en) * | 2023-06-26 | 2023-10-10 | 曙光智算信息技术有限公司 | Fantasy engine deployment method and device and computer equipment |
| US20250094318A1 (en) * | 2023-09-14 | 2025-03-20 | Oracle International Corporation | Multi-architecture rapid testing framework |
Also Published As
| Publication number | Publication date |
|---|---|
| US11995420B2 (en) | 2024-05-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11995420B2 (en) | Generating a build process for building software in a target environment | |
| US10949337B1 (en) | Utilizing neural network and artificial intelligence models to select and execute test cases in a software development platform | |
| US10614375B2 (en) | Machine for development and deployment of analytical models | |
| US10387798B2 (en) | Machine for development of analytical models | |
| US8954309B2 (en) | Techniques for application tuning | |
| US10438118B2 (en) | Verification by metamorphic testing of applications that utilize artificial intelligence | |
| US11816545B2 (en) | Optimizing machine learning models | |
| US10324729B2 (en) | Machine intelligence and learning for graphic chip accessibility and execution | |
| US11748350B2 (en) | System and method for machine learning for system deployments without performance regressions | |
| US20230027810A1 (en) | Constructing pipelines for implementing a software-stack resolution process | |
| CN118103852A (en) | Training data enhancement via program simplification | |
| CN113032257A (en) | Automatic test method, device, computer system and readable storage medium | |
| US11599354B2 (en) | Detecting misconfiguration and/or bug(s) in large service(s) using correlated change analysis | |
| EP4502891A1 (en) | Dynamic project planning for software development projects | |
| US11288166B2 (en) | Determining a recommended software-stack for a target software item | |
| US20210142184A1 (en) | Systems and Methods of A Boolean Network Development Environment | |
| US20250021315A1 (en) | Training and using artificial intelligence models to predict data size | |
| US20240427635A1 (en) | Dynamic resource prediction using large code language models | |
| US20250103931A1 (en) | Strategizing distributed systems using quantum simulation | |
| US20240319966A1 (en) | Automatically modifying user code using artificial intelligence techniques | |
| Heimel et al. | Demonstrating Self-Learning Algorithm Adaptivity in a Hardware-Oblivious Database Engine. | |
| CN120066927A (en) | Application deployment method, device, electronic equipment and storage medium | |
| WO2021247831A1 (en) | Automated knowledge extraction and representation for complex engineering systems | |
| CN120216382A (en) | Data testing method, device, computer equipment, storage medium and program product |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: RED HAT, INC., NORTH CAROLINA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:POKORNY, FRIDOLIN;GOERN, CHRISTOPH;MURDACA, FRANCESCO;AND OTHERS;SIGNING DATES FROM 20210721 TO 20210818;REEL/FRAME:057228/0347 |
|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |