diff --git a/services/document-updater/Jenkinsfile b/services/document-updater/Jenkinsfile index a2150d086b..a1852639b1 100644 --- a/services/document-updater/Jenkinsfile +++ b/services/document-updater/Jenkinsfile @@ -1,51 +1,47 @@ pipeline { + + agent any - agent { - docker { - image 'node:4.2.6' - args "-v /var/lib/jenkins/.npm:/tmp/.npm" - } - } - - environment { - HOME = "/tmp" - } - triggers { pollSCM('* * * * *') cron('@daily') } stages { - stage('Set up') { + stage('Install') { + agent { + docker { + image 'node:4.2.1' + args "-v /var/lib/jenkins/.npm:/tmp/.npm -e HOME=/tmp" + reuseNode true + } + } steps { // we need to disable logallrefupdates, else git clones during the npm install will require git to lookup the user id // which does not exist in the container's /etc/passwd file, causing the clone to fail. sh 'git config --global core.logallrefupdates false' - } - } - stage('Install') { - steps { sh 'rm -fr node_modules' - sh 'npm install' - sh 'npm rebuild' + sh 'npm install && npm rebuild' sh 'npm install --quiet grunt-cli' } } - stage('Compile') { + stage('Compile and Test') { + agent { + docker { + image 'node:4.2.1' + reuseNode true + } + } steps { sh 'node_modules/.bin/grunt compile' - } - } - stage('Test') { - steps { + // sh 'node_modules/.bin/grunt compile:acceptance_tests' sh 'NODE_ENV=development node_modules/.bin/grunt test:unit' } } stage('Acceptance Tests') { steps { - echo "TODO - Run Acceptance Tests" - //sh 'docker run -v "$(pwd):/app" --rm sl-acceptance-test-runner' + sh 'docker pull sharelatex/acceptance-test-runner' + sh 'docker run --rm -v $(pwd):/app sharelatex/acceptance-test-runner' } } stage('Package') { @@ -62,21 +58,21 @@ pipeline { } } } - + post { failure { - mail(from: "${EMAIL_ALERT_FROM}", - to: "${EMAIL_ALERT_TO}", + mail(from: "${EMAIL_ALERT_FROM}", + to: "${EMAIL_ALERT_TO}", subject: "Jenkins build failed: ${JOB_NAME}:${BUILD_NUMBER}", body: "Build: ${BUILD_URL}") } } - + // The options directive is for configuration that applies to the whole job. options { // we'd like to make sure remove old builds, so we don't fill up our storage! buildDiscarder(logRotator(numToKeepStr:'50')) - + // And we'd really like to be sure that this build doesn't hang forever, so let's time it out after: timeout(time: 30, unit: 'MINUTES') }