Skip to content

Nayrode/CTCD

Repository files navigation

CI-CD-DLP

This repository contains the code for the CI/CD project of the "Industrialisation / CI/CD" course.

Overview

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.

Installation

You can install the application in different environments:

  • Test
  • Development
  • Production

Test Environment

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:

The default credentials for Grafana are:

  • username: admin
  • password: admin

Development Environment

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

Production Environment

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