From 2d156aa98f370ffd40a224f5320515888fac3bbf Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Sun, 28 Dec 2025 23:50:10 +0000 Subject: [PATCH] Added Jenskinsfile. --- Jenkinsfile | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..5860086 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,74 @@ +pipeline { + agent { + label 'ubuntu' + } + + environment { + NODE_ENV = 'production' + } + + stages { + stage('Checkout') { + steps { + checkout scm + } + } + + stage('Setup Node.js') { + steps { + nodejs(nodeJSInstallationName: 'Node23') { + sh 'node -v' + sh 'yarn -v' + } + } + } + + stage('Install Dependencies') { + steps { + nodejs(nodeJSInstallationName: 'Node23') { + sh 'yarn install --frozen-lockfile --production=false' + } + } + } + + stage('Deploy via SSH') { + steps { + sshPublisher(publishers: [ + sshPublisherDesc( + configName: 'farmcontrol.tombutcher.local', + transfers: [ + sshTransfer( + cleanRemote: false, + excludes: 'node_modules/**', + execCommand: ''' + cd /opt/farmcontrol-api + yarn install --production + pm2 restart ecosystem.config.js --env production || pm2 start ecosystem.config.js --env production + ''', + execTimeout: 120000, + flatten: false, + makeEmptyDirs: false, + noDefaultExcludes: false, + patternSeparator: '[, ]+', + remoteDirectory: 'farmcontrol-api', + remoteDirectorySDF: false, + removePrefix: '', + sourceFiles: '**/*' + ) + ], + usePromotionTimestamp: false, + useWorkspaceInPromotion: false, + verbose: true + ) + ]) + } + } + } + + post { + always { + cleanWs() + } + } +} +