gonito-frontend/Jenkinsfile
2022-10-24 09:18:35 +02:00

74 lines
1.8 KiB
Groovy

pipeline {
agent {
docker {
image 'node:19-bullseye-slim'
}
}
environment {
// ensure production environmental variable are present
CI = 'true'
NODE_ENV = 'production'
// set NPM parameters
HOME = '.'
NPM_CONFIG_CACHE = 'npm_cache'
}
stages {
stage('Build') {
steps {
//sh 'npm install --loglevel=verbose'
sh 'npm install'
sh 'npm clean-install --only=production'
sh 'npm run build'
}
}
stage('Package') {
steps {
// due to involved path processing of sshPublisher it's easier to pack everything into an archive
sh 'cd build && tar cf ../build.tar.xz .'
}
}
stage('SSH-publish-transfer') {
steps {
sshPublisher(
continueOnError: false,
failOnError: true,
publishers: [
sshPublisherDesc(
configName: "mprill-gonito-front-dev",
transfers: [sshTransfer(
remoteDirectory: 'public_html',
// ensure clean deployment by deleting everything in remote directory
cleanRemote: true,
// transfer archive
sourceFiles: 'build.tar.xz',
// unpack archive and clean up
execCommand: 'tar xf public_html/build.tar.xz -C public_html && rm public_html/build.tar.xz'
)],
verbose: true
)
]
)
}
}
stage('SSH-publish-permissions') {
steps {
sshPublisher(
continueOnError: false,
failOnError: true,
publishers: [
sshPublisherDesc(
configName: "mprill-gonito-front-dev",
transfers: [sshTransfer(
// set proper permissions required for hosting
execCommand: 'chmod -R o+rX public_html'
)],
verbose: true
)
]
)
}
}
}
}