# Jenkins Jobs

#### Overview:

<figure><img src="https://308610995-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4ZKyfmmhMWpPkD6iYvKF%2Fuploads%2F02HbM4AU8jyJFvNtsphm%2FScreenshot%202023-06-22%20at%201.12.56%20PM.png?alt=media&#x26;token=cb5b8836-af8b-4094-86ac-f9b7ab1914c7" alt=""><figcaption></figcaption></figure>

<figure><img src="https://308610995-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4ZKyfmmhMWpPkD6iYvKF%2Fuploads%2FoSlcEsfJfAJnbQ5BBPds%2FScreenshot%20from%202023-06-27%2018-02-47.png?alt=media&#x26;token=51d6e2ab-09a5-457c-b754-5a1fb1132eb1" alt=""><figcaption></figcaption></figure>

**Build Job** : When a build job is run in jenkins, the Jenkinsfile pipeline script in the specific component repo checks-out the specified branch from github repository, does build excutes testcases and creates the docker image. This image details are then uploaded to Jenkins.

**Artifact Upload Job** : Once the build is complete, artifact upload is triggered automatically as per the configuration specified in Artifact upload Job Configure page. Jenkinsfile pipeline script in sunbird-devops/pipelines/upload/docker/ folder is executed and artifact is uploaded to docker-hub.

**Deploy Job**: Deploy jobs is triggered after the Artifact Upload Job as per the configuration specified in Deploy Job Configure page. Jenkinsfile pipeline script in sunbird-devops/kubernetes/pipelines/deploy\_core/ folder is executed. The deploy job uses the helm chart from kubernetes/helm\_charts/core/ folder. It fetches the artifact from docker and deploys it in application container along with envoy , opa containers in specific pod.

**Provisioning** **jobs** are run to setup the data stores(Cassandra, ES, Redis, Postgre), spark and kafka  in the middleware.

