CI/CD¶
Le repository utilise GitHub Actions pour la qualite, la securite, Docker, les versions et la documentation.
Vue pipeline¶
flowchart TD
PR[Pull Request vers main] --> Q[quality.yml]
PR --> S[security.yml]
PR --> DCI[docker.yml job docker-ci]
MAIN[Push sur main] --> Q
MAIN --> DCI
MAIN --> DCD[docker.yml job docker-cd]
MAIN --> VULN[docker.yml job image-vuln-scan]
MAIN --> DOCS[docs.yml]
TAG[Push tag v*] --> REL[release.yml]
TAG --> DCD
quality.yml¶
Declencheurs:
workflow_dispatch- push
main - pull request vers
main
Notes de declenchement:
- workflow filtre par chemins applicatifs/tests/quality/workflow
- un changement hors chemins filtres ne declenche pas
quality.yml
Actions:
- restauration + compilation + tests + couverture
- seuils couverture
- SonarQube + attente de la porte de qualite
- verification formatage
- verification derive migrations EF
flowchart LR
B[compilation] --> T[tests]
T --> C[couverture]
C --> SQ[SonarQube]
SQ --> QG[Porte de qualite]
QG --> F[formatage]
F --> M[derive migrations]
security.yml¶
Declencheurs:
- pull request
main - cron hebdomadaire (lundi 03:00 UTC)
Actions:
- revue des dependances (PR)
- CodeQL C#
- scan secrets Gitleaks
docker.yml¶
Declencheurs:
- pull request
main(sur chemins applicatifs/docker) - push
main - push tags
v*
Notes de declenchement:
- workflow filtre par chemins (sources applicatives, Dockerfiles, compose, build props/targets)
- sur
push, publication d'images active (jobsdocker-cdpuisimage-vuln-scan)
Jobs:
docker-ci- compilation des images API et Frontend
docker compose up -d --build- tests de fumee (
/health/readyAPI + disponibilite frontend) docker-cd(sur pushmainou tagsv*)- login GHCR
- buildx multi-architecture (
linux/amd64,linux/arm64) - generation SBOM + provenance
- signature Cosign keyless des images API + Frontend
- push images API + Frontend
image-vuln-scan(sur push)- scan Trivy sur les images publiees
- blocage sur vulnerabilites
HIGH/CRITICAL
release.yml¶
Declencheur:
- push tag
v*
Actions:
- compilation + tests
dotnet publishAPI + Frontend- packaging
.tar.gz - creation d une version GitHub avec artefacts
docs.yml¶
Declencheurs:
- push
mainsur changements docs - execution manuelle
Notes de declenchement:
- filtre
paths:docs/**,mkdocs.yml,.github/workflows/docs.yml
Actions:
- install Python 3.12
- install dependances docs
mkdocs build --strict- upload + deploy GitHub Pages
Dependabot¶
Fichier: .github/dependabot.yml
nuget: weeklygithub-actions: weekly