Skip to content

Continuous Integration & Continuous Delivery using Jenkins

Satish Malireddi edited this page Dec 7, 2019 · 3 revisions

Overview

Here is an overview of user interaction with Jazz during service creation & deployment -

Development Workflow

Jazz Framework uses Jenkins as the CI/CD platform to deploy Jazz Services. Admins can login into Jenkins service using the credentials you provided during setup.

Create Service

When user creates a new service, Jenkins create-service workflow is triggered for service bootstrapping process. This job will:

  • Checkout the corresponding {service_type}-template-{runtime} from Jazz (For example, if user creates an API using nodejs runtime, jenkins job will checkout api-template-nodejs from the template repository
  • Create a new code repository (Git) for the service
  • Push the template into the new repository
  • Create a web-hook for the repository to trigger builds automatically when changes are made to the new repository (to enable CI/CD!)

Deploy Service

Any change to user's code repository will automatically trigger new Jenkins job that builds, tests & deploys to a specific environment (Jazz creates end-to-end environments automatically). This job will:

  • Checkout the code from code repository
  • Build the service (based on the runtime - java, nodejs, python or go build scripts)
  • Deploy the code to corresponding environment. For master branches, code gets deployed to production environment and for non-master branches (feature, hotfix etc.) code gets deployed to a dedicated development environment (that Jazz creates automatically during branch creation)
  • Email notification is sent to the service owner with status of the build/deployment. On successful deployment, this email contains service endpoint details that are ready to use. You can view the endpoints details in Jazz UI for each environment.

Delete Service

With a click of a button, Jazz takes care of deleting and cleaning up of the artifacts that it created. It keeps track of every asset for a service in asset catalog. A dedicated Jenkins job is responsible for deleting service of all service types. As part of the delete workflow, the job will:

  • Remove the service from all environments, all the assets (API endpoints, functions, roles, S3 buckets etc.) will be deleted as part of the workflow.
  • Delete the repository
  • Remove the service from the Jazz service catalog