#!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/module2'
}
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
}
}
}
}