Proactive Build Artifact Seeding via Dependency Graph
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Software build processes are delayed due to the client-driven nature of existing approaches, which require repeated round trips between the client and the repository to download build artifacts as needed during the build process.
Innovation Solution
Implementing proactive seeding of build artifacts by a repository manager that constructs a dependency graph to predictively send necessary artifacts to the client ahead of time, using HTTP/2 server push and network monitoring to cache them, allowing the client to perform other tasks concurrently.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of time
If build artifacts are downloaded on-demand during the build process, then the client can request only needed artifacts, but the build process experiences delays due to repeated round trips between client and repository
Solution Approach 1:
The repository manager proactively identifies and sends build artifacts to the client before they are actually needed during the build process. By constructing a dependency graph and predicting which artifacts will be required, the system performs the download action in advance, eliminating wait time during the build execution and improving overall productivity
Solution Approach 2:
The system monitors network usage in the build environment to identify informal nodes in the dependency graph, using this feedback to refine predictions about which artifacts will be needed. This feedback mechanism allows the repository manager to optimize artifact delivery timing and reduce unnecessary transfers, balancing proactive delivery with actual build requirements
2Productivity
If the repository manager proactively sends build artifacts ahead of time, then the build process is expedited, but network bandwidth is consumed for artifacts that may not be needed
Solution Approach 1:
The system sends only a subset of potentially useful artifacts proactively, rather than all available artifacts. By using the dependency graph to identify and send only the most likely needed artifacts, the system applies partial action - delivering enough artifacts ahead of time to speed up the build process without wasting network bandwidth on unnecessary transfers
3Loss of energy
If the client waits for build artifacts during the build process, then network resources are preserved, but developer time and computing resources are wasted due to delays
Solution Approach 1:
The repository manager performs artifact delivery in advance during idle periods or before build initiation, so that when the build process starts, artifacts are already available locally. This preliminary action shifts network resource consumption to a different time window, eliminating delays in developer workflow and computing resource idle time
Solution Approach 2:
The system enables continuous build processes by ensuring artifacts are available when needed, eliminating interruptions and wait states. The proactive delivery mechanism maintains continuous useful action in the build pipeline, preventing idle time for developers and computing resources while optimizing network usage patterns
Data Source
AI summary
Methods, systems, and computer-readable media for proactive seeding of build artifacts are disclosed. A dependency graph is determined that represents dependency relationships among a plurality of build artifacts. Using the dependency graph, a repository manager determines a first set of one or more build artifacts. The first set of build artifacts are stored in one or more repositories. The first set of build artifacts are sent from a repository manager to a client over a network. The first set of build artifacts are used by the client in generating a software build.


