From 6a28368bebb028df178f2ac2b734c2a3d918d13d Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Tue, 14 Mar 2017 16:59:09 +0100 Subject: [PATCH] Add a Jenkinsfile so Cura will be tested on CI --- Jenkinsfile | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000..a324a79471 --- /dev/null +++ b/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.']) + } +}