This repository holds two code bases:
- Application, developed by a software team
- Control plane, that allows easy deployments of the application
Main focus is to provide the development team strong CI:
- Secure
- Flexible
- Highly automated
- Fast
Push to main | Push on other branches | Pull requests | |
---|---|---|---|
Gitleaks | ✅ | ✅ | ✅ |
Code linter | ✅ | ||
Build docker image | ✅ | ✅ | ✅ |
Push image to Docker Hub | ✅ | ✅ | |
Scan image before pushing | ✅ | ✅ | |
Unit tests | ✅ | ✅ | |
Feature tests | ✅ | ✅ | |
Static code analysis | ✅ | ✅ | |
Sonar Cloud analysis | ✅ | ✅ | |
Database migrations | ✅ | ✅ | |
Check code coverage | ✅ | ✅ | |
Store code coverage report | ✅ | ||
Deploy to minikube | ✅ | ✅ |
Example with leaked api key:
Notification in slack:
The control plane allow us to easily create instances of our application on demand through a user-friendly interface. The software development life cycle looks like this:
graph TD;
A[New application feature]
--> B[Feature branch]
B --> |branch-builds.yaml| V
B --> |pull-requests.yaml| C[Pull request to main]
C --> |main-branch-build.yaml| Z
Z[Main branch]
Z --> X
X(docker_image:main)
V(docker_image:branch)
K[Docker Hub]
V --> K
X --> K
N[Control Plane]
K --> N
M[Deployment]
L[Deployment]
P[Deployment]
N --> M
N --> L
N --> P
$ minikube start
$ kubectl apply -f /master/k8s