#!/usr/bin/env groovy String BASE_REMOTE_PATH = "//home/devops" String APP_REMOTE_PATH = "//mnt/docker-storage/containers/savefamily/sf-nfc-server" pipeline { agent any tools { nodejs "22.15.0" } environment { GENERAL_CHANGES = "false" } stages { stage('📦 Install dependencies') { steps { sh 'npm install' } } stage("🧱 Building") { steps { sh 'npm run build:esbuild' } } stage("🏗 Deploying") { steps { sshPublisher( publishers: [ sshPublisherDesc( verbose: true, configName: "Save Family", transfers: [ sshTransfer( cleanRemote: false, execCommand: "mkdir -p $APP_REMOTE_PATH" ), sshTransfer( cleanRemote: false, execCommand: "ln -sf $BASE_REMOTE_PATH/vault/savefamily/sf-nfc-server/.env $APP_REMOTE_PATH/.env" ), sshTransfer( cleanRemote: false, remoteDirectory: "$APP_REMOTE_PATH", sourceFiles: "dist/**/*", excludes: "dist/**/node_modules/**" ), sshTransfer( cleanRemote: false, remoteDirectory: "$APP_REMOTE_PATH", sourceFiles: "docs/**/*", ), sshTransfer( cleanRemote: false, remoteDirectory: "$APP_REMOTE_PATH", sourceFiles: "deployment/database/**/*", removePrefix: "deployment", ), sshTransfer( cleanRemote: false, remoteDirectory: "$APP_REMOTE_PATH", sourceFiles: "deployment/develop/docker/**/*", removePrefix: "deployment/develop/docker", ), sshTransfer( cleanRemote: false, remoteDirectory: "$APP_REMOTE_PATH", sourceFiles: "package.json", ), sshTransfer( cleanRemote: false, remoteDirectory: "$APP_REMOTE_PATH", sourceFiles: "package-lock.json", ), sshTransfer( cleanRemote: false, remoteDirectory: "$APP_REMOTE_PATH", sourceFiles: "build.develop.sh", ), sshTransfer( cleanRemote: false, execCommand: "sh $APP_REMOTE_PATH/build.develop.sh" ) ] ) ] ) } } } post { failure { echo '👎🏼 Processing failed' } success { echo '👍🏼 Processing success' } } }