pipeline {
    agent any

    environment {
        DOCKER_REGISTRY = 'git.v0id.ovh'
        ORGANIZATION = "n3wt-innov"
        APP_NAME = 'n3wt-school'
    }

    // Déclencher uniquement sur les tags
    triggers {
        issueCommentTrigger('.*deploy.*')
    }

    stages {
        stage('Vérification du Tag') {
            when {
                expression { env.TAG_NAME != null }
            }
            steps {
                script {
                    // Extraire la version du tag
                    env.VERSION = env.TAG_NAME
                    echo "Version détectée: ${env.VERSION}"
                }
            }
        }

        stage('Build Docker Images') {
            when {
                expression { env.TAG_NAME != null }
            }
            steps {
                script {
                    // Donner les permissions d'exécution au script
                    sh 'chmod +x ./ci-scripts/makeDocker.sh'

                    // Exécuter le script avec la version
                    sh """
                        ./ci-scripts/makeDocker.sh ${env.VERSION}
                    """
                }
            }
        }

        stage('Push sur Registry') {
            when {
                expression { env.TAG_NAME != null }
            }
            steps {
                script {
                    withCredentials([usernamePassword(
                        credentialsId: 'docker-registry-credentials',
                        usernameVariable: 'REGISTRY_USER',
                        passwordVariable: 'REGISTRY_PASS'
                    )]) {
                        // Login au registry
                        sh "docker login ${DOCKER_REGISTRY} -u ${REGISTRY_USER} -p ${REGISTRY_PASS}"

                        // Push des images
                        sh """
                            docker push ${DOCKER_REGISTRY}/${ORGANIZATION}/${APP_NAME}/frontend:${env.VERSION}
                            docker push ${DOCKER_REGISTRY}/${ORGANIZATION}/${APP_NAME}/backend:${env.VERSION}
                            docker push ${DOCKER_REGISTRY}/${ORGANIZATION}/${APP_NAME}/frontend:latest
                            docker push ${DOCKER_REGISTRY}/${ORGANIZATION}/${APP_NAME}/backend:latest
                        """
                    }
                }
            }
        }
    }

    post {
        success {
            echo "Build et push des images Docker réussis pour la version ${env.VERSION}"
        }
        failure {
            echo "Échec du build ou du push des images Docker"
        }
        always {
            // Nettoyage
            sh 'docker system prune -f'
        }
    }
}