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




