pipeline { agent any environment { PATH = "/var/jenkins_home/bin:${env.PATH}" } stages { stage('Clone') { steps { echo '✅ Code cloné depuis Gitea' } } stage('SonarQube Analysis') { steps { withSonarQubeEnv('sonarqube') { withEnv(["PATH+SONAR=${tool 'sonar-scanner'}/bin"]) { sh ''' sonar-scanner \ -Dsonar.projectKey=datalab-lite \ -Dsonar.projectName="Datalab Lite" \ -Dsonar.sources=. \ -Dsonar.inclusions="**/*.py" \ -Dsonar.python.version=3.11 ''' } } } } stage('Quality Gate') { steps { waitForQualityGate abortPipeline: false } } stage('Update ConfigMaps') { steps { sh ''' kubectl create configmap datalab-lite-code \ --from-file=main.py=main.py \ --from-file=k8s.py=k8s.py \ --from-file=minio_client.py=minio_client.py \ -n datalab-lite \ --dry-run=client -o yaml | kubectl apply -f - kubectl create configmap datalab-lite-templates \ --from-file=index.html=templates/index.html \ -n datalab-lite \ --dry-run=client -o yaml | kubectl apply -f - echo "✅ ConfigMaps mis à jour" ''' } } stage('ArgoCD Sync') { steps { sh ''' kubectl annotate deployment datalab-lite \ -n datalab-lite \ argocd.argoproj.io/refresh="hard" \ --overwrite sleep 15 kubectl rollout restart deployment datalab-lite -n datalab-lite echo "✅ ArgoCD sync déclenché" ''' } } } post { success { echo '✅ Pipeline terminé — ArgoCD synchronisé ✅' } failure { echo '❌ Pipeline échoué !' } } }