Project

General

Profile

Feature #23

Updated by Fernando Jose Capeletto Neto over 1 year ago

To allow Continuous Integration / Delivery / Deploy for CMSDisplay, the following tasks need are needed : 
 * "Dockerize CMSDisplay":/issues/32 
 * Migrate Kafka Server from Confluence to lab.fernando.engineer and specialized topics for test and prod environments. 
  - Depends on: "Deploy dedicate Kafka Broker":/issues/11 and include "specialized topics in TrackHandler profiles":/issues/34 . 
 * Specialize RabbitMQ queues for test and prod environments. 
 - Depends on: "include include specialized RabbitMQ queues in TrackHandler profiles":/issues/35 . profiles. 
 * Create a multi-topic branch CMSDisplay_Sonar Jenkins pipeline to trigger SonarQube code analysis.  

 Test Env: 
 * Create a muti-topic branch CMS_IntegrationTest Jenkins Pipeline w/ steps:  
 - a) For TrackHandler: Test -> Build -> Create Docker Img (Tagged with '1.0-SNAPSHOT', using 'integration-test' spring boot profile, transient to be deleted after test) 
 - b) For CMSDisplay: Test -> Build -> Create Docker Img (Tagged with '1.0-SNAPSHOT', pointing to TrackHandler port exposed in the spring boot profile above, the image is also transient to be deleted after the test) 
 - c) Using a dedicated docker-compose file enclosing both CMS microservices, including a test DB instance with its admin, and start a Cloud Instance over this docker-compose to test the snapshot(s). 
 - d) The pipeline shall allow specifying the branch for each service. 
 - e) Document in the CMS wiki the environment vars and profiles used to distinguish from production (Kafka, Rabbit, exposed ports) 


 Production Env: 
 * Release branches periodicity is intended to be weekly, but patches can be released at any time and will override the current weekly release.  
 * Create a release branch CMSDisplay_Deliver Jenkins pipeline w steps: Test -> Build -> Create Docker Img -> Publish Docker Img. (This pipeline shall be used only over 'releases' branches and shall be compliant with other CMS artifacts in the same 'main' release. (e.g. 'cms-display:N.x.y' is compatible with 'trackhandler:N.z.w', but 'cms-display:M.b.c' is not necessarily. The same logic applies to any other CMS artifacts. 
 * Modify current TrackHandler_Delivery Jenkins pipeline policy to be used only over 'release' branches.  
 * Modify the current TrackHandler_CodeQualityCheck Jenkins pipeline to allow 'per branch' analysis on SonarQube. 
 * Create CMS_Deploy Jenkins pipeline : 
 - a) pull specified versions from CMS artifacts from the Docker hub; 
 - b) trigger docker-compose recreation on Prod; 
 - c) The services and containers names shall match the CMS artifact release versions in the docker-compose file 
 - d) During the process, will create a backup for the database volume, to allow revert/recovery actions. 
 * Modify nginx cms.lab.fernando.engineer.conf at lab.fernando.engineer according. 

 - Document these Standards. 

Back