-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathJenkinsfile
84 lines (69 loc) · 2.1 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
83
84
#!groovy
library "github.com/melt-umn/jenkins-lib"
melt.setProperties(silverBase: true)
melt.trynode('ableC') {
def ABLEC_BASE = env.WORKSPACE
def SILVER_BASE = silver.resolveSilver()
def EXTS_BASE = env.WORKSPACE + "/extensions"
def newenv = silver.getSilverEnv(SILVER_BASE)
stage ("Build") {
checkout scm
melt.clearGenerated()
// Delete old extension checkouts in this workspace
sh "rm -rf ${EXTS_BASE}/*"
withEnv(newenv) {
sh './build --mwda'
}
}
stage ("Modular Analyses") {
// Run the MDA for the Silver extension for construcing ableC ASTs.
// MWDA is already run in the build step above
withEnv(newenv) {
sh "./mda-test"
}
}
stage ("Test") {
dir("testing") {
withEnv(newenv) {
sh "./build-test-artifact"
sh "./runTests"
}
}
}
// Avoid deadlock condition from all executors being filled with builds
// that are waiting for downstream builds to finish.
waitUntil { melt.isExecutorAvailable() }
stage ("Integration") {
// All known, stable extensions to build downstream
def extensions = [
"ableC-skeleton", "ableC-lib-skeleton", "ableC-dep-skeleton",
"ableC-constructor",
"ableC-condition-tables",
"ableC-sqlite",
"ableC-allocation",
"ableC-constructor", "ableC-template-constructor",
"ableC-string",
"ableC-vector",
"ableC-closure",
"ableC-interval",
"ableC-algebraic-data-types", "ableC-template-algebraic-data-types",
"ableC-unification",
"ableC-prolog",
"ableC-rewriting",
]
/* TODO: get these working again
"ableC-halide",
"ableC-sample-projects",
// Treat ableP like an extension since it depends on ableC
"ableP",
*/
def tasks = [:]
def newargs = [SILVER_BASE: SILVER_BASE, ABLEC_BASE: ABLEC_BASE, EXTS_BASE: EXTS_BASE]
tasks << extensions.collectEntries { t ->
[(t): { melt.buildProject("/melt-umn/${t}", newargs) }]
}
parallel tasks
}
/* If we've gotten all this way with a successful build, don't take up disk space */
melt.clearGenerated()
}