2015-11-16 11:21:57 -08:00
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
2015-10-08 16:07:36 -07:00
// Import the utility functionality.
import jobs.generation.Utilities ;
2015-12-03 08:37:04 -08:00
def project = GithubProject
2016-02-12 09:11:20 -08:00
def branch = GithubBranchName
2016-03-11 14:32:36 -08:00
def isPR = true
2015-10-08 16:07:36 -07:00
2018-04-19 16:16:12 -07:00
def platformList = [ 'Linux:x64:Release' , 'Debian8.2:x64:Debug' , 'Ubuntu:x64:Release' , 'Ubuntu16.04:x64:Debug' , 'OSX10.12:x64:Release' , 'Windows_NT:x64:Release' , 'Windows_NT:x86:Debug' , 'Windows_NT_ES:x64:Debug' , 'RHEL7.2:x64:Release' , 'CentOS7.1:x64:Debug' , 'RHEL6:x64:Debug' , 'Linux-musl:x64:Debug' , 'Linux:arm:Debug' , 'Linux:arm64:Debug' ]
2015-10-08 16:07:36 -07:00
2016-03-11 14:32:36 -08:00
def static getBuildJobName ( def configuration , def os , def architecture ) {
return configuration . toLowerCase ( ) + '_' + os . toLowerCase ( ) + '_' + architecture . toLowerCase ( )
2015-10-08 16:07:36 -07:00
}
2015-12-03 08:57:28 -08:00
2016-03-11 14:32:36 -08:00
platformList . each { platform - >
// Calculate names
def ( os , architecture , configuration ) = platform . tokenize ( ':' )
2017-03-09 09:02:14 -10:00
def osUsedForMachineAffinity = os ;
2015-12-03 08:57:28 -08:00
2016-03-11 14:32:36 -08:00
// Calculate job name
def jobName = getBuildJobName ( configuration , os , architecture )
def buildCommand = '' ;
2015-10-22 17:41:39 -07:00
2016-03-11 14:32:36 -08:00
// Calculate the build command
if ( os = = 'Windows_NT' ) {
buildCommand = ".\\build.cmd -Configuration ${configuration} -Architecture ${architecture} -Targets Default"
}
else if ( os = = 'Windows_2016' ) {
buildCommand = ".\\build.cmd -Configuration ${configuration} -Architecture ${architecture} -RunInstallerTestsInDocker -Targets Default"
}
2017-09-06 16:12:31 -07:00
else if ( os = = 'Windows_NT_ES' ) {
osUsedForMachineAffinity = 'Windows_NT'
buildCommand = "" "
set DOTNET_CLI_UI_LANGUAGE = es
. \ \ build . cmd - Configuration $ { configuration } - Architecture $ { architecture } - Targets Default
"" "
}
2016-03-11 14:32:36 -08:00
else if ( os = = 'Ubuntu' ) {
2016-06-01 16:44:26 -07:00
buildCommand = "./build.sh --skip-prereqs --configuration ${configuration} --docker ubuntu.14.04 --targets Default"
2016-03-11 14:32:36 -08:00
}
2017-03-09 09:02:14 -10:00
else if ( os = = 'Linux' ) {
osUsedForMachineAffinity = 'Ubuntu16.04' ;
2018-03-25 15:48:16 -04:00
if ( ( architecture = = 'arm' ) | | ( architecture = = 'arm64' ) ) {
2018-03-14 19:04:25 -07:00
buildCommand = "./build.sh --linux-portable --skip-prereqs --architecture ${architecture} --configuration ${configuration} --targets Default /p:CLIBUILD_SKIP_TESTS=true"
}
else {
buildCommand = "./build.sh --linux-portable --skip-prereqs --configuration ${configuration} --targets Default"
}
2017-03-09 09:02:14 -10:00
}
2017-10-10 18:08:06 +02:00
else if ( os = = 'RHEL6' ) {
osUsedForMachineAffinity = 'Ubuntu16.04' ;
2017-10-10 20:00:12 +02:00
buildCommand = "./build.sh --skip-prereqs --configuration ${configuration} --runtime-id rhel.6-x64 --docker rhel.6 --targets Default"
2017-10-10 18:08:06 +02:00
}
2018-04-19 16:16:12 -07:00
else if ( os = = 'Linux-musl' ) {
2017-11-29 17:03:48 +01:00
osUsedForMachineAffinity = 'Ubuntu16.04' ;
2018-04-19 16:16:12 -07:00
buildCommand = "./build.sh --skip-prereqs --configuration ${configuration} --runtime-id linux-musl-x64 --docker alpine.3.6 --targets Default"
2017-11-29 17:03:48 +01:00
}
2016-03-11 14:32:36 -08:00
else {
// Jenkins non-Ubuntu CI machines don't have docker
buildCommand = "./build.sh --skip-prereqs --configuration ${configuration} --targets Default"
}
2015-10-21 11:24:23 -07:00
2016-03-11 14:32:36 -08:00
def newJob = job ( Utilities . getFullJobName ( project , jobName , isPR ) ) {
// Set the label.
steps {
2017-09-06 16:12:31 -07:00
if ( osUsedForMachineAffinity = = 'Windows_NT' | | osUsedForMachineAffinity = = 'Windows_2016' ) {
2016-03-11 14:32:36 -08:00
// Batch
batchFile ( buildCommand )
2015-12-03 08:57:28 -08:00
}
else {
2016-03-11 14:32:36 -08:00
// Shell
shell ( buildCommand )
2015-12-03 08:57:28 -08:00
}
}
}
2016-03-11 14:32:36 -08:00
2017-03-09 09:02:14 -10:00
Utilities . setMachineAffinity ( newJob , osUsedForMachineAffinity , 'latest-or-auto' )
2016-03-11 14:32:36 -08:00
Utilities . standardJobSetup ( newJob , project , isPR , "*/${branch}" )
2018-03-15 12:30:11 -07:00
// ARM CI runs are build only.
2018-03-25 15:48:16 -04:00
if ( ( architecture ! = 'arm' ) & & ( architecture ! = 'arm64' ) ) {
2018-03-15 12:30:11 -07:00
Utilities . addMSTestResults ( newJob , '**/*.trx' )
}
2016-03-11 14:32:36 -08:00
Utilities . addGithubPRTriggerForBranch ( newJob , branch , "${os} ${architecture} ${configuration} Build" )
2016-02-16 12:04:13 -08:00
}
2016-03-11 14:32:36 -08:00
2017-03-30 19:40:03 +09:00
// Make the call to generate the help job
Utilities . createHelperJob ( this , project , branch ,
"Welcome to the ${project} Repository" , // This is prepended to the help message
"Have a nice day!" ) // This is appended to the help message. You might put known issues here.
2017-05-15 11:47:42 -07:00
Utilities . addCROSSCheck ( this , project , branch )