-
Notifications
You must be signed in to change notification settings - Fork 11
/
Jenkinsfile
82 lines (82 loc) · 3.47 KB
/
Jenkinsfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
@Library('jenkins-shared-libraries') _
def ENV_LOC=[:]
pipeline {
parameters {
choice(name: 'PLATFORM_FILTER', choices: ['all', 'windows-java-samples', 'mac-arm-java-samples', 'linux-java-samples'], description: 'Run on specific platform')
booleanParam defaultValue: false, description: 'Completely clean the workspace before building, including the Conan cache', name: 'CLEAN_WORKSPACE'
booleanParam defaultValue: false, description: 'Run clean-samples', name: 'DISTCLEAN'
}
options{
buildDiscarder logRotator(artifactDaysToKeepStr: '4', artifactNumToKeepStr: '10', daysToKeepStr: '7', numToKeepStr: '10')
disableConcurrentBuilds()
timeout(time: 4, unit: "HOURS")
}
agent none
triggers {
// From the doc: @midnight actually means some time between 12:00 AM and 2:59 AM.
// This gives us automatic spreading out of jobs, so they don't cause load spikes.
cron('@midnight')
}
stages {
stage('Matrix stage') {
matrix {
agent {
label "${NODE}"
}
when { anyOf {
expression { params.PLATFORM_FILTER == 'all' }
expression { params.PLATFORM_FILTER == env.NODE }
} }
axes {
axis {
name 'NODE'
values 'windows-java-samples', 'mac-arm-java-samples', 'linux-java-samples'
}
}
environment {
CONAN_USER_HOME = "${WORKSPACE}"
CONAN_NON_INTERACTIVE = '1'
CONAN_PRINT_RUN_COMMANDS = '1'
}
stages {
stage('Axis'){
steps {
printPlatformNameInStep()
}
}
stage('Clean/reset Git checkout for release') {
when {
expression {
params.CLEAN_WORKSPACE
}
}
steps {
echo "Clean ${NODE}"
script {
// Ensure that the checkout is clean and any changes
// to .gitattributes and .gitignore have been taken
// into effect
if (isUnix()) {
sh """
git rm -f -q -r .
git reset --hard HEAD
git clean -fdx
"""
} else {
// On Windows, 'git clean' can't handle long paths in .conan,
// so remove that first.
bat """
if exist ${WORKSPACE}\\.conan\\ rmdir/s/q ${WORKSPACE}\\.conan
git rm -q -r .
git reset --hard HEAD
git clean -fdx
"""
}
}
}
}
}
}
}
}
}