forked from iptv-org/epg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jenkinsfile
63 lines (55 loc) · 1.44 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
List target_sites = (env.TARGET_SITES == null) ? [] : env.TARGET_SITES.split(';')
List exclude_sites = (env.EXCLUDE_SITES == null) ? [] : env.EXCLUDE_SITES.split(';')
target_sites.removeAll { it in exclude_sites }
Map matrix_axes = [
SITE: target_sites
]
@NonCPS
List getMatrixAxes(Map matrix_axes) {
List axes = []
matrix_axes.each { axis, values ->
List axisList = []
values.each { value ->
axisList << [(axis): value]
}
axes << axisList
}
axes.combinations()*.sum()
}
List axes = getMatrixAxes(matrix_axes)
Map tasks = [failFast: false]
for(int i = 0; i < axes.size(); i++) {
Map axis = axes[i]
List axisEnv = axis.collect { k, v ->
"${k}=${v}"
}
tasks[axisEnv.join(', ')] = { ->
env.NODEJS_HOME = "${tool 'node'}"
env.PATH="${env.NODEJS_HOME}/bin:${env.PATH}"
node {
skipDefaultCheckout()
withEnv(axisEnv) {
try {
cleanWs()
checkout scm
sh 'npm install'
sh "npm run grab"
} finally {
archiveArtifacts artifacts: "guides/**/*.xml", onlyIfSuccessful: true
cleanWs(
cleanWhenNotBuilt: false,
deleteDirs: true,
disableDeferredWipeout: true,
notFailBuild: true,
patterns: [[pattern: '.gitignore', type: 'INCLUDE'],
[pattern: '.propsfile', type: 'EXCLUDE']])
}
}
}
}
}
node {
stage('Load') {
parallel(tasks)
}
}