🏗️ Documentation CI/CD ScribeJava
Ce document détaille l'infrastructure de Continuous Integration (CI) et Continuous Delivery (CD) de ScribeJava v9.4.4+. Notre pipeline est conçu pour garantir la règle Zéro-Dépendance et la stabilité sur une matrice de 5 versions de JDK.
1. Vue d'ensemble de l'Architecture "Zero-Touch"
Le pipeline sépare strictement la préparation humaine (Local) de la certification et distribution industrielle (Cloud).
graph TD
subgraph Local ["💻 Poste Développeur (LOCAL)"]
Trigger["make release"] --> CertPre["ci-local.sh: Multi-JDK Docker"]
CertPre --> DocLint["Audit Markdown & Liens"]
DocLint --> Bump["release-it: Bump SemVer & Tag Git"]
Bump --> Push["git push master + tags"]
end
subgraph Cloud ["☁️ GitHub Actions (CLOUD)"]
Push --> MavenCI["Workflow: maven.yml"]
MavenCI --> GHDocLint["Audit Markdown & Liens"]
subgraph CertificationMatrix ["🧪 Matrice de Certification"]
MavenCI --> JDK8["JDK 8"]
MavenCI --> JDK11["JDK 11"]
MavenCI --> JDK17["JDK 17"]
MavenCI --> JDK21["JDK 21"]
MavenCI --> JDK25["JDK 25"]
end
JDK8 & JDK11 & JDK17 & JDK21 & JDK25 & GHDocLint --> Success{"Tests OK ?"}
Success -- "Oui" --> Publish["release-it: GitHub Release + JARs"]
Success -- "Non" --> Abort["❌ Release bloquée"]
end
style Local fill:#f9f,stroke:#333,stroke-width:2px
style Cloud fill:#bbf,stroke:#333,stroke-width:2px
2. Standardisation et Maintenance
L'intégrité du projet est maintenue par des processus automatisés :
-
Zero-Dependency Enforcement : Le plugin
maven-enforcerbloque le build si une dépendance interdite (Jackson, Nimbus, org.json) est détectée au runtime. -
Pure Java Certification : Depuis la v9.4.4, le module
integration-helpersest certifié sans aucune dépendance de logging (retrait de SLF4J), garantissant une portabilité totale sans conflit de classpath. -
Dependabot : Surveillance hebdomadaire des vulnérabilités.
3. Cycle de Release Industrielle (release-it)
Nous utilisons release-it comme moteur unique pour garantir un versionnage sémantique (SemVer) sans erreur humaine.
Le Triple Verrou de Sécurité
-
Verrou Local : Le développeur doit exécuter
make certify(ou./ci-local.sh) avant la release. Si un test échoue sur l'un des 5 JDKs, le processus doit être corrigé avant de lancer la commandemake release. -
Verrou Cloud : Le workflow
maven.ymlré-exécute l'intégralité de la matrice sur les serveurs GitHub pour audit. -
Verrou de Publication : La commande
release-it --github.releasen'est invoquée que si les tests cloud sont un succès total.
4. Documentation et Artefacts "Premium DX"
-
Javadoc Automatisée (
maven.yml- jobdeploy-docs) : Publication continue sur GitHub Pages. -
JARs Unifiés : Les JARs de distribution incluent les
.class, les sources et la documentation agrégée. -
Typed Builders : Les builders OIDC retournent désormais nativement le type
OidcService, éliminant lesClassCastExceptionet améliorant l'expérience développeur.
5. Matrice de Certification multi-JDK
Le script ci-local.sh est le garant de la robustesse :
sequenceDiagram
participant M as Makefile
participant S as ci-local.sh
participant D as "Docker Engine"
participant J as "JDK Containers (8-25)"
M->>S: Lancer certification
S->>D: Build images (Isolées)
par JDK 8
S->>D: run container (JDK 8)
D->>J: mvn test
J-->>S: Exit Code 0
and JDK 11 to 25
S->>D: run container (JDK 11-25)
D->>J: mvn test
J-->>S: Exit Code 0
end
S-->>M: Résultat Global (Certifié)
Dernière mise à jour : Mars 2026 - Certifié Enterprise Edition v9.4.4 ✅