Browse Source

Add a Jenkinsfile so Cura will be tested on CI

Arjen Hiemstra 8 years ago
parent
commit
6a28368beb
1 changed files with 39 additions and 0 deletions
  1. 39 0
      Jenkinsfile

+ 39 - 0
Jenkinsfile

@@ -0,0 +1,39 @@
+parallel_nodes(['linux && cura', 'windows && cura']) {
+    // Prepare building
+    stage('Prepare') {
+        // Ensure we start with a clean build directory.
+        step([$class: 'WsCleanup'])
+
+        // Checkout whatever sources are linked to this pipeline.
+        checkout scm
+    }
+
+    // If any error occurs during building, we want to catch it and continue with the "finale" stage.
+    catchError {
+        // Building and testing should happen in a subdirectory.
+        dir('build') {
+            // Perform the "build". Since Uranium is Python code, this basically only ensures CMake is setup.
+            stage('Build') {
+                // Ensure CMake is setup. Note that since this is Python code we do not really "build" it.
+                cmake("..", "-DCMAKE_PREFIX_PATH=${env.CURA_ENVIRONMENT_PATH} -DCMAKE_BUILD_TYPE=Release -DURANIUM_SCRIPTS_DIR=")
+            }
+
+            // Try and run the unit tests. If this stage fails, we consider the build to be "unstable".
+            stage('Unit Test') {
+                try {
+                    make('test')
+                } catch(e) {
+                    currentBuild.result = "UNSTABLE"
+                }
+            }
+        }
+    }
+
+    // Perform any post-build actions like notification and publishing of unit tests.
+    stage('Finalize') {
+        // Publish the test results to Jenkins.
+        junit 'build/junit*.xml'
+
+        notify_build_result(env.CURA_EMAIL_RECIPIENTS, '#cura-dev', ['master', '2.'])
+    }
+}