Build, Provision and Deploy
Note: This document has been revised to incorporate updates for version 6.0.1, including testing of the cloud-agnostic feature on Oracle Cloud Infrastructure (OCI).
(updated on 26-06-2024)
To install SunbirdED release-6.0.1
, we will need to run many Jenkins jobs and a couple of manual steps. Some of the jobs need to be run in a specific order. This page details out the list of jobs, their order and the github release tags to be used for each job.
Create Folder Structure for plugins upload
We will create few folders in object storage for storing sunbird plugins
Our deployment job always tries to delete the folder first before uploading, so we need to have the placeholders before running the jobs
Create a public object storage with the name you have set for the variable
cloud_storage_content_bucketname
Under
cloud_storage_content_bucketname
create folders with below names.generic-editor
content-editor
v3/preview (under v3 folder create preview folder)
Upload the default T&C file to
cloud_storage_content_bucketname
in a folder named terms-and-conditions. You can get a copy of the sample T&C file from here. You are free to edit the HTML as per your requirementsCreate another object store with the name you have set for the variable
cloud_storage_label_bucketname
Go to cloned sunbird-devops repo and navigate to
cd sunbird-devops/utils/portal
and upload all files tocloud_storage_label_bucketname
Upload Initial Plugins
Upload the initial set of plugins to
cloud_storage_content_bucketname
containerDownload the initial Plugins from here
Unzip content-plugins.zip and upload all the files and folders to
cloud_storage_content_bucketname/content-plugins
object storageCreate a object storage with name you have set for the variable
cloud_storage_public_bucketname
with public access levelCreate a object storage with name you have set for the variable
cloud_storage_artifacts_bucketname
with private access level
Upload Maxmind Database to Object storage
Download the Maxmind city database in zip format from Maxmind website
Upload the zip file to the
cloud_storage_artifacts_bucketname
object storage
Build source code
Note:
Jenkins will have many jobs which may not be documented or is not suitable for adoption yet
Jobs listed on this page is sufficient to setup Sunbird and not every job present in Jenkins is required to be run
Jobs can be run in parallel to speed up execution. The only exception is you should NOT run multiple jobs which clone the code from same repo in parallel
If you get errors in some of the build jobs, rerun the job again
The errors are usually due to missing maven jars or maven repo timeouts
If you get errors even after re-running the job, come back to it later, there are other jobs which would generate dependent jars
Build/Core/AdminUtils
release-4.5.0_RC3
Handles mobile device registration, refresh token
Build/Core/Analytics
github_release_tag: release-5.1.3_RC1, cloud_store_group_id:org.sunbird,cloud_store_artifact_id:cloud-store-sdk_2.12,cloud_store_version:1.4.6
Location Register, Location Retrieval
Build/Core/APIManager
release-4.10.0_RC1
The API Gateway
Build/Core/ApiManagerEcho
master-RC1
Simply echos the request
Build/Core/Assessment
inquiry_release_tag:release-5.6.0_RC1,core_release_tag:release-5.2.0_RC2
Handles course assessments
Build/Core/Bot
release-3.9.0_RC1
Frontend for the chatbot
Build/Core/Cassandra
release-4.10.0_RC1
Handles the Cassandra database schema
Build/Core/CassandraTrigger
release-4.6.0_RC1
Creates few Cassandra Triggers
Build/Core/Cert
release-5.0.0_RC2
Handles course certificates
Build/Core/CertRegistryService
release-5.0.0_RC1
Helper for Certificate service
Build/Core/Content
github_release_tag: release-5.5.0_RC2, cloud_store_group_id:org.sunbird, cloud_store_artifact_id:cloud-store-sdk, cloud_store_version:1.4.7
Handles the Contents and Content Metadata
Build/Core/Dial
release-5.4.0_RC1
Handles QR code generation
Build/Core/DiscussionsMiddleware
release-5.0.0_RC2
Middleware for discussion forum
Build/Core/EncService
release-5.1.0
Encryption service to setup certificate signing keys
Build/Core/Groups
release-5.0.0_RC2
Handles groups functions
Build/Core/HawkeyeSuperset
v1.0.14
Build/Core/Keycloak
release-3.8.0_RC1
User authentication service
Build/Core/KnowledgeMW
release-5.2.0_RC2
Middleware for Content service
Build/Core/Learner
github_release_tag: release-5.3.1_RC1,cloud_store_group_id:org.sunbird,cloud_store_artifact_id:cloud-store-sdk,cloud_store_version:1.4.6
Handles user and organizations
Build/Core/Lms
github_release_tag: release-5.3.2_RC1, cloud_store_group_id:org.sunbird,cloud_store_artifact_id:cloud-store-sdk,cloud_store_version:1.4.6
Handles courses
Build/Core/Nodebb
github_release_tag: release-5.0.0_RC1, nodebb_branch: v1.18.6
Handles the discussion forum
Build/Core/Notification
release-5.0.0_RC2
Handles notifications
Build/Core/Player
release-6.0.0_RC43
Handles the UI elements
Build/Core/Print
release-3.8.0
Handles PDF generation of certificates
Build/Core/Proxy
release-3.8.0_RC14
Nginx web server / proxy
Build/Core/Report
release-5.0.0
Handles some of the reports
Build/Core/Router
release-3.9.0_RC1
Backend for chatbot
Build/Core/Search
release-5.0.0_RC2
Handles contents / course search
Build/Core/Taxonomy
release-5.2.0_RC3
Handles the taxonomies
Build/Core/Telemetry
release-3.3.0_RC1
Handles the telemetry generated
Build/KnowledgePlatform/CassandraTrigger
release-3.8.0_RC18
Creates few Cassandra Triggers
Build/KnowledgePlatform/FlinkJobs
github_release_tag: release-5.5.0_RC2,cloud_store_group_id:org.sunbird,cloud_store_artifact_id:cloud-store-sdk_2.12,cloud_store_version:1.4.6
Multiple functions like search indexing, video streaming
Build/KnowledgePlatform/InquiryFlinkJob
release-5.7.0_RC4, cloud_store_group_id: org.sunbird, cloud_store_artifact_id: cloud-store-sdk_2.12, cloud_store_version: 1.4.6 "
Handles async question set
Build/KnowledgePlatform/Learning
github_release_tag: release-5.4.1_RC2, profile_id: platform-services
Handles frameworks
Build/KnowledgePlatform/Neo4j
release-4.1.0_RC2
Generates neo4j plugins
Build/KnowledgePlatform/SyncTool
release-4.5.0_RC12
Generates a jar to manually sync contents
Build/DataPipeline/AdhocScripts
release-4.5.1_RC1
Generates supporting scripts for reporting
Build/DataPipeline/AnalyticsCore
github_release_tag: release-5.1.3_RC5,cloud_store_group_id:org.sunbird,cloud_store_artifact_id:cloud-store-sdk_2.12,cloud_store_version:1.4.6
Generates core libraries for reporting
Build/DataPipeline/CoreDataProducts
github_release_tag: release-5.1.3_RC5,cloud_store_group_id:org.sunbird,cloud_store_artifact_id:cloud-store-sdk_2.12,cloud_store_version:1.4.6
Generates supporting libraries for reporting
Build/DataPipeline/EdDataProducts
release-5.0.0_RC2
Generates supporting libraries for reporting
Build/DataPipeline/ETLJobs
release-5.1.1_RC1
Extract, Transform, Data Loading jobs
Build/DataPipeline/FlinkPipelineJobs
release-5.2.0_RC6
Handles processing of telemetry data
Build/DataPipeline/Secor
secor-0.29_RC2
Handlles backup of telemetry data to Object storage
Build/Lern/LernDataProducts
github_release_tag: release-5.3.1_RC11,cloud_store_group_id:org.sunbird,cloud_store_artifact_id:cloud-store-sdk_2.12,cloud_store_version:1.4.6
Lern BB data products
Build/Lern/LernFlinkJobs
github_release_tag: release-5.3.1_RC2,cloud_store_group_id:org.sunbird,cloud_store_artifact_id:cloud-store-sdk_2.12,cloud_store_version:1.4.6
Lern BB jobs
Build/managed-learn/ml-core-service
release-6.0.0_RC24
Build/managed-learn/ml-project-service
release-6.0.0_RC9
Build/managed-learn/ml-report-service
release-6.0.0_RC7
Build/managed-learn/ml-survey-service
release-6.0.0_RC9
Build/Sunbird-RC/CertificateApi
github_release_tag: release-5.1.0 dockerhub_image_source: dockerhub/sunbird-rc-certificate-api:v0.0.11
Build/Sunbird-RC/CertificateSign
github_release_tag: release-5.1.0 dockerhub_image_source: dockerhub/sunbird-rc-certificate-signer:v0.0.11
Build/Sunbird-RC/Registry
github_release_tag: release-5.1.0 dockerhub_image_source: dockerhub/sunbird-rc-core:v0.0.13
Build/UCI/Utils
release-5.1.0
Build/UCI/message-rosa
release-5.1.0
Build/UCI/dao
release-5.1.0
Build/UCI/Adapter
release-5.1.0
Build/UCI/Inbound
release-5.1.0
Build/UCI/odk
release-4.4.0_RC1
Build/UCI/Outbound
release-5.1.0
Build/UCI/Orchestrator
release-5.1.0
Build/UCI/Transformer
release-5.1.0
Build/UCI/UCI
release-5.0.0_RC3
Build/Plugins/ContentEditor
release-5.2.1_RC3
A bunch of plugins to edit certain types of content
Build/Plugins/ContentPlayer
release-5.1.0_RC2
A bunch of plugins to handle content playback
Build/Plugins/ContentPlugins
release-5.2.1_RC4
A bunch of base plugins to support the content editors and content player
Build/Plugins/GenericEditor
release-5.2.1_RC2
A bunch of plugins to edit certain types of content
Service Provision
Note:
Jobs can be run in parallel to speed up execution. The only exception is you should NOT run multiple jobs which will provision packages on the same server in parallel
OpsAdministration/Core/Bootstrap
hosts: env, branch_or_tag: release-6.0.0 , tag: bootstrap_any,node_exporter
Creates the deployer user and installs node exporter and python packages for ansible
OpsAdministration/KnowledgePlatform/Bootstrap
hosts: env, branch_or_tag: release-6.0.0, tag: bootstrap_any,node_exporter
Creates the deployer user and installs node exporter and python packages for ansible
OpsAdministration/DataPipeline/Bootstrap
hosts: env, branch_or_tag: release-6.0.0, tag: bootstrap_any,node_exporter
Creates the deployer user and installs node exporter and python packages for ansible
Provision/Core/ApplicationElasticSearch
release-6.0.0
Installs Elasticsearch used by the applications
Provision/Core/Cassandra
release-6.0.0
Installs Cassandra database
Provision/Core/CassandraExporter
release-6.0.0
Installs Cassandra prometheus exporter
Provision/Core/ESMapping
indices_name: all, branch_or_tag: release-6.0.0 es_files: indices,mappings,pipelines
Creates Elasticsearch indices and mappings
Provision/Core/Keycloak
release-6.0.0
Installs java and other pre-requisites for Keycloak service
Provision/Core/LogES
release-6.0.0
Installs Elasticsearch used to store application and VM logs
Provision/Core/MongodbCluster
release-6.0.0
Installs Mongo database
Provision/Core/Postgres
release-6.0.0
Installs Postgres database
Provision/Core/PostgresDbUpdate
release-6.0.0
Creates Postgres tables, schema and users
Provision/Core/Graylog
release-6.0.0 tag: all
Installs Graylog, MongoDB and OpenJDK
OpsAdministration/Core/GraylogMongoImport
release-6.0.0 tag: all
Installs Graylog dashboards, inputs and other configurations
OpsAdministration/Core/GraylogGeoIP
release-6.0.0
graylog_geoip_compressed_file_name: geoip file name in .tar.gz
format
graylog_geoip_file_name: geoip file name within the .tar.gz
file
Installs the Geo IP database on Graylog. The .tar.gz
file should be uploaded to the artifacts
storage bucket before running the job. You can download the GeoIP2 City Database in the .tar.gz
from Maxmind website.
Provision/KnowledgePlatform/Learning
release-5.5.0_RC2
Install tomcat and other pre-requisites for Learning service
Provision/KnowledgePlatform/Neo4j
release-5.5.0_RC2
Installs Neo4j database
Provision/DataPipeline/AnalyticsGeoLocationDBSetup
release-5.2.0_RC5, geoip_zip_csv_file_name: Enter the maxmind city database zip file name you uploaded to artifacts
container
Creates tables and schema in Postgres
Provision/DataPipeline/AnalyticsSpark
release-5.2.0_RC6
Install Apache Spark and other pre-requisites for reporting
Provision/DataPipeline/Druid
release-5.2.0_RC5, service: Select All, remote: raw
Installs Druid
Provision/DataPipeline/Kafka
release-5.2.0_RC5
Installs Kafka
Provision/DataPipeline/KafkaIndexer
release-5.2.0_RC5
Install Logstash to read telemetry data from Kafka and index into Log ES
Provision/DataPipeline/Postgres
release-5.2.0_RC5
Installs Postgres database and users
Provision/DataPipeline/PostgresDbUpdate
release-5.2.0_RC5
Creates Postgres tables, schema and users
Provision/DataPipeline/Redis
release-5.2.0_RC5
Install Redis
Provision/DataPipeline/Zookeeper
release-5.2.0_RC5
Installs Zookeeper
Artifact Upload
Every job in the Build directory has a corresponding job in ArtifactUpload directory with the same name
These jobs are auto triggered and usually run without issues after the corresponding job in the build directory succeeds
The job will fail if your ansible inventory setup is incorrect or incomplete
If the job has failed, fix the ansible variables issue and rerun the job to upload the artifact / docker image
Ensure the artifact upload jobs are successful before proceeding
Service Deploy
Note:
We will run the jobs which are a pre-requisite for other jobs first
The pre-requisite jobs reside in different folders so we will be jumping across folders
Jobs in the Deploy directory can be run in parallel and don’t have any restrictions if the code is from same repo unlike the Build directory
Ensure you don’t run those jobs in parallel which modify the databases (such as cassandra, neo4j etc)
Deploy/Kubernetes/BootstrapMinimal
release-6.0.0
Creates namespaces, configmaps and secrets
Deploy/DataPipeline/BootstrapMinimal
release-5.2.0_RC5
Creates namespaces, configmaps and secrets
Deploy/Kubernetes/Monitoring
branch_or_tag: release-6.0.0, tag: all
Deploys the monitoring stack which can be accessed via DOMAIN/grafana/ post nginx-public-ingress deployment
Deploy/KnowledgePlatform/CassandraTrigger
release-5.5.0_RC2
Installs the Cassandra triggers
Deploy/Kubernetes/Cassandra
release-6.0.0
Creates / Updates Cassandra DB schema
Deploy/KnowledgePlatform/CassandraDbUpdate
release-5.5.0_RC2
Creates / Updates Cassandra DB schema
Deploy/Kubernetes/CassandraDBUpdate
release-6.0.0
Creates / Updates Cassandra DB schema
Deploy/Kubernetes/KafkaSetup
release-6.0.0
Creates / Updates Kafka Topics
Deploy/DataPipeline/KafkaSetup
release-5.2.0_RC5
Creates / Updates Kafka Topics
Deploy/KnowledgePlatform/KafkaSetup
release-5.2.0_RC5
Creates / Updates Kafka Topics
Deploy/KnowledgePlatform/Learning
release-5.4.1_RC2
Deploys the Learning service on tomcat
Deploy/KnowledgePlatform/Neo4j
release-5.5.0_RC2
Deploys the Neo4j plugins
Deploy/KnowledgePlatform/Neo4jDefinitionUpdate
release-5.5.0_RC2
Creates / Updates the Neo4j database
Deploy/KnowledgePlatform/FlinkJobs
branch_or_tag: release-5.5.0_RC2, job_names_to_deploy: Select All
Deploys the Flink jobs in Kubernetes cluster
Deploy/KnowledgePlatform/InquiryFlinkJob
inquiry_release_tag: release-5.7.0_RC1, job_names_to_deploy: Select All
Deploys the Flink jobs in Kubernetes cluster
DeployKnowledgePlatform/LoggingFileBeatsVM
branch_or_tag: release-6.0.0, hosts: Select All, tags: default
Deploys filebeat in all the selected VMs
Deploy/Kubernetes/nginx-private-ingress
release-6.0.0
Deploys nginx with a private load balancer
Note: Before deploying update private_ingressgateway_ip
variable in private repo with available ip in kubernetes subnet address range.
Deploy/Kubernetes/APIManager
release-6.0.0
Deploys Kong, the API gateway
Deploy/Kubernetes/OnboardAPIs
release-6.0.0
Creates the APIs in Kong
Deploy/Kubernetes/OnboardConsumers
release-6.0.0
Deploy only after OnboardAPIs.
Creates the consumers in Kong. Now read the comment mentioned in Core/Secrets.yml against the variable core_vault_sunbird_api_auth_token
Deploy/Kubernetes/KongJWTAdminUtil
release-6.0.0
Onboards the v2 consumers for mobile, desktop and portal
Deploy/Kubernetes/Keycloak
release-6.0.0
Deploys Keycloak
Deploy/Kubernetes/KeycloakRealm
release-6.0.0
Creates the Sunbird Realm. Now read the comment mentioned in Core/Secrets.yml against the variables core_vault_sunbird_sso_publickey
, adminutil_refresh_token_public_key_kid
, adminutil_refresh_token_secret_key
Deploy/Kubernetes/BootstrapMongodb
release-6.0.0
Creates the initial token in Mongo database
Deploy/Kubernetes/CertTemplate
branch_or_tag: release-6.0.0, sunbird_util_branch_or_tag: release-4.10.0_RC1
Uploads the certificate templates into Object storage
Deploy/Kubernetes/UploadChatbotConfig
branch_or_tag: release-6.0.0, bot_repo_branch: master
Uploads the chatbot configs to Object storage
Deploy/Kubernetes/UploadFAQs
branch_or_tag: release-6.0.0, source_folder: Select All
Uploads the FAQs to Object storage
Deploy/Kubernetes/UploadSchema
Uploads the Content schemas to Object storage
Deploy/Kubernetes/AdminUtils
release-6.0.0
Deploys Adminutils service
Deploy/Kubernetes/Analytics
release-6.0.0
Deploys Analytics service
Deploy/Kubernetes/APIManagerEcho
release-6.0.0
Deploys Echo service
Deploy/Kubernetes/Assessment
release-6.0.0
Deploys Assessment service
Deploy/Kubernetes/Bot
release-6.0.0
Deploys Bot service
Deploy/Kubernetes/Cert
release-6.0.0
Deploys Cert service
Deploy/Kubernetes/CertRegistry
release-6.0.0
Deploys CertRegistry service
Deploy/Kubernetes/Content
release-6.0.0
Deploys Content service
Deploy/Kubernetes/Dial
release-6.0.0
Deploys Dial service
Deploy/Kubernetes/Enc
release-6.0.0
Deploys Enc service
Deploy/Kubernetes/Groups
release-6.0.0
Deploys Groups service
Deploy/Kubernetes/HawkeyeSuperset
release-6.0.0
Deploys HawkeyeSuperset service
Deploy/Kubernetes/KnowledgeMW
release-6.0.0
Deploys KnowledgeMW service
Deploy/Kubernetes/Learner
release-6.0.0
Deploys Learner service
Deploy/Kubernetes/Lms
release-6.0.0
Deploys Lms service
Deploy/Kubernetes/Notification
release-6.0.0
Deploys Notification service
Deploy/Kubernetes/Player
release-6.0.0
Deploys Player service
Deploy/Kubernetes/Print
release-6.0.0
Deploys Print service
Deploy/Kubernetes/Report
release-5.1.0
Deploys Report service
Deploy/Kubernetes/Router
release-6.0.0
Deploys Router service
Deploy/Kubernetes/Search
release-6.0.0
Deploys Search service
Deploy/Kubernetes/Taxonomy
release-6.0.0
Deploys Taxonomy service
Deploy/Kubernetes/Telemetry
release-6.0.0
Deploys Telemetry service
Deploy/Kubernetes/LoggingFileBeatsVM
branch_or_tag: release-6.0.0, hosts: Select All, tags: default
Deploys filebeat in all the selected VMs
Deploy/Kubernetes/Logging
release-6.0.0
Run job twice by choosing the chartname as - filebeat
, oauth2-proxy
. Deploys filebeats and oauth2 proxy respectively. Graylog can accessed via DOMAIN/graylog/
Deploy/Kubernetes/nginx-public-ingress
release-6.0.0
Deploys the nginx web server. Now you can open visit your domain
Deploy/Kubernetes/Nodebb
release-6.0.0
Deploys NodeBB service. Now read the comment mentioned in Core/Secrets.yml against the variable discussionsmw_nodebb_authorization_token
Deploy/Kubernetes/DiscussionsMW
release-6.0.0
Deploys DiscussionsMW service
Deploy/Lern/LernDataProducts
release-5.3.1_RC11
Now define the variable mentioned in KnowledgePlatform/common.yml
druid_storage_type , cloud_storage_report_verfication_bucketname,dp_storage_endpoint_config
Deploy/Lern/LernFlinkJobs
release-5.3.1_RC2
relational-cache-updater, activity-aggregate-updater jobs need to be deployed
Deploy/managed-learn/gotenberg
release-6.0.0
Deploy/managed-learn/ml-analytics-service
release-6.0.0
ml_analytics_version: release-6.0.0_RC14
Deploy/managed-learn/ml-core-service
release-6.0.0
Deploy/managed-learn/ml-projects-service
release-6.0.0
Deploy/managed-learn/ml-reports-service
release-6.0.0
Deploy/managed-learn/ml-survey-service
release-6.0.0
Deploy/Sunbird-RC/CertificateApi
release-6.0.0
Deploy/Sunbird-RC/CertificateSign
release-6.0.0
Deploy/Sunbird-RC/Registry
release-6.0.0
Deploy/Sunbird-RC/UploadRCSchema
branch_or_tag:release-6.0.0, source_folder: sunbird-RC
Deploy/UCI/fusionauth
release-6.0.0
Deploy/UCI/gql
release-6.0.0
Deploy/UCI/Inbound
release-6.0.0
Deploy/UCI/odk
release-6.0.0
Deploy/UCI/Orchestrator
release-6.0.0
Deploy/UCI/Outbound
release-6.0.0
Deploy/UCI/Transformer
release-6.0.0
Deploy/UCI/UCI
release-6.0.0
Deploy/Plugins/ContentEditor
release-6.0.0
Deploys ContentEditor files to Object storage
Deploy/Plugins/ContentPlayer
release-6.0.0
Deploys ContentPlayer files to Object storage
Deploy/Plugins/ContentPlugins
release-6.0.0
Deploys ContentPlugins files to Object storage
Deploy/Plugins/GenericEditor
release-6.0.0
Deploys GenericEditor files to Object storage
Deploy/DataPipeline/AdhocScripts
release-5.2.0_RC5
Deploys AdHoc scripts in Spark VM
Deploy/DataPipeline/AnalyticsCore
release-5.2.0_RC6
Deploys jars in Spark VM
Deploy/DataPipeline/CoreDataProducts
release-5.2.0_RC6
Deploys jars in Spark VM
Deploy/DataPipeline/DruidIngestion
branch_or_tag: release-5.2.0_RC5, ingestion_task_names: Select All
Deploys and starts Druid ingestion tasks.
Deploy/DataPipeline/EdDataProducts
release-5.2.0_RC5
Deploys jars in Spark VM
Deploy/DataPipeline/ETLJobs
release-5.2.0_RC7
Deploys ETL scripts in Spark VM
Deploy/DataPipeline/ETLDruidContentIndexer
release-5.2.0_RC7
Deploys ETLDruidContentIndexer
Deploy/DataPipeline/ETLUserCacheIndexer
release-5.2.0_RC5
Deploys ETLUserCacheIndexer
Deploy/DataPipeline/Secor
release-5.2.0_RC6
Deploys Secor Statefulsets in Kubernetes cluster
Deploy/DataPipeline/FlinkPipelineJobs
release-5.2.0_RC6
Deploys Flink jobs Kubernetes cluster
Deploy/DataPipeline/GraphitePrometheusExporter
release-5.2.0_RC5
Deploys graphite prometheus exporter in Druid VM
Deploy/DataPipeline/LoggingFileBeatsVM
branch_or_tag: release-6.0.0, hosts: Select All, tags: default
Deploys filebeat in all the selected VMs
Last updated