<table><thead><tr><th width="144">Build</th><th width="198">ArtifactUpload</th><th width="185">Deploy</th><th>Description</th></tr></thead><tbody><tr><td>Build/Core/AdminUtils</td><td>ArtifactUpload/Core/AdminUtils</td><td>Deploy/Kubernetes/AdminUtils</td><td>Used for build and deploy of adminutils service. Service handles mobile device registration and generating users' refresh token</td></tr><tr><td>Build/Core/Cassandra</td><td>ArtifactUpload/Core/Cassandra</td><td>Deploy/Kubernetes/Cassandra</td><td>Used for creating/migrating tables in Cassandra database</td></tr><tr><td><del>Build/Core/CassandraTrigger</del></td><td><del>ArtifactUpload/Core/CassandraTrigger</del></td><td><del>Deploy/Kubernetes/CassandraTrigger</del></td><td><del>Used for creating required Cassandra Triggers</del><br><del><strong>Note:</strong> This job is run only once.</del>  Deprecated</td></tr><tr><td>Build/Core/Cert</td><td>ArtifactUpload/Core/Cert</td><td>Deploy/Kubernetes/Cert</td><td>This service is part of old incredibles specification for generating certificates. This is not used for certificate generation after 4.10.0 release. Currently sunbird -RC is used for certificate generation.</td></tr><tr><td>Build/Core/CertRegistry</td><td>ArtifactUpload/Core/CertRegistry</td><td>Deploy/Kubernetes/CertRegistry</td><td>This service is part of old incredibles specification for generating certificates. This is not used for certificate generation after 4.10.0 release. Currently sunbird -RC is used for certificate generation.</td></tr><tr><td>Build/Core/DiscussionsMiddleware</td><td>ArtifactUpload/Core/DiscussionsMiddleware</td><td></td><td>Discussion Forum APIs are part of DiscussionsMiddleware. This service is based on NodeJS.</td></tr><tr><td><del>Build/Core/EncService</del></td><td><del>ArtifactUpload/Core/EncService</del></td><td></td><td><del>Used to build and deploy Encryption Service.</del> Deprecated</td></tr><tr><td>Build/Core/Groups</td><td>ArtifactUpload/Core/Groups</td><td>Deploy/Kubernetes/Groups/</td><td>Used to build and deploy Groups service</td></tr><tr><td>Build/Core/Keycloak</td><td>ArtifactUpload/Core/Keycloak</td><td>Deploy/Kubernetes/Keycloak</td><td>Used for packaging and deploying  Keycloak with Sunbird SPI provider</td></tr><tr><td></td><td></td><td>Deploy/Kubernetes/KeycloakRealm</td><td>Used for importing 'Sunbird' realm into new setup.<br><strong>Note:</strong> This job is run only once. </td></tr><tr><td>Build/Core/Learner</td><td>ArtifactUpload/Core/Learner</td><td>Deploy/Kubernetes/Learner</td><td>Used to build and deploy 'User-Org' Service</td></tr><tr><td>Build/Core/Lms</td><td>ArtifactUpload/Core/Lms</td><td>Deploy/Kubernetes/Lms</td><td>Used to build and deploy 'Course-Batch' Service</td></tr><tr><td>Build/Core/Nodebb</td><td>ArtifactUpload/Core/Nodebb</td><td>Deploy/Kubernetes/Nodebb</td><td>Used to build and deploy 'Discussion Forum'</td></tr><tr><td>Build/Core/Notification</td><td>ArtifactUpload/Core/Notification</td><td>Deploy/Kubernetes/Notification</td><td>Used to build and deploy 'Notification' Service</td></tr><tr><td><del>Build/Core/Prin</del>t</td><td><del>ArtifactUpload/Core/Print</del></td><td><del>Deploy/Kubernetes/Print</del></td><td><del>Handles PDF generation of certificates.</del> Deprecated</td></tr><tr><td>Build/Lern/LernDataProducts</td><td>ArtifactUpload/Lern/LernDataProducts</td><td>Deploy/Lern/LernDataProducts</td><td>Used to build and deploy "Lern Data products"</td></tr><tr><td>Build/Lern/LernFlinkJobs</td><td>ArtifactUpload/Lern/LernFlinkJobs</td><td>Deploy/Lern/LernFlinkJobs</td><td>Used to build and deploy "Lern Flink jobs"</td></tr><tr><td>Build/Sunbird-RC/CertificateApi</td><td>ArtifactUpload/Sunbird-RC/CertificateApi</td><td>Deploy/Sunbird-RC/CertificateApi</td><td>To create a build using docker hub image of Sunbird-RC Certificate Api release</td></tr><tr><td>Build/Sunbird-RC/CertificateSign</td><td>ArtifactUpload/Sunbird-RC/CertificateSign</td><td>Deploy/Sunbird-RC/CertificateSign</td><td>To create a build using docker hub image of Sunbird-RC Certificate Sign release</td></tr><tr><td>Build/Sunbird-RC/Registry</td><td>ArtifactUpload/Sunbird-RC/Registry</td><td>Deploy/Sunbird-RC/Registry</td><td>To create a build using docker hub image of Sunbird-RC release</td></tr><tr><td>Build/Core/APIManager</td><td>ArtifactUpload/Core/APIManager</td><td>Deploy/Kubernetes/APIManager</td><td>To build and deploy kong. </td></tr><tr><td></td><td></td><td>Deploy/Kubernetes/OnboardAPIs</td><td>Used for onboarding new APIs. This copies the kong-api.json to API manager.</td></tr><tr><td></td><td></td><td>Deploy/Kubernetes/OnboardConsumers</td><td>Used for onboarding new consumers to kong and providing them bearer token to access APIs.</td></tr><tr><td>Build/KnowledgePlatform/SyncTool</td><td>ArtifactUpload/KnowledgePlatform/SyncTool</td><td>Deploy/KnowledgePlatform/Neo4jElasticSearchSyncTool</td><td>Used for syncing data from neo4j/cassandra to Elastic search</td></tr><tr><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td></tr><tr><td>Provision/Core/ApplicationElasticSearch</td><td></td><td></td><td>Installs Elasticsearch used by the applications</td></tr><tr><td>Provision/Core/Keycloak</td><td></td><td></td><td>Used for installing pre-requisites for Keycloak installation</td></tr><tr><td>Provision/Core/Cassandra</td><td></td><td></td><td>Installs Cassandra database</td></tr><tr><td>Provision/Core/ESMapping</td><td></td><td></td><td>Creates Elasticsearch indices and mappings</td></tr><tr><td>Provision/Core/LogES</td><td></td><td></td><td>Installs Elasticsearch used to store application and VM logs</td></tr><tr><td>Provision/Core/Postgres</td><td></td><td></td><td>Installs Postgres database</td></tr><tr><td>Provision/Core/PostgresDbUpdate</td><td></td><td></td><td>Creates Postgres tables, schema and users</td></tr><tr><td>Provision/DataPipeline/Kafka</td><td></td><td></td><td>Installs Kafka</td></tr><tr><td>Provision/DataPipeline/Redis</td><td></td><td></td><td>Install Redis</td></tr><tr><td>Provision/DataPipeline/Zookeeper</td><td></td><td></td><td>Installs Zookeeper</td></tr><tr><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td></tr></tbody></table>
