Containerized Build Steps for Lean Output Containers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Generic container builders produce heavyweight output containers that include unnecessary components like compilers, leading to security vulnerabilities and increased size, limiting developers' flexibility in using proprietary tools for building and deploying software applications.

Innovation Solution

A method and system for building output containers using private and public containers, where build step instructions specify the usage of containers, allowing for the exclusion of proprietary software development kits and enabling parallel execution of build steps to create a lean runtime-only container, while ensuring user authorization and secure execution.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If generic builders are used to build output containers, then the build process is simple and accessible, but the output containers become heavyweight and contain unnecessary components

Engineering Contradiction:
Improvebuild process accessibilityVSAvoidcontainer size
Core Design Contradiction:
Ease of manufactureVSQuantity of substance

Solution Approach 1:

The build process is segmented into multiple build steps, each executed in separate containers. Build-time tools (compilers, SDKs) are isolated in build containers and not included in the final output container, separating the building process from the deployment artifact.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Necessary build-time components (compilers, SDKs, build tools) are extracted from the output container and placed in separate build containers. The output container receives only the compiled artifacts and runtime dependencies, excluding unnecessary build tools.

Inventive Principle:
Principle #2Taking out (Extraction)

2Adaptability or versatility

If build-time tools are included in output containers, then the containers are self-contained and can be built anywhere, but security vulnerabilities and attack vectors increase

Engineering Contradiction:
Improvebuild flexibilityVSAvoidsecurity vulnerabilities
Core Design Contradiction:
Adaptability or versatilityVSObject-affected harmful factors

Solution Approach 1:

The system segments build-time tools and runtime environment into separate containers. Build containers provide the necessary tools for compilation, while the output container contains only runtime components, reducing the attack surface while maintaining build flexibility through the use of private build containers.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Private build containers act as intermediaries that provide build-time tools temporarily during the build process. These containers are ephemeral and not included in the final output, allowing flexible building with proprietary tools while eliminating security risks from deploying build tools in production.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Adaptability or versatility

If proprietary build tools are used, then developers can leverage specialized capabilities, but generic builders cannot be used directly

Engineering Contradiction:
Improveproprietary tool capabilitiesVSAvoidbuild process simplicity
Core Design Contradiction:
Adaptability or versatilityVSEase of manufacture

Solution Approach 1:

The build system uses universal containerization to execute proprietary build tools. By containerizing the build environment, the system can run any proprietary tool (Visual Studio, Xcode, custom compilers) within isolated build containers, maintaining ease of use through standardized container interfaces while supporting specialized build capabilities.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

Private build containers serve as intermediaries that encapsulate proprietary build tools. The containerization layer provides a universal interface for building, allowing developers to use specialized tools without complicating the overall build process, as the container management handles the complexity of tool integration.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Adaptability or versatility

If local building is performed to use proprietary tools, then build flexibility is maintained, but scalability and remote building capabilities are limited

Engineering Contradiction:
Improvebuild tool selectionVSAvoidscaling capability
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The system provides universal remote building capabilities through cloud-based container execution. Developers can specify proprietary tools in build step instructions, and the system executes these instructions in remote build containers, maintaining tool selection flexibility while enabling scalable remote building and CI/CD integration.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The build system allows developers to define their own build step instructions that specify proprietary tools and private containers. The system automatically manages the execution environment, authentication, and container orchestration, enabling developers to leverage specialized tools at scale without manual local setup.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS20240411916A1Containerized Build Steps
Publication Date: 2024.12.12 GOOGLE LLC
  • US20240411916A1 patent drawing
  • US20240411916A1 patent drawing
  • US20240411916A1 patent drawing

AI summary

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