Release guidelines¶
Release rules for the platform, Easy plugins and RYSes. Branch roles are in Branch naming conventions.
Versioning¶
All releases use semantic versioning.
- MAJOR: whole new features, refactoring, breaking changes.
- MINOR: small new features, migrations, minor changes of internal logic.
- PATCH: bug fixes and harmless changes (documentation, readme). A patch release cannot include migrations or breaking changes.
Platform and plugin releases¶
Releases of the platform and Easy plugins are triggered manually through Gitmakers.
Patch releases¶
Patch releases go out weekly from next/bugs. Trials are not updated from next/bugs. Cloud clients are always up to date, so the update is announced and scheduled when a new next/bugs is released.
Changes for the next patch release must be delivered by Wednesday noon. A fix pushed on Wednesday the 1st is tested for a week and reaches production on Friday the 10th.
Minor releases¶
Minor releases go out monthly from next/minor-rc, in the last week of the month. Code freeze is around the 15th, followed by end-to-end testing.
Major releases¶
Major releases go out once a year, without a fixed date, from next/major-rc. They deliver large features announced by marketing. At least a month before the release the focus is on the marketing campaign, extensive end-to-end and integration testing, and training of sales and support staff.
RYS releases¶
RYSes are distributed through the Easy gem server (gems.easysoftware.com) or RubyGems. A RYS has to pass code review and be merged into master first. Then, locally:
- Check out and pull the latest
master. - Increase the version according to semantic versioning, either with
easy increase-versionor manually inlib/RYS_NAME/version.rb. - Merge the changelogs, either with
easy changelog-mergeor manually: copy the entries from/changelogsinto the matching sub-sections of theUnreleasedsection ofCHANGELOG.MDin the RYS root. - Commit and push the changes.
- Release with
easy gems-release. Most RYSes release automatically from theirmasterpipeline once it passes.
Easy products lock RYS versions, usually to a minor version. When you release a minor version or higher, increase the version in the relevant platform Gemfile too. Patch versions are usually fine without it.
A git tag in the format v2.5.5 is created on release.
Releasing an older version of a RYS¶
Use this when a fix must go into an older version, for example the latest master version is 2.0.0 and the fix is for 1.5.3.
-
Check out the tag of the version to update:
-
Make the change, write a changelog, commit and push.
- Create a merge request marked as Draft. Do not merge it; it exists for code review and the CI pipeline.
- Follow the standard RYS release steps above, staying on your branch instead of
master. Version1.5.4is released. - Check out
masterand create a branch such asforward_1_5_4. - Forward your changes: download the plain diff of the Draft merge request and apply it. Keep the
2.0.0version and make sure the changelog entries are in chronological order. -
Write a changelog:
-
Commit, push and create a merge request into
master. - After it is merged, follow the standard RYS release steps. Raise the version at least as high as the one you released before. If
mastercontains other changes, coordinate the release with their authors.