Migrate Tenant Pages
Contribution Guidelines Edit | Report
Contents[hide] |
Overview
To increase the performance of loading tenant pages and at the same time decrease the load on the player service, tenant pages must be served from a Content Distribution Network (CDN). This document details the procedure on how to push the tenant pages to CDN Store within the specified container.
Prerequisites
- Install Node Version 8.11.2 For details on downloading node refer official Node.js
- Install Node Package Manager (NPM)
- Install Git
- Install Gulp globally
npm install gulp -g
- Ensure that the tenant folder with all the required sub-folders is present in the application folder
- Ensure you have a CDN service provider account credential i.e., account name and access key. This account is used to store all the tenant pages in single blob container.
Migrating Static pages to CDN
1. Clone the sunbird portal source code by executing the command given in console:
git clone https://github.com/project-sunbird/sunbird-portal.git
2. Run the command cd
to the cloned sunbird-portal source code and switch to branch release-1.9
by executing the command given in console:
git checkout release-1.9
3. Run the command cd src/app
followed by the following command in console to install the dependencies
npm install
4. After ensuring that tenant folder exists inside src/app
(for those files that have to be moved to cdn) run the following gulp script at the level gulp-tenant.js
file exists i.e., inside (src/app/)
folder from the console. This command versions the files and pushes it to CDN
gulp pushTenantsToCDN --gulpfile gulp-tenant.js --accountName="" --accessKey="" --provider="" --cdnurl="" --tenant="" --tenantpath="" --containerName=""
Parameter | Type | Description | Sample Value |
---|---|---|---|
accountName |
Optional | account name of the service provider | azure |
accessKey |
Optional | access key of azure | |
provider |
Optional | cdn service provider | Currently, only Azure is supported |
cdnurl |
Mandatory | cdn service provider link | |
tenant |
Optional | names of subfolders that have to be pushed to CDN. The names must be comma separated | |
tenantpath |
Optional | path of the tenant folder where the tenant files are expected to be present | defaults to absolute path |
containerName |
Optional | blob container name in CDN service provider | defaults to ‘tenants’ |
Note:
1. If accountName or accessKey is not provided in the arguments then the tenant files are not pushed to CDN, however versioning of files is done and the saved in the folder tenants-build
at the same path where gulp-tenant.js
is present
2. For the parameter tenantpath
tenant folder is expected at the same path where tenant-gulp.js
file present, and if tenant folder path is different and not at the path of tenant-gulp.js
then the respective path must be given
3. For the parameter tenant
, by default, all the folders present inside the tenant (source) folder will be processed, and can be overridden by specifying the particular folder names which have to be processed by comma seperated values.Eg: <tenant1>,<tenant2>,<tenant3>
4. On completing the script the following message is displayed:
Success! - All files processing done and pushed to CDN Provider
5. If the tenant folder is already present in CDN service provider container then this script replaces the existing folder with the latest one.
Enabling CDN in Player Service
To enable the CDN in the player service:
1. Set the following environment variable in player service. The contianerName
for the variable should be the one which is provided during the script execution
sunbird_tenant_cdn_url="<baseurl>/<containerName>"
Note:
1: If the environment variable is not set in the player service then by default all the tenant pages are serverd from the player service tenant folder
2. If any of the mandatory args are missing on the script execution command then the script is terminated and respective error is displyed in the console
3. This script does not perform any minifications or optimizations, so for optimized loading of tenant files it is mandatory to remove all the assets and files that are not in use
Cache Busting
When the script is executed for pushing tenant pages to CDN, all the files excluding index.html are versioned before pushing the files to cdn inorder to avoid loading of outdated code which will be stored in browser cache. Versioning means random string at the end of your resource will be appended and this keeps updating every time that resource is updated during the script execution.