pipeline {
    agent any

    environment {
        APP_NAME = 'sample-nodejs-app'
        DOCKER_IMAGE = "test-cicd/${APP_NAME}:${env.BUILD_NUMBER}"
    }

    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }

        stage('Install Dependencies') {
            steps {
                dir('code/sample-nodejs-app') {
                    sh 'npm install'
                }
            }
        }

        stage('Test') {
            steps {
                dir('code/sample-nodejs-app') {
                    sh 'npm test'
                }
            }
        }

        stage('Build Docker Image') {
            steps {
                dir('code/sample-nodejs-app') {
                    sh "docker build -t ${APP_NAME}:latest ."
                }
            }
        }

        stage('Push to Registry') {
            steps {
                echo 'Pushing image to registry...'
                // sh "docker tag ${APP_NAME}:latest ${DOCKER_IMAGE}"
                // sh "docker push ${DOCKER_IMAGE}"
            }
        }

        stage('Deploy to K8s') {
            steps {
                echo 'Deploying to Kubernetes...'
                // sh "kubectl set image deployment/${APP_NAME} ${APP_NAME}=${DOCKER_IMAGE}"
            }
        }
    }

    post {
        always {
            cleanWs()
        }
        success {
            echo 'Pipeline completed successfully!'
        }
        failure {
            echo 'Pipeline failed!'
        }
    }
}
