From 266fbd0e6de4e193aa92fd32b1e1fe0d53701041 Mon Sep 17 00:00:00 2001 From: Joe Green Date: Fri, 11 Aug 2017 14:28:45 +0100 Subject: [PATCH 1/3] Create Jenkinsfile --- services/spelling/Jenkinsfile | 77 +++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 services/spelling/Jenkinsfile diff --git a/services/spelling/Jenkinsfile b/services/spelling/Jenkinsfile new file mode 100644 index 0000000000..3ff5b3ffd3 --- /dev/null +++ b/services/spelling/Jenkinsfile @@ -0,0 +1,77 @@ +pipeline { + + agent { + docker { + image 'node:4.2.1' + args "-v /var/lib/jenkins/.npm:/tmp/.npm" + } + } + + environment { + HOME = "/tmp" + } + + triggers { + pollSCM('* * * * *') + cron('@daily') + } + + stages { + stage('Set up') { + 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 --quiet grunt-cli' + } + } + stage('Compile') { + steps { + sh 'node_modules/.bin/grunt install' + } + } + stage('Test') { + steps { + sh 'node_modules/.bin/grunt test:unit --timeout 10000' + } + } + stage('Package') { + steps { + sh 'touch build.tar.gz' // Avoid tar warning about files changing during read + sh 'tar -czf build.tar.gz --exclude=build.tar.gz --exclude-vcs .' + } + } + stage('Publish') { + steps { + withAWS(credentials:'S3_CI_BUILDS_AWS_KEYS', region:"${S3_REGION_BUILD_ARTEFACTS}") { + s3Upload(file:'build.tar.gz', bucket:"${S3_BUCKET_BUILD_ARTEFACTS}", path:"${JOB_NAME}/${BUILD_NUMBER}.tar.gz") + } + } + } + } + + post { + failure { + 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') + } +} From 094f3b0168246d3dc6f12c19f5da0fa432244cab Mon Sep 17 00:00:00 2001 From: Joe Green Date: Fri, 11 Aug 2017 14:33:57 +0100 Subject: [PATCH 2/3] use node 6.9.5 --- services/spelling/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/spelling/Jenkinsfile b/services/spelling/Jenkinsfile index 3ff5b3ffd3..aaeff68dda 100644 --- a/services/spelling/Jenkinsfile +++ b/services/spelling/Jenkinsfile @@ -2,7 +2,7 @@ pipeline { agent { docker { - image 'node:4.2.1' + image 'node:6.9.5' args "-v /var/lib/jenkins/.npm:/tmp/.npm" } } From b1b0acc4b3c89e7008bb6c0f1924f79fdccf22c2 Mon Sep 17 00:00:00 2001 From: Joe Green Date: Mon, 14 Aug 2017 09:14:13 +0100 Subject: [PATCH 3/3] use aspell utility image --- services/spelling/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/spelling/Jenkinsfile b/services/spelling/Jenkinsfile index aaeff68dda..57cfb2a0b8 100644 --- a/services/spelling/Jenkinsfile +++ b/services/spelling/Jenkinsfile @@ -2,7 +2,7 @@ pipeline { agent { docker { - image 'node:6.9.5' + image 'sharelatex/node-aspell:6.9.5' args "-v /var/lib/jenkins/.npm:/tmp/.npm" } }