diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 00000000..0bf90ee6 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,46 @@ +pipeline { + agent any + + 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 + ' + """ + } + } + } + } +}