Unified virtualized and containerized CI/CD chain
Examples of the present technology provide automated Continuous Integration/Continuous Deployment (CI/CD) systems that unify the CI/CD methodology for virtualized and containerized software environments. To realize this unification, CI/CD systems of the present technology are intelligently designed to leverage a common set of inputs (i.e., artifacts and deployment descriptors) that can facilitate automatic deployment of the software system in either a virtualized environment, a containerized environment, or both. Accordingly, CI/CD systems of the present technology provide a flexible software development tool that facilitates efficient, and automated deployment of software systems in both virtualized and containerized environments.
1 . A method, comprising:
receiving a deployment descriptor describing an inventory of components to be instantiated and deployed in a software system, relationships between the components within the software system, and configuration parameters for the components;
receiving artifacts describing the components being instantiated as instantiated components;
in response to determining to deploy the software system in a virtualized environment, using the deployment descriptor and the artifacts to deploy the software system in the virtualized environment; and
in response to determining to deploy the software system in a containerized environment, deploying the software system in the containerized environment by:
using the deployment descriptor and the artifacts to compute a containerization workflow for building a container image for the software system, wherein the containerization workflow comprises a set of instructions for instantiating the components and deploying the instantiated components,
providing the containerization workflow to a container image automation service, wherein the container image automation service builds the container image for the software system from the containerization workflow, and
deploying the software system in the containerized environment using the built container image.
2 . The method of claim 1 , further comprising:
building and packaging the components being instantiated as the instantiated components.
3 . The method of claim 1 , wherein deploying the software system in the virtualized environment comprises:
using the deployment descriptor and the artifacts to determine virtual computing resources for deploying the software system in the virtualized environment; and
in response to allocation of the determined virtual computing resources, computing and executing a virtualization workflow for deploying the software system in the virtualized environment using the allocated virtual computing resources.
4 . The method of claim 3 , further comprising:
requesting the determined virtual computing resources from a virtual computing resource manager.
5 . The method of claim 1 , wherein deploying the software system in the containerized environment further comprises:
using the deployment descriptor and the artifacts to determine containerization configuration parameters for building the container images for the software system; and
providing the determined containerization configuration parameters to the container image automation service, wherein the container image automation service builds the container images for the software system based on the containerization workflows and the determined containerization configuration parameters.
6 . The method of claim 1 , wherein:
the container image automation service publishes the built container images to a container image repository; and
the containerized environment pulls the built container images from the container image repository to run the software system in the containerized environment.
7 . The method of claim 1 , wherein the deployment descriptor comprises at least one of:
a settings file that defines the configuration parameters for each component; and
a layout file that defines instantiation of components and describes how the components connect to each other.
8 . A Continuous Integration/Continuous Deployment (CI/CD) system, comprising:
a memory comprising computer code; and
one or more processors operatively connected to the memory and configured to execute the computer code to:
receive a deployment descriptor describing an inventory of components to be deployed in a software system, relationships between the components within the software system, and configuration parameters for the components;
receive artifacts describing the components being instantiated as instantiated components;
in response to determining to deploy the software system in a virtualized environment, use the deployment descriptor and the artifacts to deploy the software system in the virtualized environment; and
in response to determining to deploy the software system in a containerized environment, deploying the software system in the containerized environment by:
using the deployment descriptor and the artifacts to compute containerization workflows for building container images for the software system, wherein the containerization workflows comprise a set of instructions for instantiating the components and deploying the instantiated components,
building container images for the software system from the containerization workflows, and
deploying the software system in the containerized environment using the built container images.
9 . The CI/CD system of claim 8 , further comprising computer code that causes the system to:
build and package the components being instantiated as the instantiated components.
10 . The CI/CD system of claim 8 , further comprising computer code that causes the system to:
publish the built container images to a container repository, wherein the containerized environment pulls the built container images from the container repository to run the software system in the containerized environment.
11 . The CI/CD system of claim 10 , wherein a container image automation service of the CI/CD system builds the container images and publishes the built container images to the container repository.
12 . The CI/CD system of claim 8 , wherein deploying the software system in the virtualized environment comprises:
using the deployment descriptor and the artifacts to determine virtual computing resources for deploying the software system in the virtualized environment; and
in response to allocation of the determined virtual computing resources, computing and executing a virtualization workflow for deploying the software system in the virtualized environment using the allocated virtual computing resources.
13 . The CI/CD system of claim 12 , wherein the deployment descriptor comprises at least one of:
a settings file that defines the configuration parameters for each instantiated component; and
a layout file that defines instantiation of the components and describes how the components connect to each other.
14 . The CI/CD system of claim 8 , wherein deploying the software system in the containerized environment further comprises:
using the deployment descriptor and the artifacts to determine containerization configuration parameters for building the container images for the software system; and
building the container images for the software system based on the containerization workflows and the determined containerization configuration parameters.
15 . A non-transitory computer-readable storage medium including instructions that, when executed by at least one processor of a computing system, cause the computing system to:
receive a deployment descriptor describing an inventory of components to be deployed in a software system, relationships between the components within the software system, and configuration parameters for the components;
determining to deploy the software system in one of a containerized environment or in a virtualized environment;
in response to determining to deploy the software system in the containerized environment, using the deployment descriptor to deploy the software system in the containerized environment by computing a containerization workflow for building a container image for the software system based on the deployment descriptor; and
in response to determining to deploy the software system in the virtualized environment, deploying the software system in the virtualized environment by:
using the deployment descriptor to determine virtual computing resources for deploying the software system in the virtualized environment; and
in response to allocation of the determined virtual computing resources, computing and executing a virtualization workflow for deploying the software system in the virtualized environment using the allocated virtual computing resources.
16 . The non-transitory computer-readable storage medium of claim 15 , wherein deploying the software system in the containerized environment comprises:
using the deployment descriptor to compute a containerization workflow for building a container image for the software system, wherein the containerization workflow comprises a set of instructions for instantiating the components and deploying the instantiated components;
providing the containerization workflow to a container image automation service, wherein the container image automation service builds the container image for the software system from the containerization workflow; and
deploying the software system in the containerized environment using the built container image.
17 . The non-transitory computer-readable storage medium of claim 16 , wherein the deployment descriptor comprises at least one of:
a settings file that defines the configuration parameters for each instantiated component; and
a layout file that defines instantiation of the components and describes how the components connect to each other.
18 . The non-transitory computer-readable storage medium of claim 15 , wherein the instructions further cause the computing system to:
receive artifacts describing the components being instantiated as the instantiated components;
in response to determining to deploy the software system in the containerized environment, use the artifacts and the deployment descriptor to deploy the software system in the containerized environment; and
in response to determining to deploy the software system in the virtualized environment, deploying the software system in the virtualized environment by:
using the artifacts and the deployment descriptor to determine the virtual computing resources for deploying the software system in the virtualized environment.
19 . The non-transitory computer-readable storage medium of claim 16 , wherein:
the container image automation service publishes the built container image to a container repository; and
the containerized environment pulls the built container image from the container repository to run the software system in the containerized environment.
20 . The non-transitory computer-readable storage medium of claim 15 , wherein the instructions further cause the system to:
build and package the components being instantiated as the instantiated components.