This repository contains the code for the CI/CD project of the "Industrialisation / CI/CD" course.
This API manages information about cities, such as creating and retrieving city details. The project uses a CI/CD configuration with Github Actions to ensure code quality and continuous integration.
The focus of this project is to create a CI/CD pipeline for a Spring Boot application. The application is a simple API that manages information about cities. The API is built using Spring Boot and uses a PostgreSQL database to store city information.
Currently, the CI/CD pipeline is configured to run the following steps:
- On every push or pull request:
- Check secrets leaks
- Linter
- Tests
- Build Docker image
- Scan for CVEs
- On every release:
- Push Docker image to private Harbor registry
- Push helm chart to private Harbor registry
After the releasing of a new version, the application is deployed in a k3s cluster with argocd.
You can find the API documentation here. The API is deployed on https://ct-cd.fr.
If you want to deploy the application by yourself, you can follow the instructions below.
You can install the application in different environments:
- Test
- Development
- Production
For the test environment, you can use the provided docker-compose file to start the application. The docker-compose file will start the application and a PostgreSQL database.
cp .env.template .env # modify the .env file with your configuration
docker-compose up -d
After starting the application, you can access the different endpoints:
- api: http://localhost:2022
- grafana: http://localhost:3000
- postgres: http://localhost:5432
- prometheus: http://localhost:9090
The default credentials for Grafana are:
- username: admin
- password: admin
For the development environment, you can use the provided docker-compose file to start a PostgreSQL database. And start the application with gradle.
cp .env.template .env # modify the .env file with your configuration
docker-compose up -d db
./gradlew bootRun
if you want run some tests, you can use the following command:
./gradlew test -Dspring.profiles.active=test
For the production environment, you can use the provided helm chart to deploy the application in a k3s cluster.
helm show values oci://registry.razano.dev/ctcd/ctcd > values.yaml
# Modify the values.yaml file with your configuration
helm install oci://registry.razano.dev/ctcd/ctcd ctcd --values values.yaml