Release Automation
CategoryArchitecture Component
Release Automation tools enable the process of packaging and deploying an application or incremental update from development, across various intermediary environments, and ultimately to production. They help deliver software rapidly, reliably and responsibly.
Component Overview
Continuous Integration and Delivery
Release Automation tools help cultivate best practices of Development Operations (DevOps) by providing a combination of automation, environment modeling and workflow-management capabilities.
A fast-growing discipline of Release Engineering is concerned with planning and oversight of successful rollout of software and related hardware, and leans on Cloud Management technologies for provisioning of the required cloud resources. Aside from the infrastructure preparation, there is a number of aspects that contribute to a successful release: source code management, compilation, build configuration, packaging and installation, to name a few. The release process is effective only when all aspects are equipped with automation tools that achieve a key DevOps goal of implementing Continuous Delivery (CD) of frequent code drops and configuration changes.
Release Automation tools provide critical features which ensure that target software will work in production:
- Version Control — ensure that dependency components are aligned to work together in the release.
- Change Management — plan, implement and evaluate changes to a system or underlying infrastructure.
- Application Build — assemble a package of application components and related content resources.
- Environment Setup — bootstrap and configure platform environment for a release package deployment.
- Package Deployment — install a distribution package or configuration change to a target environment.
- Integration Testing — configure connectivity and test application components in relation to each other.
- Team Collaboration — enable sharing of build artifacts and release documentation within a delivery team.
- Issue Tracking — record and track the resolution of issues and inclusion of patches into a release.
The tools that support Release Engineering eliminate human errors while simultaneously speeding up the whole software development lifecycle. Making sure that such tools operate properly and are adequately documented makes it easy for delivery teams to stay focused on system features and customers, rather than spending time on creating custom release assembly, package deployment and environment preparation scripts.
Some examples of Release Automation tools are: universal build system — Maven, Gradle and CMake; frontend task runner — Grunt, Gulp and Webpack; continuous integration server — Jenkins, GitLab CI/CD and Go CD; version control system — Git and Apache Subversion; issue tracking system — Jira Software and Bugzilla.
release
Release Automation tools allow delivery teams operate their own business processes, and be self-sufficient.
Development is accountable for responding to changes on the market, and deploying new system features and defect fixes into production as quickly as possible.
Operations is expected to ensure that customers are receiving reliable, stable, safe and convenient service without any interruption.
Automating the process of issuing frequent software releases using DevOps philosophy is essential to striking the right balance between continuous market changes and reliable service delivery to customers.