StackOverFlowException when using matrix jobs

This issue is archived. You can view it, but you can't modify it. Learn more

XMLWordPrintable

      I am currently trying to set up a matrix build and whenever I have an axis with more than one values I run into a StackOverFlowException.

      This is my Pipeline (declarative):

      Comments:

      • I am not sure if customWorkspace will do what I want, that's currently only a try. Does anybody happen to have an idea how to use external-workspace-plugin from declarative pipelines?
      • the pipeline is edited for removing internal information, thus there might be unexpetced syntax issues
      • My feeling is there is a connection with another step used here like credentials or customworkspace because I can remember I've seen arunning pipeline in the past only with temporary workspaces on every build stage so missing all the checked out code. I'm trying to reproduce this and deliver that information later.
      #!groovy
      pipeline {
          agent 
          {
          	node {
      		    label ''
      		    customWorkspace "${JOB_NAME}/workspace"
      		}		    
      	}
          
          options { timestamps () }
          stages {
              stage('Build') {
              	environment {
      		    BUSY_HOME = "${BUSYDIR}"
      		    BUSY_CMD = "${BUSYDIR}\\myBuildSystem.cmd"                    
      		    CVS_CREDENTIALS = credentials('BuildUser')
      		}
              	matrix {
              	    axes {
              	        axis {
              	            name 'PLATFORM'
              	            values 'win32vc9'        	            
              	        }
              	        axis {
              	            name 'MODULE'
              	            values 'repo1/module1', 'repo2/module1'
              	        }
              	        axis {
              	            name 'VARIANT'
              	            values 'debug'      	            
              	        }
              	    }
              	    stages {
              	        stage( 'Checkout' ) {
      				environment {
      				    BUSY_VARIANT = "${VARIANT}"                    
      				    CVS_REPOSITORY = MODULE.substring( 0, MODULE.indexOf('/') )
      				    CVS_PATH = MODULE.substring( MODULE.indexOf('/') + 1 , MODULE.length() )
      				    CVS_CREDENTIALS = credentials('BuildUser')
      	         		}
      		            	steps {
      								checkout changelog: true, poll: true, scm: [$class: 'CVSSCM', canUseUpdate: true, checkoutCurrentTimestamp: false
                      					, cleanOnFailedUpdate: false, disableCvsQuiet: false, forceCleanCopy: false, legacy: false, pruneEmptyDirectories: true
                          				, repositories: [[compressionLevel: -1, cvsRoot: ":pserver:${CVS_CREDENTIALS_USR}@MYCVS/${CVS_REPOSITORY}", excludedRegions: [[pattern: '']]
                          				, password: "${CVS_CREDENTIALS_PSW}", passwordRequired: true, repositoryItems: [[location: [$class: 'HeadRepositoryLocation']
                          				, modules: [[localName: "${CVS_REPOSITORY}/${CVS_PATH}", remoteName: "${CVS_PATH}"]]]]]], skipChangeLog: false]
                          		}
              	        }
              	        stage( 'Build' ) {
      						environment {
      							BUSY_VARIANT = "${VARIANT}"                    
      							CVS_REPOSITORY = MODULE.substring( 0, MODULE.indexOf('/') )
      							CVS_PATH = MODULE.substring( MODULE.indexOf('/') + 1 , MODULE.length() )
      	         			}
      						steps {
                  				bat """					
      						
      								pushd "${MODULE}"
      								call  %BUSY_CMD% BUSY_ROOT:%WORKSPACE% BUSY_PLATFORM:${PLATFORM} r -e default
      								popd"""
      				                recordIssues enabledForFailure: true, sourceCodeEncoding: 'ISO-8859-1',
                      						healthy: 1,
                          					tools: [ msBuild( id: "${MODULE}_${PLATFORM}_${VARIANT}" ) ]
                          		}
              	        }        	        stage( 'Test' ) {
      						environment {
      							BUSY_VARIANT = "${VARIANT}"                    
      							CVS_REPOSITORY = MODULE.substring( 0, MODULE.indexOf('/') )
      							CVS_PATH = MODULE.substring( MODULE.indexOf('/') + 1 , MODULE.length() )
      	         			}
      						steps {
                  				bat """					
      					
      								pushd "${MODULE}"
      								call  %BUSY_CMD% BUSY_ROOT:%WORKSPACE% BUSY_PLATFORM:${PLATFORM} r -e run-test
      								popd"""
      						}
              	        }
              	    }
              	}
              }
          }
          post {
              always {
                  script {
                      def mailbody = '${SCRIPT, template="groovy_html.template"}'
                      def mailsubject = 'Jenkins Build ' + currentBuild.fullDisplayName + ' finished: ' + currentBuild.currentResult
                      emailext attachLog: false, body: mailbody, recipientProviders: [culprits(), brokenTestsSuspects(), brokenBuildSuspects(), upstreamDevelopers()], subject: mailsubject
                  }
              }
          }
      }
      
      

            Assignee:
            Unassigned
            Reporter:
            Christoph Fetzer
            Archiver:
            Jenkins Service Account

              Created:
              Updated:
              Archived: