Content-Player: NPM Package build
Introduction:
This document details the content-player npm package build process
Background
Content-Player is common module/product used to preview/play the content/question in Portal, Mobile, offline desktop, Editors & Question(editors). The build process of these products to package content-player is different. This process in not automatic for all the application. Because of manual process of sharing the content-player build, some times latest content-player changes are not present in the mobile or portal or offline production build. So we need to stream line the build & packaging process of content-player for Portal, Mobile, offline desktop & editor applications.
Problem Statement:
- Automate the build & packaging process of content-player build for all the comsumer applications like Mobile, Portal, Offline desktop, Editors etc..
- Prodcution build of Mobile, Portal, Offline dekstop & Editors should have always latest version of the content-player specific to release.
Key Design Problems
- How to build content-player which is publicly accessible to all the consumer applications?
- How to get packaging process of content-player(latest changes specific to release) for all the consumer applications?
- How to maintain the versioning of content-player specific to each release?
Design 1:
Use NPM build process for content-player
https://www.npmjs.com/package/@project-sunbird/content-player
Dev: Any PR is merged to content-player repo, cotent-player npm module will be pushed with the alpha version(prerelease version - alpha).
Staging: While staging deployment of content-player, content-player npm module will be published with Beta version(release version - beta).
Prod: While staging deployment of content-player, content-player npm module will be published with specific release version number(ex: 2.6.0). Any hot-fixes on content-player(prodcution) will get npm publish by updating the patch version (ex: 2.6.1)
NPM versioning format: https://docs.npmjs.com/cli/version
Semantic version format: ://docs.npmjs.com/misc/semver
Note:
- While pushing the build to prod, all consumption products of content-player has to define the specific version of the content-player npm module in the package.json file. So that any hot-fix deployments of consumption products/modules, will not take the latest version of the content-player.
Design 2:
Pushing latest version of the content-player to CDN/public repo.
Dev: Taking it from dev preview cdn latest ZIP
Staging: Taking it from staging preview cdn latest ZIP
Pre-prod: Taking it from pre-prod preview cdn latest ZIP
Prod: Taking it from prod preview cdn latest ZIP