Generic CI/CD Pipeline Portability via Docker Containers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Software developers face the challenge of rewriting CI/CD pipeline code and ensuring dependencies when switching from one CI/CD tool to another, as existing tools are specific and proprietary, requiring different sets of software for each platform.

Innovation Solution

The development of generic pipelines that can be placed in containers, allowing them to be portable across different CI/CD tools, using generic scripts that can operate on various applications, and delivering containers with specific build scripts to each environment for execution.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a developer uses a specific CI/CD tool (Jenkins, Circle CI, TeamCity), then the pipeline can be executed on that platform, but the pipeline code must be rewritten when switching to a different CI/CD tool

Engineering Contradiction:
Improvepipeline portabilityVSAvoidpipeline code complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent creates a universal pipeline execution environment using Docker containers that can run the same pipeline code across multiple CI/CD platforms (Jenkins, Circle CI, TeamCity, GitLab CI). The containerized approach allows a single pipeline definition to be executed on different platforms without rewriting, as the container encapsulates all necessary dependencies and execution logic, making the pipeline universally compatible across diverse CI/CD tools.

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

Solution Approach 2:

The patent introduces Docker containers as an intermediary layer between the pipeline code and the CI/CD platform. This intermediary encapsulates the pipeline execution environment, including all required software, dependencies, and configuration, allowing the pipeline to interact with different CI/CD platforms through a standardized interface rather than requiring platform-specific code modifications.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If a CI/CD tool uses proprietary code and platform-specific software, then the tool can perform its functions, but switching to a new CI/CD tool requires rewriting pipeline code and ensuring all dependencies are met

Engineering Contradiction:
Improvetool switching capabilityVSAvoidpipeline setup time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent performs preliminary action by pre-configuring all necessary software, dependencies, and execution environments within Docker containers before the pipeline execution. The container images are built in advance with all required tools, compilers, and libraries pre-installed, so when the pipeline is deployed to a new CI/CD platform, the environment is already prepared and ready to execute the pipeline code immediately without requiring time-consuming setup or dependency installation.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent uses Docker container copying technology to replicate the exact pipeline execution environment across different CI/CD platforms. The container image, which contains the complete execution environment, can be copied and executed on any platform that supports Docker, ensuring consistent behavior and eliminating the need to manually recreate the environment or rewrite platform-specific code.

Inventive Principle:
Principle #26Copying

3Reliability

If each pipeline has its own set of software including CI/CD platform instances, build automation software, compilers, and deployment tools, then the pipeline can execute properly, but migrating to a different CI/CD platform requires deploying a new set of software

Engineering Contradiction:
Improvepipeline execution reliabilityVSAvoidsoftware deployment complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent merges all necessary software components (CI/CD platform instances, build automation software, compilers, code analysis tools, deployment tools, web browsers) into a single Docker container image. This consolidation allows the entire pipeline execution environment to be packaged as one portable unit that can be deployed to any CI/CD platform supporting Docker, eliminating the need to separately manage and deploy multiple software components when migrating between platforms.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent changes the deployment parameter from platform-specific binary software to standardized Docker container images. By converting the pipeline environment into a containerized format, the system can leverage Docker's standardized interface and packaging mechanism, allowing the same container image to be deployed across different CI/CD platforms without modification, thus simplifying the deployment process while maintaining execution reliability.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS10275231B1Systems and methods for building generic CI/CD pipelines
Publication Date: 2019.04.30 CAPITAL ONE SERVICES LLC
  • US10275231B1 patent drawing
  • US10275231B1 patent drawing
  • US10275231B1 patent drawing

AI summary

At least one application may include instructions comprising application instructions and a plurality of separate pipeline definition instructions. The application instructions may be within a virtual container including at least one program that is generically executable in a plurality of different continuous integration and delivery (CI/CD) environments. Each of the plurality of separate pipeline definition instructions may be configured for each of the plurality of different CI/CD environments such that each pipeline definition may operate only in the CI/CD environment for which it is created. Each pipeline definition may be configured to cause the CI/CD environment for which it is created to execute the at least one program.