Infrastructure Code Continuous Delivery Concepts: Difference between revisions
Line 30: | Line 30: | ||
====<span id='Artifact'></span>Infrastructure Artifacts==== | ====<span id='Artifact'></span>Infrastructure Artifacts==== | ||
Infrastructure code can be assembled into an artifact, which is a package file with a specific format (Python package, RPM, etc.) Not many infrastructure tools have a package format for their code projects. A generic format as ZIP or TAR.GZ could be used, or even Docker images that include stack project code along with the stack tool executable. | Infrastructure code can be assembled into an artifact, which is a package file with a specific format (Python package, RPM, etc.) Not many infrastructure tools have a package format for their code projects. A generic format as ZIP or TAR.GZ could be used, or even Docker images that include stack project code along with the stack tool executable. | ||
====Using a Repository to Deliver Infrastructure Code==== | |||
As an alternative to publishing packaged artifacts, the infrastructure code can be exposed to the next stage of the delivery pipeline directly from the source repository. The code could be stage in a separated delivery source repository. | |||
===Promote=== | ===Promote=== |
Revision as of 01:01, 23 January 2022
External
Internal
Overview
The delivery pipeline metaphor describes how a change in the infrastructure code progresses from the person that makes the change all the way to production.
Reconcile with Continuous Delivery. TO CONTINUE: IaC Chapter 8 Core Practice: Continuously Test and Deliver → Infrastructure Delivery Pipelines.
TO INTEGRATE:
Infrastructure Delivery Pipeline
A infrastructure delivery pipeline consists in multiple types of activities, grouped in stages:
Activities
Build
The build stage compiles application code and makes the code available for use for other stages. Building is usually done once in a pipeline, every time the source code changes. Building implies the following steps:
- Retrieving build-time dependencies, such as libraries, including those from other projects in the code base and external libraries.
- Resolving build-time configuration (pulling in configuration files that are shared across multiple projects)
- Compiling or transforming the code, such as generating configuration files from templates.
- Publish infrastructure artifacts in a delivery repository.
Offline and Mock Tests as part of the Build Step
Offline stack tests and tests with mock API and doubles do not require provisioning infrastructure so they can be run at build stage.
Infrastructure Artifacts
Infrastructure code can be assembled into an artifact, which is a package file with a specific format (Python package, RPM, etc.) Not many infrastructure tools have a package format for their code projects. A generic format as ZIP or TAR.GZ could be used, or even Docker images that include stack project code along with the stack tool executable.
Using a Repository to Deliver Infrastructure Code
As an alternative to publishing packaged artifacts, the infrastructure code can be exposed to the next stage of the delivery pipeline directly from the source repository. The code could be stage in a separated delivery source repository.
Promote
Promotion means moving code between delivery stages.
Apply
Infrastructure code tools are executed and infrastructure resources are created based on the code. The infrastructure resources are created in different environments, corresponding to the pipeline stage the activity belongs to: stage testing, integration, production.
Validate
Stages
Online Stack Testing Stage
System Integration Testing Stage
Production Stage
Organizatorium
- Modeling Deployment Pipelines: Build Propagation using Fan-in/Fan-out https://www.gocd.org/2017/04/17/build-propagation-using-fan-in-fan-out.html