Release & Development Process
This document would give an idea how aah framework Development and Release Process. I will be improving process efficiency iteratively as project moves on.
Table of Contents
Insights
aah framework internally uses gopkg.in
codebase for Package Versioning and commitment to provide stable release version in-addition to the user choice of package management tools like glide, govendor, etc.
- Github
Tag
is Stable and Production ready. - Default branch is
v0-edge
,v1-edge
, and so on. Development, Bug fix, Pull Request, happens on that.- Note: master is not a default branch for aah framework.
- Branch
master
is kept as tidy codebase of aah framework. - In the being of every development iteration, version is updated from
v0
set tov0-edge
(v1, etc.) - In the release preparation package references are updated from
v0-edge
tov0
(v1, etc.) - Travis build, test cases and few manual dry-testing to ensure codebase is stable & ready for the release.
- PR created from
v0-edge
branch (v1, etc.) tomaster
branch. - Release tag gets created from latest
commit sha
, typically readme file update commit of the release.
Release Cycle
- Security fix is gets addressed and released as soon as possible, refer to how to report security issues?.
- Bug fixes and minor enhancements are planned to release on monthly basis.
- Please Note: If zero bug fixes then this release may not happen.
- Feature and Enhancement is planned to release every 3 to 6 months cycle.
- Smaller feature or enhancement might get released earlier.
- Have a look on Roadmap.
API Stability
aah framework and it’s libraries will be maintained in a compatible way between major version
unless some vital bugs prevent me from doing so. I don’t take API changes lightly.
Process to Release Framework/Library
- Make good effort for Unit testing and code coverage
- Check Travis Build is alright and you get green ticket on Github.
- Execute shell script with
library-name
,version
andrelease
as parameters.bash <(curl -s https://aahframework.org/dev-util) router v0 release
- It basically does find and replace of
v0-edge
tov0
.
- Commit it as
preparing for v<version-number> release
.- For e.g.:
preparing for v0.5.2 release
.
- For e.g.:
- Update
README.md
with appropriate information (status icons URLs, version no, date, etc). - Commit it as
readme update for v<version-number> release [ci skip]
.- Typically used for creating release tag with this
commit sha
. - We are building
branch
andmaster
that is good enough for consistency check and release. Let’s use the Travis CI resources optimally for aah framework project.
- Typically used for creating release tag with this
- Push it to repo.
- Create a
PR
from branchv0-edge
tomaster
and Merge it. - Update the Documentation on
go-aah/docs
repo.- On
go-aah/docs
branchmaster
is always the latest release. - Create a branch from master for previous release.
- These previous release branch docs are accessible from https://docs.aahframework.org by version-number.
- For e.g.: new release
v0.6
so create branch calledv0.5
from master (preserving previous release docs).
- Update the documentation on the branch
master
for the release and add Release Notes, Changelog and Migration Info. - Push it
go-aah/docs
repo.
- On
- Create a Release Tag and Publish
- Tag name must comply with
SemVer
For example: v0.1, v1.0, v1.0.1 etc. - Release Title is
v<version-number> Release
. - In
Describe
release text box, put the links to official website for release notes, changelog, migration info. - Hit the
Publish
release button.
- Tag name must comply with
- Refer Broadcast section about making release announcement.
Broadcast Framework Release
We have to broadcast new release of Framework on -
aah community: Framework and Libraries release.
- Twitter: https://twitter.com/aahframework
- Gitter Online Chat: https://gitter.im/aahframework/community
- Google Groups: https://groups.google.com/forum/#!forum/aahframework
- Google+: https://plus.google.com/u/0/102130029195315523240
Global Audience: Only Framework release.
- Golang Nuts: https://groups.google.com/forum/#!forum/golang-nuts
- Golang Reddit: https://www.reddit.com/r/golang/
- Golang Google+: https://plus.google.com/communities/114112804251407510571