In this post I would like to share some recent news (and hopefully enhancements) on Alfresco ADF and its release strategy. With the aim of being open and agile, the ADF team have all decided to adopt a new release strategy in order to reduce the time between code changes and its availability. ADF already gets released every month, but we want to do something to help developers that have tight deadlines and want to integrate our improvements at an early stage without waiting for our monthly release.
Our distribution and versioning strategy
From this week we are going to continuous delivery ADF. In addition to the usual monthly release, beta packages that contains all of our sprint work and alpha packages build will be provided with any PR merged in the development branch.
As a responsible developer you want to know the correct version number to download from NPM. ADF project uses the semantic versioning in combination with the NPM tag :
- Monthly stable release changing the MINOR version so 1.5.0, 1.6.0 and..
- Weekly beta build using 1.6.0-beta1,1.6.0-beta2,1.6.0-beta3,1.6.0-beta4 and the NPM tag @beta
- Any PR alpha build using 1.6.0-ISH_KEY (ISH_KEY is the key of the git commit relative the PR) and the NPM tag @alpha (note how to download the alpha packages is explained below )
How will this impact your current projects?
The default behaviour of whichever NPM wildcard you use in your NPM package is to provide and download only the packages tagged with the @latest tag. All the monthly packages released with the minor changed versions(1.4.0 ,1.5.0, 1.6.0...) are tagged with @latest and by default you will continue do download and receive only the monthly release packages. For more information about NPM tags please refer to the official NPM documentation
How to install the alpha and beta packages
If you want to check which is the latest version available for a package tagged with beta or alpha, you can use the following commands:
- “npm view NAME_PACKAGE@beta version” or “npm view NAME_PACKAGE@alpha version”
To install the latest alpha or beta version you can:
- “npm install NAME_PACKAGE@beta --save” or “npm install NAME_PACKAGE@alpha --save”
Are beta and alpha packages reliable?
Before any PR merged in ADF it has to pass the following checks:
- Travis CI runs the build and the unit test of any component on Linux env
- Appveyor CI runs the build and the unit test of any component on Windows env
- Codecov check that the code coverage doesn’t go under the 90%
- Before being merged, any PR has to be reviewed by at least one other contributor of the project
- When any PR is merged, all changes are tested by our QA
Difference between @Alpha/@Beta build and Monthly @stable release
In our monthly release cycle, we have one week of code freeze. During this week, our QA team looks for regression by testing the whole framework using automatic and manual tests. While in the code freeze time, the whole team is only allowed to merge regression fixes in the development branch. We introduced the Code freeze in order to fully test ADF and not release defective functionality.
Conclusions
My goal in writing this post is to share the latest changes (even if I would like to call them: improvements) with the ADF release strategy. The team is confident this action will be well received by all of the developers, but we would appreciate having your feedback. Feel free to contact us using gitter, the community portal, the webinars or any of the the active channels Alfresco offers to get in touch.
Note
ADF is currently in Limited Availability, you are encouraged to engage Alfresco for support and eligibility for production applications. Feel free and contact your Alfresco Account Manager for formal inclusion into the Early Access and Limited Availability programs.