ERA (Easy Release Automation)
Imagine reducing the time and complexity of managing multiple software releases to a single click.
That's exactly what the ERA tool does - it streamlines the tagging of multiple interdependent
repositories by integrating ERA into your CI pipeline or your local development environment.
This robust automation not only saves us over four hours per release but also simplifies our
release process, crucial for software project with frequent monthly updates.
ERA is an open source Python tool crafted to enhance efficiency and convenience in handling multiple
repository tags.
Table of Contents
Requirements
- Windows Subsystem for Linux (WSL2)
- Ubuntu Version 20.04 LTS or higher
- Python Version 3.9 or higher
Quick Start Guide
Explore the ERA Getting Started For End Users.
This hands-on tutorial will guide you through releasing ERA and then applying it to your own Git
project, all within approximately one hour.
What is ERA?
- ERA provides a
easy-release-automation
CLI entry point to release multiple repositories in your project. - ERA configures the release process for modification, validation and tagging according to a lightweight
release-config.yml
(see Release-Config Example). - During the release process:
- ERA offers repository validation steps before a repository is tagged.
- ERA offers repository modification steps before and after a repository is tagged.
- ERA tags the repositories.
- ERA pushes the updated and tagged branches to the remote repository.
- ERA offers an existing set of versatile modification and validation plugins.
- ERA offers customization by enabling you to create your own modification and validation plugins to meet specific requirements.
ERA automatically generates the following three commit messages for each repository during the release process:
Main branch (Merge Commit from stable into main)
│
├─ chore: :wastebasket: ERA: Preparation for merging back into main with the plugin(s): changelog_unreleased_setter
Stable branch (Commit for Tag 0.1.0)
│
├─ chore: :bookmark: ERA: Release-Commit for Version: 0.1.0
Stable branch (Commit for modification based on defined plugins in release-config.yml)
│
├─ chore: :white_check_mark: ERA: Modification with the plugin(s): changelog_version_updater, yaml_updater
│ and Validation with the plugin(s): validate_changelog
What is ERA not?
ERA is not responsible for the following tasks:
- Building and deploying a package from the source code.
- Integrating manual testing during the release process.
- Testing created packages on end-devices or in cloud environment.
ERA Release With Continuous Integration
ERA is a practical tool that can be integrated into a Continuous Integration (CI) environment,
such as GitHub, GitLab, or Azure pipelines.
The following diagram illustrates a possible flow for integrating ERA into a CI pipeline within
the Release With ERA
step to ensure smooth and consistent tagging:
graph LR
DevTeam(Dev Team) --> CodeRepo[Code Repository]
CodeRepo --> CI_CD_Pipeline[CI/CD Pipeline]
CI_CD_Pipeline --> BuildTests[Linting & Building & Testing]
BuildTests --> Release[Release With ERA]
Release --> Deployment[Deployment]
style Release fill:#00ACA9
Diagram 1: ERA CI for Release Automation
Getting Started
Additional Documentation
FAQ
What Should I Know Before Using ERA?
- Basics of using Git
- Basics of GitFlow
Does ERA Natively Run On Windows?
ERA is primarily developed and used on Linux developer machines (see scripts/setup-era.sh
) or in CI environment with Linux agents.
ERA operates in the following environments:
- ERA is supported on Ubuntu 20.04 or higher and on WSL2.
- ERA was tested on Ubuntu 20.04 and on WSL2 on Windows machines.
- ERA is not tested on native Windows machines.