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 requirements

  • Create 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 to cloud_storage_label_bucketname

Upload Initial Plugins

  • Upload the initial set of plugins to cloud_storage_content_bucketname container

  • Download the initial Plugins from here

  • Unzip content-plugins.zip and upload all the files and folders to cloud_storage_content_bucketname/content-plugins object storage

  • Create a object storage with name you have set for the variable cloud_storage_public_bucketname with public access level

  • Create 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

JENKINS JOB TO RUN
GITHUB TAG
GITHUB REPO
COMMENTS

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

JENKINS JOB TO RUN
GITHUB TAG
GITHUB REPO
COMMENTS

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)

JENKINS JOB TO RUN
GITHUB TAG
GITHUB REPO
COMMENTS

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