...
Docker image creation with Dockerfile
Building the application by Gradle build to create a bootable JAR file
Creation a final docker image with the application JAR
Upload the Docker image to the Docker repository (ECR)
Deployment of the new server version to the AWS
Startup of the new version
If the startup succeeds then the new version replaces the old one
Pipelines and configurations
The AWS configuration and deployment is managed by Terraform. It is located in the GitHub repository.
The infrastructure definitions are owned by Martin Wenisch and any changes have to be reviewed by him.
The deployment pipelines (GitHub Actions)
Terraform Apply on Push - triggers the Terraform init
Deploy backend to ECS - uploading the new server version to the Docker repository and trigger a redeploy
Access to logs
We can get a read-only access the AWS CloudWatch. If you need the access please ask Martin Wenisch .
...
The build - we cover main functionality by unit tests (code coverage is available by jacoco plugin in the project)
We have the CI pipeline in the Github Actions executing the project build on each commit.
The tests are part of docker image building, too.
The deployment
The deployment succeeds if the health check passed 3-times.
We have post-deploy tests which validate health check and the API documentation after the deployment itself.