Automation pipelines
Predefined CI/CD pipeline templates for automating build, test, and deployment processes in EIT services.
Overview
To streamline the automation of build, test, deployment, and other processes for EIT services and packages, a set of predefined pipelines and reusable steps is available.
These templates allow developers to:
- Centralize pipeline management, enabling easier updates and maintenance.
- Introduce new features or fix issues efficiently across all services.
- Ensure consistency across all projects by following best practices.
Repository and implementation details
All pipeline templates are stored in the following repository:
Naming conventions
To maintain clarity and organization, YAML files follow a consistent naming pattern:
{task-name}-{version}.{jobs|stages|steps}.yml
examples:
/deploy/deploy-configs-v3.jobs.yml
/docker/build-image-v4.jobs.yml
/dotnet/build-unit-tests.net8.jobs.yml
/git/tag-commit.jobs.yml
/pipeline/service-pipeline-v1.stages.yml
This naming convention helps in quickly identifying the purpose, version, and scope of each pipeline template.
Versioning
Versioning is managed directly within the filenames, ensuring compatibility across different projects. Since pipelines are referenced by specific commits (branch, tag) during execution, this approach guarantees stability and backward compatibility. Files can reference other files (e.g., a pipeline template references specific pipeline jobs or steps).
Versioning Strategy:
- A new version is typically created whenever:
- A breaking change is introduced.
- New required functionality is added.
- Enhancements or optimizations are implemented.
examples:
/docker/build-image-v3.jobs.yml
/docker/build-image-v4.jobs.yml
Usage
Integrating pipeline templates into a service is straightforward. Below is an example of how the svc-blog-posts
service utilizes the predefined pipeline templates.
Example Service Pipeline Usage
Example Pipeline Stages Usage:
The following link showcases the service pipeline stage definition:
Benefits of Using Automation Pipelines
- Consistency:
Ensures uniform CI/CD processes across all projects. - Efficiency:
Reduces effort by reusing existing, tested pipeline templates. - Scalability:
Easily extendable to accommodate new requirements or services. - Centralized Management:
Enables quick updates and improvements across all pipelines. - Version Control:
Guarantees compatibility and stability for deployed pipelines.
Summary
EIT's automation pipelines provide a robust and standardized approach to CI/CD processes, simplifying service management and enhancing productivity. By leveraging these templates, teams can focus more on application logic while ensuring a reliable and efficient deployment pipeline.