forked from mbeddr/mbeddr.core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cbmc.groovy
114 lines (102 loc) · 4.27 KB
/
cbmc.groovy
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
def buildCBMC() {
timestamps {
def gradleOpts ='--no-daemon --info --stacktrace'
stage 'Build CBMC'
parallel (
"CBMC linux" : {
node ('linux') {
checkoutCBMC()
checkoutMbeddr()
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'mbeddr-ci',
usernameVariable: 'nexusUsername', passwordVariable: 'nexusPassword']])
{
dir('mbeddr.core') {
sh "./gradlew ${gradleOpts} -b build.gradle build_cbmcLinux"
}
dir('mbeddr.core') {
sh "./gradlew ${gradleOpts} -PnexusUsername=${env.nexusUsername} -PnexusPassword=${env.nexusPassword} -b build.gradle publishCbmcLinuxPublicationToMavenRepository"
}
}
dir ('cbmc') {
step([$class: 'ArtifactArchiver', artifacts: 'cbmc-linux.tar.gz', fingerprint: true])
}
}
},
"CBMC windows" : {
node ('windows') {
checkoutCBMC()
checkoutMbeddr()
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'mbeddr-ci',
usernameVariable: 'nexusUsername', passwordVariable: 'nexusPassword']])
{
dir('mbeddr.core') {
bat ".\\gradlew.bat ${gradleOpts} -b build.gradle build_cbmcWin"
}
dir('mbeddr.core') {
bat ".\\gradlew.bat ${gradleOpts} -PnexusUsername=${env.nexusUsername} -PnexusPassword=${env.nexusPassword} -b build.gradle publishCbmcWinPublicationToMavenRepository"
}
}
dir ('cbmc') {
step([$class: 'ArtifactArchiver', artifacts: 'cbmc-win.zip', fingerprint: true])
}
}
},
"CBMC mac" : {
node ('mac') {
checkoutCBMC()
checkoutMbeddr()
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'mbeddr-ci',
usernameVariable: 'nexusUsername', passwordVariable: 'nexusPassword']])
{
dir('mbeddr.core') {
sh "./gradlew ${gradleOpts} -b build.gradle build_cbmcMac"
}
dir('mbeddr.core') {
sh "./gradlew ${gradleOpts} -PnexusUsername=${env.nexusUsername} -PnexusPassword=${env.nexusPassword} -b build.gradle publishCbmcMacPublicationToMavenRepository"
}
}
dir ('cbmc') {
step([$class: 'ArtifactArchiver', artifacts: 'cbmc-mac.zip', fingerprint: true])
}
}
}
)
}
}
@NonCPS
def checkoutMbeddr() {
// Use a local reference git repo to speed up the checkout from GitHub
def reference = env.BSHARE
if(isUnix()) {
reference += "/gitcaches/reference/mbeddr.core/"
} else {
reference = "${BASE}\\workspace\\mbeddr_Reference_Repo\\mbeddr.core\\"
}
echo "Reference-Path: ${reference}"
checkout([
$class: 'GitSCM',
branches: scm.branches,
doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
extensions: scm.extensions + [
[$class: 'CloneOption', noTags: false, reference: reference, shallow: false],
[$class: 'RelativeTargetDirectory', relativeTargetDir: 'mbeddr.core'],
[$class: 'CleanBeforeCheckout']
],
gitTool: 'Local_Git',
submoduleCfg: [],
userRemoteConfigs: scm.userRemoteConfigs
])
}
def checkoutCBMC() {
checkout([$class: 'GitSCM',
branches: [[name: '*/master']],
doGenerateSubmoduleConfigurations: false,
extensions: [
[$class: 'RelativeTargetDirectory', relativeTargetDir: 'cbmc'],
[$class: 'CleanBeforeCheckout']
],
gitTool: 'Local_Git',
submoduleCfg: [],
userRemoteConfigs: [[url: 'https://github.com/diffblue/cbmc.git']]])
}
return this;