node { env.NODE_ENV = 'production' try { stage('Checkout') { checkout scm } stage('Setup Node.js') { nodejs(nodeJSInstallationName: 'Node23') { sh 'node -v' sh 'npm -v' } } stage('Install Dependencies') { nodejs(nodeJSInstallationName: 'Node23') { sh 'npm ci --include=dev' } } stage('Build') { nodejs(nodeJSInstallationName: 'Node23') { sh 'npm run build' sh 'ls -la build || echo "Build directory not found"' } } stage('Verify Build') { sh 'test -d build || (echo "Build directory does not exist" && exit 1)' } stage('Deploy to printer1') { def remote = [:] remote.name = 'farmcontrolserver' remote.host = 'farmcontrol.tombutcher.local' remote.user = 'ci' remote.password = 'ci' remote.allowAnyHosts = true // Copy the build directory to the remote server sshPut remote: remote, from: 'build/', into: '/srv/farmcontrol-ui/' // Restart the service using sudo sshCommand remote: remote, command: 'sudo /bin/systemctl restart nginx.service' } echo 'Pipeline completed successfully!' } catch (Exception e) { echo 'Pipeline failed!' throw e } finally { cleanWs() } }