Jenkinsfile: refactor to build assemblies in separate nodes and assemble them 
in one node that has no checkout at all


Project: http://git-wip-us.apache.org/repos/asf/logging-log4net/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4net/commit/2d7af0ed
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4net/tree/2d7af0ed
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4net/diff/2d7af0ed

Branch: refs/heads/develop
Commit: 2d7af0eda0e3eda39e1477fb3160aa994830343d
Parents: 42b7d58
Author: Dominik Psenner <[email protected]>
Authored: Mon Jul 3 14:11:29 2017 +0200
Committer: Dominik Psenner <[email protected]>
Committed: Mon Jul 3 14:11:29 2017 +0200

----------------------------------------------------------------------
 Jenkinsfile | 72 +++++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 51 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/2d7af0ed/Jenkinsfile
----------------------------------------------------------------------
diff --git a/Jenkinsfile b/Jenkinsfile
index 44defa0..bc4cb99 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -21,15 +21,12 @@ pipeline {
        options {
                timeout(time: 1, unit: 'HOURS')
        }
-       agent { label 'Windows' }
-       tools {
-               maven 'Maven 3.3.9 (Windows)'
-               jdk 'JDK 1.8 (latest)'
-       }
-       environment {
-               // TODO: find a better way to determine nant installation path
-               NAnt = 'F:\\jenkins\\tools\\nant\\nant-0.92\\bin\\NAnt.exe'
+       agent {
+               label 'ubuntu'
+               skipDefaultCheckout()
        }
+       // TODO: find a better way to determine nant installation path
+       def NANT = 'F:\\jenkins\\tools\\nant\\nant-0.92\\bin\\NAnt.exe'
        stages {
                stage('checkout') {
                        steps {
@@ -37,18 +34,33 @@ pipeline {
                        }
                }
                stage('build net-4.0') {
+                       agent { label 'Windows' }
+                       environment {
+                               NANT_BIN = NANT
+                       }
                        steps {
-                               bat "${NAnt} -buildfile:log4net.build 
compile-net-4.0"
+                               bat "${NANT_BIN} -buildfile:log4net.build 
compile-net-4.0"
+                               stash includes: 'bin/**/*.*', name 
'net-4.0-assemblies'
                        }
                }
                stage('build net-4.0-cp') {
+                       agent { label 'Windows' }
+                       environment {
+                               NANT_BIN = NANT
+                       }
                        steps {
-                               bat "${NAnt} -buildfile:log4net.build 
compile-net-4.0-cp"
+                               bat "${NANT_BIN} -buildfile:log4net.build 
compile-net-4.0-cp"
+                               stash includes: 'bin/**/*.*', name 
'net-4.0-cp-assemblies'
                        }
                }
                stage('build net-4.5') {
+                       agent { label 'Windows' }
+                       environment {
+                               NANT_BIN = NANT
+                       }
                        steps {
-                               bat "${NAnt} -buildfile:log4net.build 
compile-net-4.5"
+                               bat "${NANT_BIN} -buildfile:log4net.build 
compile-net-4.5"
+                               stash includes: 'bin/**/*.*', name 
'net-4.5-assemblies'
                        }
                }
                stage('build mono-2.0') {
@@ -87,22 +99,40 @@ pipeline {
                                stash includes: 'bin/**/*.*', name: 
'mono-4.0-assemblies'
                        }
                }
-               stage('prepare package') {
-                       steps {
-                               unstash 'mono-2.0-assemblies'
-                               unstash 'mono-3.5-assemblies'
-                               unstash 'mono-4.0-assemblies'
-                       }
-               }
                stage('build site') {
+                       agent { label 'Windows' }
+                       tools {
+                               maven 'Maven 3.3.9 (Windows)'
+                               jdk 'JDK 1.8 (latest)'
+                       }
+                       environment {
+                               NANT_BIN = NANT
+                       }
                        steps {
-                               bat "${NAnt} -buildfile:log4net.build 
generate-site"
+                               bat "${NANT_BIN} -buildfile:log4net.build 
generate-site"
+                               stash includes: 'target/site-deploy/**/*.*', 
name: 'site'
                        }
                }
                // TODO: testing needs to be refactored
                stage('test on Windows') {
+                       agent { label 'Windows' }
+                       environment {
+                               NANT_BIN = NANT
+                       }
+                       steps {
+                               bat "${NANT_BIN} -buildfile:tests\\nant.build"
+                               // TODO: stash test results
+                       }
+               }
+               stage('prepare package') {
                        steps {
-                               bat "${NAnt} -buildfile:tests\\nant.build"
+                               unstash 'net-4.0-assemblies'
+                               unstash 'net-4.0-cp-assemblies'
+                               unstash 'net-4.5-assemblies'
+                               unstash 'mono-2.0-assemblies'
+                               unstash 'mono-3.5-assemblies'
+                               unstash 'mono-4.0-assemblies'
+                               unstash 'site'
                        }
                }
                stage('deploy site') {
@@ -116,7 +146,7 @@ pipeline {
        }
        post {
                always {
-                       archive 'bin/**/*.*'
+                       archive '**/*.*'
                }
                failure {
                        step([$class: 'Mailer', notifyEveryUnstableBuild: 
false, recipients: '[email protected]'])

Reply via email to