ADF Release strategy

Document created by eugenio_romano Employee on Jun 12, 2017Last modified by eugenio_romano Employee on Jun 14, 2017
Version 7Show Document
  • View in full screen mode

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.

8 people found this helpful

Attachments

    Outcomes