diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..84f1663 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,46 @@ +pipeline { + agent any + + environment { + VERSION = VersionNumber([ + versionNumberString: + '${BUILDS_ALL_TIME}', + versionPrefix: '1.0.', + worstResultForIncrement: 'SUCCESS' + ]) + publish = 0 + } + + stages { + stage('Setup') { + steps { + echo 'Setting up test environment' + sh 'npm ci' + sh 'nodejs jenkins.js ${VERSION}' + script { + currentBuild.displayName = env.VERSION + } + } + } + stage('Testing') { + steps { + echo 'Running tests...' + sh 'npm test' + } + } + } + post { + success { + script { + publish = sh script: "git log -1 | grep '\\[no publish\\]'", returnStatus: true + if (publish != 0) { + echo 'Deploying' + sh 'npm publish' + } else { + echo 'Build successful, Commit not marked for deploying' + currentBuild.result = "UNSTABLE" + } + } + } + } +} diff --git a/jenkins.js b/jenkins.js new file mode 100644 index 0000000..78f16c5 --- /dev/null +++ b/jenkins.js @@ -0,0 +1,5 @@ +const fs = require('fs') + +const pkg = JSON.parse(fs.readFileSync('package.json', 'utf-8')) +pkg.version = process.argv[2] +fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2))