# US 10,120,670 B1 · Systems and methods for building generic CI/CD pipelines

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,120,670 B1
- Document ID: US10120670B1
- Status: Granted
- Kind: B1
- Application number: 15/938,833
- Filed: 2018-03-28
- Granted: 2018-11-06
- Earliest claimed: 2018-03-28
- Assignees: Capital One Services, LLC
- Applicants: Capital One Services, LLC
- Inventors: Brandon Atkinson; Christopher Bowers; Dallas Edwards
- Web page: https://patentgrep.com/patent/US10120670B1

## CPC

- G06F 8/60: Software deployment
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F 9/455: Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F 9/45512: {Command shells}
- G06F 9/544: {Buffers; Shared memory; Pipes}
- G06F 11/3688: {for test execution, e.g. scheduling of test suites}
- G06F 11/3698: Environments for analysis, debugging or testing of software
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

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.

## Claims

### Claim 1

A method of deploying an application, the method comprising:
creating, by a processor, a virtual container including at least one program that is generically executable in a plurality of different continuous integration and delivery (CI/CD) environments, the creating comprising:
incorporating at least one stage script into the at least one program, the at least one stage script defining a flow for the at least one program, and
incorporating at least one utility library into the at least one program, the at least one utility library including instructions for at least one generic application task, wherein the at least one stage script ingests at least a portion of the at least one utility library during at least one step in the flow of the at least one program and ingests additional code outside the at least one utility library during at least one step in the flow of the at least one program;
creating, by the processor, a separate pipeline definition from a generic pipeline definition for each of the plurality of different CI/CD environments, each pipeline definition indicating the CI/CD environment for which it is created and being configured to operate only in the CI/CD environment for which it is created, and each pipeline definition being configured to cause the CI/CD environment for which it is created to execute the at least one program; and
deploying, by the processor, at least one of the pipeline definitions along with the virtual container in the CI/CD environment for which the at least one of the pipeline definitions is created, thereby enabling execution of the at least one program within the CI/CD environment for which the at least one of the pipeline definitions is created, wherein transitioning a pipeline from the CI/CD environment for which the at least one of the pipeline definitions is created to another CI/CD environment includes customizing only a generic build script for the other CI/CD environment.

### Claim 2 (depends on 1)

The method of claim 1, further comprising creating, by the processor, the at least one utility library.

### Claim 3 (depends on 1)

The method of claim 1, further comprising creating, by the processor, the at least one stage script.

### Claim 4 (depends on 1)

The method of claim 1, wherein the creating of each separate pipeline definition comprises creating a build script for the CI/CD environment for which the separate pipeline definition is created, the build script being configured to cause the CI/CD environment to cause the at least one program to execute within the virtual container.

### Claim 5 (depends on 1)

The method of claim 1, wherein:
at least one of the plurality of different CI/CD environments comprises a local development environment; and
the deploying comprises testing the at least one program in the local development environment prior to deploying the at least one program in at least one of the plurality of different CI/CD environments separate from the local development environment.

### Claim 6

A non-transitory computer-readable medium comprising instructions that, when executed by a processor, cause the processor to deploy at least one application, the instructions comprising:
application instructions 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, the at least one program including:
at least one stage script defining a flow for the at least one program; and
at least one utility library, the at least one utility library including instructions for at least one generic application task, wherein the at least one stage script ingests at least a portion of the at least one utility library during at least one step in the flow of the at least one program and ingests additional code outside the at least one utility library during at least one step in the flow of the at least one program; and
a plurality of separate pipeline definition instructions from a generic pipeline definition for each of the plurality of different CI/CD environments, each pipeline definition indicating the CI/CD environment for which it is created and being configured to operate only in the CI/CD environment for which it is created, and each pipeline definition being configured to cause the CI/CD environment for which it is created to execute the at least one program, wherein transitioning a pipeline from the CI/CD environment for which the at least one of the pipeline definitions is created to another CI/CD environment includes customizing only a generic build script for the other CI/CD environment.

### Claim 7 (depends on 6)

The non-transitory computer-readable medium of claim 6, wherein each separate pipeline definition comprises a build script for the CI/CD environment for which the separate pipeline definition is configured, the build script being configured to cause the CI/CD environment to cause the at least one program to execute within the virtual container.

### Claim 8 (depends on 6)

The non-transitory computer-readable medium of claim 6, wherein:
at least one of the plurality of different CI/CD environments comprises a local development environment; and
the instructions further comprise instructions for testing the at least one program in the local development environment prior to deploying the at least one program in at least one of the plurality of different CI/CD environments separate from the local development environment.

### Claim 9

An application development device comprising:
a processor; and
a non-transitory memory in communication with the processor, the memory comprising instructions that, when executed by the processor, cause the processor to perform processing comprising:
creating a virtual container including at least one program that is generically executable in a plurality of different continuous integration and delivery (CI/CD) environments, the at least one program including:
at least one stage script defining a flow for the at least one program; and
at least one utility library, the at least one utility library including instructions for at least one generic application task, wherein the at least one stage script ingests at least a portion of the at least one utility library during at least one step in the flow of the at least one program and ingests additional code outside the at least one utility library during at least one step in the flow of the at least one program;
creating a separate pipeline definition from a generic pipeline definition for each of the plurality of different CI/CD environments, each pipeline definition indicating the CI/CD environment for which it is created and being configured to operate only in the CI/CD environment for which it is created, and each pipeline definition being configured to cause the CI/CD environment for which it is created to execute the at least one program, wherein at least one of the plurality of different CI/CD environments comprises a local development environment, and wherein transitioning a pipeline from the CI/CD environment for which the at least one of the pipeline definitions is created to another CI/CD environment includes customizing only a generic build script for the other CI/CD environment; and
operating the local development environment, the operating comprising testing the at least one program in the local development environment prior to deploying the at least one program in at least one of the plurality of different CI/CD environments separate from the local development environment.

### Claim 10 (depends on 9)

The device of claim 9, wherein the instructions further cause the processor to perform processing comprising deploying at least one of the pipeline definitions along with the virtual container in the CI/CD environment for which the at least one of the pipeline definitions is created, thereby enabling execution of the at least one program within the CI/CD environment for which the at least one of the pipeline definitions is created.

### Claim 11 (depends on 9)

The device of claim 9, wherein the local development environment is configured to enable creation of the at least one utility library for the at least one program.

### Claim 12 (depends on 9)

The device of claim 9, wherein the local development environment is configured to enable creation of the at least one stage script for the at least one program.

### Claim 13 (depends on 9)

The device of claim 9, wherein each separate pipeline definition comprises a build script for the CI/CD environment for which the separate pipeline definition is created, the build script being configured to cause the CI/CD environment to cause the at least one program to execute within the virtual container.
