You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by wi...@apache.org on 2019/10/14 09:34:44 UTC

[couchdb-fauxton] 02/04: WIP Jenkinsfile

This is an automated email from the ASF dual-hosted git repository.

willholley pushed a commit to branch nodejs-10
in repository https://gitbox.apache.org/repos/asf/couchdb-fauxton.git

commit 09a78643d6762ed72e07bf88d5a6f6df88b8824c
Author: Will Holley <wi...@gmail.com>
AuthorDate: Mon Oct 14 09:37:24 2019 +0100

    WIP Jenkinsfile
---
 Jenkinsfile | 290 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 290 insertions(+)

diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..efb4a5c
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,290 @@
+#!groovy
+//
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+make_packages = '''
+npm install --production && ./node_modules/grunt-cli/bin/grunt couchdb
+'''
+
+pipeline {
+
+  // no top-level agent; agents must be declared for each stage
+  agent {
+    label 'ubuntu'
+  }
+
+  environment {
+    recipient = 'notifications@couchdb.apache.org'
+  }
+
+  options {
+    buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10'))
+    // This fails the build immediately if any parallel step fails
+    parallelsAlwaysFailFast()
+    preserveStashes(buildCount: 10)
+    timeout(time: 3, unit: 'HOURS')
+    timestamps()
+  }
+
+  stages {
+    parallel {
+      stage('FreeBSD') {
+        agent {
+        label 'couchdb && freebsd'
+        }
+        options {
+        skipDefaultCheckout()
+        timeout(time: 90, unit: "MINUTES")
+        }
+        steps {
+        // deleteDir is OK here because we're not inside of a Docker container!
+        deleteDir()
+        sh( script: make_packages )
+        } // steps
+      } // stage FreeBSD
+
+      stage('CentOS 6') {
+        agent {
+          docker {
+            image 'couchdbdev/centos-6-erlang-19.3.6:latest'
+            alwaysPull true
+            label 'ubuntu'
+            // this keeps builds landing on the same host from clashing with each other
+            customWorkspace pwd() + '/centos6'
+          }
+        }
+        options {
+          skipDefaultCheckout()
+          timeout(time: 90, unit: "MINUTES")
+        }
+        environment {
+          platform = 'centos6'
+        }
+        stages {
+          stage('Build') {
+            steps {
+              sh( script: make_packages )
+            }
+          }
+        } // stages
+        post {
+          cleanup {
+            sh 'rm -rf ${WORKSPACE}/*'
+          }
+        } // post
+      } // stage
+
+      stage('CentOS 7') {
+        agent {
+          docker {
+            image 'couchdbdev/centos-7-erlang-19.3.6:latest'
+            alwaysPull true
+            label 'ubuntu'
+            customWorkspace pwd() + '/centos7'
+          }
+        }
+        options {
+          skipDefaultCheckout()
+          timeout(time: 90, unit: "MINUTES")
+        }
+        environment {
+          platform = 'centos6'
+        }
+        stages {
+          stage('Build') {
+            steps {
+              sh( script: make_packages )
+            }
+          }
+        } // stages
+        post {
+          cleanup {
+            sh 'rm -rf ${WORKSPACE}/*'
+          }
+        } // post
+      } // stage
+
+      stage('Ubuntu Xenial') {
+        agent {
+          docker {
+            image 'couchdbdev/ubuntu-xenial-erlang-19.3.6:latest'
+            alwaysPull true
+            label 'ubuntu'
+            customWorkspace pwd() + '/xenial'
+          }
+        }
+        options {
+          skipDefaultCheckout()
+          timeout(time: 90, unit: "MINUTES")
+        }
+        environment {
+          platform = 'centos6'
+        }
+        stages {
+          stage('Build') {
+            steps {
+              sh( script: make_packages )
+            }
+          }
+        } // stages
+        post {
+          cleanup {
+            sh 'rm -rf ${WORKSPACE}/*'
+          }
+        } // post
+      } // stage
+
+      stage('Ubuntu Bionic') {
+        agent {
+          docker {
+            image 'couchdbdev/ubuntu-bionic-erlang-19.3.6:latest'
+            alwaysPull true
+            label 'ubuntu'
+            customWorkspace pwd() + '/bionic'
+          }
+        }
+        options {
+          skipDefaultCheckout()
+          timeout(time: 90, unit: "MINUTES")
+        }
+        environment {
+          platform = 'centos6'
+        }
+        stages {
+          stage('Build') {
+            steps {
+              sh( script: make_packages )
+            }
+          }
+        } // stages
+        post {
+          cleanup {
+            sh 'rm -rf ${WORKSPACE}/*'
+          }
+        } // post
+      } // stage
+
+      stage('Debian Jessie') {
+        agent {
+          docker {
+              image 'couchdbdev/debian-jessie-erlang-19.3.6:latest'
+              alwaysPull true
+              label 'ubuntu'
+              customWorkspace pwd() + '/jessie'
+          }
+        }
+        options {
+          skipDefaultCheckout()
+          timeout(time: 90, unit: "MINUTES")
+        }
+        environment {
+          platform = 'centos6'
+        }
+        stages {
+          stage('Build') {
+            steps {
+              sh( script: make_packages )
+            }
+          }
+        } // stages
+        post {
+          cleanup {
+            sh 'rm -rf ${WORKSPACE}/*'
+          }
+        } // post
+      } // stage
+
+      stage('Debian Stretch x86_64') {
+        agent {
+          docker {
+            image 'couchdbdev/debian-stretch-erlang-19.3.6:latest'
+            alwaysPull true
+            label 'ubuntu'
+            customWorkspace pwd() + '/stretch'
+          }
+        }
+        options {
+          skipDefaultCheckout()
+          timeout(time: 90, unit: "MINUTES")
+        }
+        environment {
+          platform = 'centos6'
+        }
+        stages {
+          stage('Build') {
+            steps {
+              sh( script: make_packages )
+            }
+          }
+        } // stages
+        post {
+          cleanup {
+            sh 'rm -rf ${WORKSPACE}/*'
+          }
+        } // post
+      } // stage
+
+      stage('Debian Stretch aarch64') {
+        agent {
+          docker {
+            image 'couchdbdev/aarch64-debian-stretch-erlang-20.3.8.20:latest'
+            alwaysPull true
+            label 'arm'
+            customWorkspace pwd() + '/arm'
+          }
+        }
+        options {
+          skipDefaultCheckout()
+          timeout(time: 90, unit: "MINUTES")
+        }
+        environment {
+          platform = 'centos6'
+        }
+        stages {
+          stage('Build') {
+            steps {
+              sh( script: make_packages )
+            }
+          }
+        } // stages
+        post {
+          cleanup {
+            sh 'rm -rf ${WORKSPACE}/*'
+          }
+        } // post
+      } // stage
+    } // parallel
+  } // stages
+
+  post {
+    success {
+      mail to: "${env.recipient}",
+        replyTo: "${env.recipient}",
+        subject: "[Jenkins] SUCCESS: ${currentBuild.fullDisplayName}",
+        body: "Yay, we passed. ${env.RUN_DISPLAY_URL}"
+    }
+    unstable {
+      mail to: "${env.recipient}",
+        replyTo: "${env.recipient}",
+        subject: "[Jenkins] SUCCESS: ${currentBuild.fullDisplayName}",
+        body: "Eep! Build is unstable... ${env.RUN_DISPLAY_URL}"
+    }
+    failure {
+      mail to: "${env.recipient}",
+        replyTo: "${env.recipient}",
+        subject: "[Jenkins] FAILURE: ${currentBuild.fullDisplayName}",
+        body: "Boo, we failed. ${env.RUN_DISPLAY_URL}"
+    }
+  }
+} // pipeline