You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

210 lines
9.0 KiB

def Targets = ['Internal', 'External']
def ToolSets = ['VS2003', 'VS2010' ]
def BaseDir = "MOULOpenSourceClientPlugin"
def PlasmaDir = "${BaseDir}\\Plasma20"
def SCMBranches = [
CWE: '*/master',
LOCALDATA: '*/rarified/vs-multitool'
]
def ToolSetParams = [
VS2003: [
INIT: "C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Common7\\Tools\\vsvars32.bat",
SLN: "${PlasmaDir}\\MsDevProjects\\Plasma\\Apps\\AllClient\\AllClient-ou.sln",
ARTIFACTDIR: "MsDevProjects",
ARTIFACTPATH: "${PlasmaDir}\\MsDevProjects",
SDKPATH: "${BaseDir}\\StaticSDKs",
CL: [
Internal: "/DBUILD_TYPE=BUILD_TYPE_DEV /DNET_LOGGING=1 /DMINKATA_BUILD_NUMBER=${BUILD_NUMBER}",
External: "/DPLASMA_EXTERNAL_RELEASE /DBUILD_TYPE=BUILD_TYPE_LIVE /DMINKATA_BUILD_NUMBER=${BUILD_NUMBER}"
],
CONF: [
Internal: "Release",
External: "Release"
]
],
VS2010: [
INIT: "C:\\Program Files\\Microsoft Visual Studio 10.0\\vc\\vcvarsall.bat",
SLN: "${PlasmaDir}\\MSVC10Projects\\Plasma\\Apps\\AllClient\\AllClient.sln",
ARTIFACTDIR: "MSVC10Projects",
ARTIFACTPATH: "${PlasmaDir}\\MSVC10Projects",
SDKPATH: "${BaseDir}\\StaticSDKs",
CL: [
Internal: "/DBUILD_TYPE=BUILD_TYPE_DEV /DNET_LOGGING=1 /DMINKATA_BUILD_NUMBER=${BUILD_NUMBER}",
External: "/DPLASMA_EXTERNAL_RELEASE /DBUILD_TYPE=BUILD_TYPE_LIVE /DMINKATA_BUILD_NUMBER=${BUILD_NUMBER}"
],
CONF: [
Internal: "Release_Internal",
External: "Release"
]
]
]
pipeline {
options {
timestamps()
}
agent { node { label 'master' } }
stages {
// Assemble workspace on master node
stage('SCM') {
steps {
// Main checkout
checkout scm: [$class: 'GitSCM', branches: [[name: SCMBranches['CWE']]],
extensions: [[$class: 'WipeWorkspace']],
userRemoteConfigs: [[credentialsId: '505fdcbf-cd4c-488b-95d9-2bf2cc346ced',
url: 'https://foundry.openuru.org/gitblit/r/CWE-ou-minkata']]]
// Localdata checkout
checkout changelog: false,
poll: false,
scm: [$class: 'GitSCM', branches: [[name: SCMBranches['LOCALDATA']]],
extensions: [[$class: 'WipeWorkspace'],
[$class: 'RelativeTargetDirectory', relativeTargetDir: 'LocalData'],
[$class: 'CleanBeforeCheckout', deleteUntrackedNestedRepositories: true],
[$class: 'IgnoreNotifyCommit']],
userRemoteConfigs: [[credentialsId: '505fdcbf-cd4c-488b-95d9-2bf2cc346ced',
url: 'https://foundry.openuru.org/gitblit/r/Foundry/LocalData-CWE-ou']]]
// Merge Localdata to correct place in main tree
sh label: 'Copy Repository StaticSDKs to VS2003 specific SDK directory for merge',
script: "cd ${BaseDir}; /opt/gnu/bin/cp -rp StaticSDKs StaticSDKs-VS2003"
sh label: 'Copy Repository StaticSDKs to VS2010 specific SDK directory for merge',
script: "cd ${BaseDir}; /opt/gnu/bin/mv StaticSDKs StaticSDKs-VS2010"
sh label: 'Merge LocalData',
script: "/opt/gnu/bin/cp -rlf LocalData/* ${BaseDir}/."
}
}
// Patch for Minkata
stage ('Patch') {
steps {
sh script: '/opt/gnu/bin/patch -p1 --ignore-whitespace --remove-empty-files --verbose < LocalData/Minkata/minkata-local-000.patch.dos'
}
}
// Stash workspace for copy to slave node(s)
stage ('Stash Initialized Workspace') {
steps {
stash name: 'CWE-ou Sources',
includes: "LICENSE.txt,*.bat,${BaseDir}/**",
excludes: '**/DX9.0c*/Developer*/**,**/DX9.0c*/Documentation/**,**/DX9.0c*/Samples/**,**/DX9.0c*/Utilities/**'
}
}
// Compile on Windows node
stage ('Compile') {
matrix {
agent { node { label 'win2k3' } }
axes {
axis {
name 'ToolSet'
values 'VS2003', 'VS2010'
}
axis {
name 'BuildType'
values 'Internal', 'External'
}
}
stages {
// set up workspace on slave
stage ('Unstash Workspace') {
steps {
withEnv([
"ARTIFACTPATH=${ToolSetParams[ToolSet]['ARTIFACTPATH']}",
"BUILDSDKPATH=${BaseDir}\\StaticSDKs"
]) {
bat script: "if exist %ARTIFACTPATH% rd /s/q %ARTIFACTPATH%"
unstash name: 'CWE-ou Sources'
bat script: "if exist %BUILDSDKPATH% rd /s/q %BUILDSDKPATH%"
}
}
}
stage ('Customize for ToolSet') {
steps {
withEnv([
"PATCHFILE_VS2010=${BaseDir}\\Minkata\\minkata-local-001.patch"
]) {
bat script: "ren ${BaseDir}\\StaticSDKs-${ToolSet} StaticSDKs"
bat script: 'if %ToolSet%==VS2010 if exist "%PATCHFILE_VS2010%" "%PATCH_EXE%" -p1 --ignore-whitespace --binary --verbose < "%PATCHFILE_VS2010%"'
}
}
}
stage ('Compile {ToolSet}x{BuildType}') {
steps {
logParser useProjectRule: false,
projectRulePath: 'cwe-log.rules',
parsingRulesPath: 'cwe-log.rules',
showGraphs: true
withEnv([
"CL=${ToolSetParams[ToolSet]['CL'][BuildType]}",
"CONF=${ToolSetParams[ToolSet]['CONF'][BuildType]}",
"INIT=${ToolSetParams[ToolSet]['INIT']}",
"SLN=${ToolSetParams[ToolSet]['SLN']}",
]) {
bat script: '''
call "%INIT%"
REM Prevent runaway VS2010 builds
set NUMBER_OF_PROCESSORS=2
set
REM SET CL=%CL% /d1reportallclasslayout
devenv.com %SLN% /build %CONF%
'''
}
}
}
// Stash cell-specific artifacts to merge for archival
stage ('Stash Artifacts') {
steps {
withEnv([
"ARTIFACTPATH=${ToolSetParams[ToolSet]['ARTIFACTPATH']}",
"SDKPATH=${ToolSetParams[ToolSet]['SDKPATH']}"
]) {
bat script: "if exist %ARTIFACTPATH%-${ToolSet}-${BuildType} rd /s/q %ARTIFACTPATH%-${ToolSet}-${BuildType}"
bat script: "move %ARTIFACTPATH% %ARTIFACTPATH%-${ToolSet}-${BuildType}"
stash name: "CWE-ou Artifacts ${ToolSet}-${BuildType}",
includes: "${ARTIFACTPATH}-${ToolSet}-${BuildType}/Plasma/**,${SDKPATH}/StaticSDKs/**"
}
}
}
}
}
}
stage('Unstash Build Artifacts') {
steps {
script {
for (buildtype in Targets) {
for (toolset in ToolSets) {
unstash name: "CWE-ou Artifacts ${toolset}-${buildtype}"
}
}
}
}
}
stage('Archive Artifacts') {
steps {
dir (BaseDir) {
archiveArtifacts artifacts: "Plasma20/MsDevProjects*/**/Release*/*,"+
"Plasma20/MSVC10Projects*/**/Release*/*,"+
"StaticSDKs*/**/*.dll",
fingerprint: true,
followSymlinks: false
}
}
}
}
}