Building pipeline flow chart

Introduction

This documentation describes the flows inside the Building Pipeline.
The Building Pipeline creates a Docker image of the modernized application and deploys it on ECS. There are 2 Building Pipelines: one for each environment, INT and UAT. They respectively refer to the develop branch and the master branch of the gitlab-modern-application repository.
Basically, these 2 pipelines are the same. They only differ by the execution of Sonarqube.

Flow chart

aws-sde-dop-building-pipeline-flow-chart_00.png

Number explanation

  1. Developers fetch the version they want of the Velocity sources (.war, .jar and config files) from the aws-bluage-runtime S3 and put them onto the s3-velocity S3, present in the client account
  2. Developers push code modifications on gitlab-modern-application, or modify Tomcat config files on gitlab-server
  3. The pipeline is triggered by CloudWatch due to the new commit
  4. CodeBuild fetches the GitLab sources
  5. The AWS Blu Age Regression Testing Snapshots database is initially created if it does not exist. This step is skipped if the database already exists
  6. CodeBuild fetches the Velocity runtime (.war and .jar files) from the s3-velocity S3
  7. Dependencies are pushed on CodeArtifact. Developers use CodeArtifact to build the application on their Windows EC2
  8. A Docker image of the modernized application is built and pushed on ECR
  9. Sonarqube analyzes the code. This step is only executed on UAT
  10. Artifacts (.war and .jar files) are pushed on the s3-pipelines-artifacts S3 of the client account as a backup
  11. CodeDeploy ECS modifies the app task definition and asks ECS to deploy the new image
  12. The EC2 fetches the application Docker image on the ECR
  13. ECS deploys the new image into the cluster
  14. The application connects to the Blu Age on EC2 SQS queue
  15. The application connects to the AWS Blu Age RTS database
  16. When the pipeline ends, CloudWatch is triggered, and then it triggers a Lambda sending a Slack message on a specific channel
  17. CloudWatch triggers a Lambda function
  18. The Lambda sends a curl request to the Slack webhook for sending a message to the channel of the project team
  19. Developers receive a Slack message with the state of the pipeline
  20. Developers can connect to the application through their Windows EC2 for checking their modification

    More information

  21. gitlab-modern-application contains the modernized application code
  22. gitlab-server contains the config files of Tomcat
  23. s3-velocity contains Velocity binary files (.war and .jar files)