Frontend Version Control Specification
Version Specification
For the simplicity and consistency of frontend version control, we consider to formulate this specification. Every frontend project should follow it.
The specification consists of 2 parts: branch strategy and version number.
Branch Strategy
The branch strategy is as follows:
- When new release plan is made, a new branch
{releaseNumber}-release-{date}will be created from the last release branch({releaseNumber - 1}-release-{date}). - All stable(after fully tested) features will be merged into this branch which belongs to this release plan.
- For apps, the branch will published to the
pre,prod, andperformance. For components this branch is used for publish{release-number}.Xlatest version.
Version Number
The version number is as follows:
- When new release plan is made, a new latest version
{releaseNumber}.0will be published based on last latest version{releaseNumber - 1}.{latestPatchNumber}. - Changes merged to the branch
{releaseNumber}-release-{date}need to update the version number of the component. The version number should be{releaseNumber}.{patchNumber}. The patchNumber should be increased by 1 for each publish. - The
betaandalphaversions are reserved fortestanddevbranchs.
Dependency Version Declaration Constrain
In the development of new release plan, we need to make sure that the dependencies will depend correctly in the package.json file. The constraints are:
- On the
{releaseNumber}-release-{date}branch:- Tag version is not allowed.
- Only Tilde semver range operator is allowed.
- The version number must great or equal to the
{releaseNumber}. - The specified version number is preferred when you update the dependency.
- on the
testbranch:betatag is allowed.- rest are same as
{releaseNumber}.xversion’s constrains.
- no constrain on the
devbranch.
The automation
When the new release plan is made, the automation script will create the branch and publish the release version automatically. The steps are:
- Create a new branch
{releaseNumber}-release-{date}from the last release branch. - Publish the new version
{releaseNumber}.0based on the last latest version{releaseNumber - 1}.{latestPatchNumber}. - Update the all the seeyon packages’ version number e to
~{releaseNumber}.0for all appspackage.json. - Trigger the CI/CD pipeline to publish the new branch to the enviroment.
The devops pipeline checks
All the specification will be checked by the pipeline before the app or component published to the environment.