Просмотр исходного кода

Push master branch to public repo after successful build

Note that this has to happen outside of the docker container to
work around issues with git and user ids, so we've had to
modify the pipeline to explicitly run the steps inside docker
as needed.
James Allen 9 лет назад
Родитель
Сommit
f0092bc85a
1 измененных файлов с 52 добавлено и 6 удалено
  1. 52 6
      services/web/Jenkinsfile

+ 52 - 6
services/web/Jenkinsfile

@@ -1,11 +1,6 @@
 pipeline {
   
-  agent {
-    docker {
-      image 'node:6.9.5'
-      args "-v /var/lib/jenkins/.npm:/tmp/.npm"
-    }
-  }
+  agent any
   
   environment  {
       HOME = "/tmp"
@@ -18,6 +13,12 @@ pipeline {
   
   stages {
     stage('Set up') {
+      agent {
+        docker {
+          image 'node:6.9.5'
+          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.
@@ -44,7 +45,15 @@ pipeline {
     }
     
     stage('Install') {
+      agent {
+        docker {
+          image 'node:6.9.5'
+          args "-v /var/lib/jenkins/.npm:/tmp/.npm"
+          reuseNode true
+        }
+      }
       steps {
+        sh 'git config --global core.logallrefupdates false'
         sh 'mv app/views/external/robots.txt public/robots.txt'
         sh 'mv app/views/external/googlebdb0f8f7f4a17241.html public/googlebdb0f8f7f4a17241.html'
         sh 'npm install'
@@ -56,24 +65,48 @@ pipeline {
     }
 
     stage('Compile') {
+      agent {
+        docker {
+          image 'node:6.9.5'
+          reuseNode true
+        }
+      }
       steps {
         sh 'node_modules/.bin/grunt compile  --verbose'
       }
     }
 
     stage('Smoke Test') {
+      agent {
+        docker {
+          image 'node:6.9.5'
+          reuseNode true
+        }
+      }
       steps {
         sh 'node_modules/.bin/grunt compile:smoke_tests'
       }
     }
 
     stage('Minify') {
+      agent {
+        docker {
+          image 'node:6.9.5'
+          reuseNode true
+        }
+      }
       steps {
         sh 'node_modules/.bin/grunt compile:minify'
       }
     }
     
     stage('Unit Test') {
+      agent {
+        docker {
+          image 'node:6.9.5'
+          reuseNode true
+        }
+      }
       steps {
         sh 'env NODE_ENV=development ./node_modules/.bin/grunt test:unit --reporter=tap'
       }
@@ -87,6 +120,7 @@ pipeline {
         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}") {
@@ -96,6 +130,18 @@ pipeline {
         }
       }
     }
+    
+    
+    stage('Sync OSS') {
+      when {
+        branch 'master'
+      }
+      steps {
+        sshagent (credentials: ['GIT_DEPLOY_KEY']) {
+          sh 'git push git@github.com:sharelatex/web-sharelatex.git HEAD:ja-oss-test'
+        }
+      }
+    }
   }
   
   post {