DebOps project is developed in a git repository, with the
branch as the main development branch. The project's repository is hosted on
GitHub, with a mirror on GitLab used for testing the Ansible roles via
a GitLab CI pipeline.
Use of the
master branch for production environments is encouraged, since
this gives access to role bugfixes and new functionalities. However, due to
a rapid pace of development, it might not be ideal where more conservative
approach is needed. In that case, DebOps project offers stable releases using
stable-x.y git branches, as well as tagged releases.
The project uses Semantic Versioning for tags and stable releases. The definition of the major, minor and patch version numbers used in DebOps versions is:
- Major releases are considered "epochs", they happen when a significant portion of the project has changed sufficiently that a rebuild of the entire environments might be needed. The major release can also happen periodically, when sufficient number of minor releases was created.
- Minor releases are done periodically, usually every 6 months or so. Minor releases might include changes in the existing Ansible roles that require manual modification of the environments managed by DebOps, which are described in the Upgrade notes for each release.
- Patch releases are performed when there are commits in a given
stable-x.ybranch and no new changes have been done for some time, usually a week. The commits in
stable-x.ybranches are cherry-picked from the
masterbranch and include bugfixes to existing code as long as the code is compatible, updates to external services (for example new Debian or Ubuntu release, updated GPG key ids, and the like). The changes in the patch release do not require changes in the environments managed by DebOps.
Stable releases are supported as long as the code from the
master branch is
compatible. Old stable releases are usually retired after a year and don't
receive new updates. This should ensure at least two stable DebOps releases
that are supported at any given time; this number might change depending on the
amount of work required to maintain the support.
Any bugfixes in stable DebOps releases need to be applied through the
master branch, as long as the code is compatible. If the code is no longer
compatible, bufixes might be applied directly to the
stable-x.y branch as
long as it is currently supported.