Decoupled Controller and VM Image for CI Testing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Continuous integration management systems face challenges in managing and providing varied build and test environments due to the size, inflexibility, and customizability of virtual machine images, which are often bulky and limited in number, failing to offer the specific hardware and software combinations required for test environments.
Innovation Solution
Decoupling controllers from VM images allows developers to select VM images on demand, simplifying image management by storing controller programs/modules separately and retrieving VM images from external sources, enabling the launch of separate containers for controller and build environments, thereby increasing flexibility and security.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If VM images are used to provide test environments, then the system can offer standardized build and test environments, but the images become bulky and limited in number, reducing flexibility and variety
Solution Approach 1:
The patent segments the VM image into two separate components: the base image containing only essential system files and dependencies, and the controller program that provides the test environment functionality. This segmentation allows the base image to remain small and standardized, while the controller program can be dynamically selected to provide variety in test environments.
Solution Approach 2:
The base image is designed to be universal and multi-functional, serving as a common foundation for all test environments. Different controller programs are then applied to this universal base to create specialized test environments, allowing one image to serve multiple purposes while maintaining flexibility.
2Adaptability or versatility
If multiple VM images are maintained to provide varied test environments, then more test environment options are available, but image management becomes more complex and difficult
Solution Approach 1:
The patent extracts the environment-specific functionality from the VM image itself and places it in separate controller programs. This extraction simplifies image management by reducing the image to a minimal base that doesn't require complex versioning or maintenance, while the varied functionality is managed through selectable controller programs.
Solution Approach 2:
Instead of maintaining multiple complete VM images, the system creates lightweight copies or instances of the base image, each paired with a different controller program. This copying approach allows rapid provisioning of varied test environments without the overhead of managing multiple full image files.
3Adaptability or versatility
If VM images are customized to provide specific hardware and software combinations, then test environment specificity is improved, but the images become larger and less flexible
Solution Approach 1:
The patent segments the customized test environment into a minimal base image and a separate controller program that contains the specific hardware and software configurations. This segmentation allows the image size to remain small while the controller program provides the necessary specificity for different test environments.
Solution Approach 2:
The system changes the parameter of image size by separating essential system files from environment-specific configurations. The base image maintains a small, optimized size, while customization parameters are managed through the controller program, allowing specificity without size increase.
Data Source
AI summary
Methods and systems for testing source code are disclosed. The method includes mounting a shared memory and launching a controller container. The controller container is configured to retrieve a repository identifier of a repository on which the source code is stored, and a build descriptor including build steps and an indicator of a build VM image for generating the build. The method further includes storing the build steps in the shared memory, retrieving the source code from the repository based on the repository identifier, and storing the retrieved source code in the shared memory. The method also includes launching a build container based on the indicator of the build VM image, the build container configured to retrieve the build steps and the source code from the shared memory and perform the build on the source code based on the steps defined in the build steps.


