234 lines
3.8 KiB
Groovy
234 lines
3.8 KiB
Groovy
package common
|
|
|
|
import javaposse.jobdsl.dsl.Job
|
|
import javaposse.jobdsl.dsl.DslFactory
|
|
|
|
class Build
|
|
{
|
|
enum JobType
|
|
{
|
|
Freestyle, Multi, Matrix
|
|
}
|
|
|
|
JobType jobType = JobType.Freestyle
|
|
String name
|
|
String namePrefix = ''
|
|
String libraries
|
|
String artifacts
|
|
String label
|
|
String trigger = '@daily'
|
|
String excludePattern = 'source/**'
|
|
List oldBuilds = [7, 15]
|
|
boolean releaseJob = false
|
|
boolean xunit = false
|
|
boolean cleanup = false
|
|
boolean sendMail = true
|
|
boolean disableChangelog = false
|
|
boolean allowEmptyArtifacts = false
|
|
boolean review = false
|
|
int timeout = 60
|
|
int weight = -1
|
|
|
|
DslFactory dslFactory
|
|
|
|
|
|
String buildName(String prefix, String name, boolean libs=false)
|
|
{
|
|
def branchPrefix = ''
|
|
|
|
if(!getReleaseJob())
|
|
{
|
|
if(libs && getReview())
|
|
branchPrefix = '${Libraries}_'
|
|
else
|
|
branchPrefix = dslFactory.MERCURIAL_REVISION_BRANCH + '_'
|
|
}
|
|
|
|
return branchPrefix + prefix + name
|
|
}
|
|
|
|
String getJobName()
|
|
{
|
|
return buildName(getNamePrefix(), getName())
|
|
}
|
|
|
|
String getLibName()
|
|
{
|
|
def prefix = 'Libs_'
|
|
|
|
if(getReleaseJob())
|
|
{
|
|
prefix = '${MERCURIAL_REVISION_BRANCH}_' + prefix
|
|
}
|
|
|
|
return buildName(prefix, getLibraries(), true)
|
|
}
|
|
|
|
|
|
|
|
Job generate(DslFactory factory)
|
|
{
|
|
dslFactory = factory
|
|
def j
|
|
|
|
|
|
if(getJobType() == JobType.Multi)
|
|
j = dslFactory.multiJob(getJobName())
|
|
else if(getJobType() == JobType.Matrix)
|
|
j = dslFactory.matrixJob(getJobName())
|
|
else if(getJobType() == JobType.Freestyle)
|
|
j = dslFactory.freeStyleJob(getJobName())
|
|
else
|
|
throw new Exception('Unknown job type: ' + getJobType())
|
|
|
|
|
|
j.with
|
|
{
|
|
if(getLabel())
|
|
label(getLabel())
|
|
|
|
if(getOldBuilds())
|
|
logRotator(*getOldBuilds())
|
|
|
|
if(getWeight() > 1)
|
|
weight(getWeight())
|
|
|
|
environmentVariables
|
|
{
|
|
env('TEMP', '$WORKSPACE/tmp')
|
|
env('TMP', '$WORKSPACE/tmp')
|
|
env('TMPDIR', '$WORKSPACE/tmp')
|
|
}
|
|
|
|
wrappers
|
|
{
|
|
preBuildCleanup()
|
|
{
|
|
if(!getReleaseJob() && getExcludePattern())
|
|
excludePattern(getExcludePattern())
|
|
|
|
deleteDirectories(true)
|
|
}
|
|
|
|
timestamps()
|
|
|
|
if(getTimeout() > -1)
|
|
{
|
|
timeout
|
|
{
|
|
absolute(getTimeout())
|
|
}
|
|
}
|
|
}
|
|
|
|
scm
|
|
{
|
|
hg(dslFactory.MERCURIAL_REPOSITORY_URL)
|
|
{
|
|
if(getReleaseJob())
|
|
tag('${changeset}')
|
|
else
|
|
branch(dslFactory.MERCURIAL_REVISION_BRANCH)
|
|
|
|
subdirectory('source')
|
|
if(getDisableChangelog())
|
|
disableChangeLog()
|
|
clean()
|
|
}
|
|
}
|
|
|
|
if(getTrigger())
|
|
{
|
|
triggers
|
|
{
|
|
cron('@weekly')
|
|
scm(getTrigger())
|
|
}
|
|
}
|
|
|
|
steps
|
|
{
|
|
if(getLibraries())
|
|
{
|
|
copyArtifacts(getLibName())
|
|
{
|
|
targetDirectory('libs')
|
|
buildSelector
|
|
{
|
|
latestSuccessful(true)
|
|
}
|
|
}
|
|
|
|
if(getName().contains('_Win'))
|
|
batchFile('cd libs/build & FOR %%a in (Toolchain_*) DO cmake -E tar xf %%a')
|
|
else
|
|
shell('cd libs/build; cmake -E tar xf Toolchain_*')
|
|
}
|
|
|
|
if(getName().contains('_Win'))
|
|
batchFile('mkdir build & mkdir tmp')
|
|
else
|
|
shell('mkdir build; mkdir tmp')
|
|
}
|
|
|
|
publishers
|
|
{
|
|
if(getXunit())
|
|
{
|
|
archiveXUnit
|
|
{
|
|
qTestLib
|
|
{
|
|
pattern('build/**/results.*.log.xml')
|
|
}
|
|
|
|
failedThresholds
|
|
{
|
|
unstable(0)
|
|
unstableNew(0)
|
|
failure(100)
|
|
failureNew(100)
|
|
}
|
|
|
|
skippedThresholds
|
|
{
|
|
unstable(100)
|
|
unstableNew(100)
|
|
failure(100)
|
|
failureNew(100)
|
|
}
|
|
|
|
thresholdMode(ThresholdMode.PERCENT)
|
|
}
|
|
}
|
|
|
|
if(getArtifacts())
|
|
{
|
|
archiveArtifacts()
|
|
{
|
|
pattern(getArtifacts())
|
|
allowEmpty(getAllowEmptyArtifacts())
|
|
fingerprint()
|
|
}
|
|
}
|
|
|
|
if(getCleanup())
|
|
{
|
|
wsCleanup()
|
|
{
|
|
cleanWhenUnstable(false)
|
|
cleanWhenFailure(false)
|
|
cleanWhenNotBuilt(false)
|
|
cleanWhenAborted(false)
|
|
}
|
|
}
|
|
|
|
if(getSendMail())
|
|
mailer('', true, true)
|
|
}
|
|
}
|
|
|
|
return j
|
|
}
|
|
}
|