pipeline {
  agent {
    docker {
      image 'node:20' // ✅ Node.js 20 with npm included
    }
  }

  environment {
    IMAGE = "pedw-app"
  }

  stages {
    stage('Install & Build') {
      steps {
        sh 'npm ci'
        sh 'npm run build'
      }
    }

    stage('Build Docker Image') {
      steps {
        sh "docker build -t $REGISTRY/$IMAGE:latest ."
      }
    }

    stage('Push Docker Image') {
      steps {
        withCredentials([usernamePassword(credentialsId: 'dockerhub-credentials', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) {
          sh "echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin"
          sh "docker push $REGISTRY/$IMAGE:latest"
        }
      }
    }

    stage('Deploy to Plesk') {
      steps {
        sshagent(['plesk-ssh-key']) {
          sh """
          ssh root@your-plesk-domain.com '
            docker pull $REGISTRY/$IMAGE:latest &&
            docker stop nextjs-app || true &&
            docker rm nextjs-app || true &&
            docker run -d --restart=always --name nextjs-app -p 3000:3000 $REGISTRY/$IMAGE:latest
          '
          """
        }
      }
    }
  }
}
