Jenkinsfile 8.81 KB
Newer Older
Lingfan Yu's avatar
Lingfan Yu committed
1
2
#!/usr/bin/env groovy

Minjie Wang's avatar
Minjie Wang committed
3
4
dgl_linux_libs = "build/libdgl.so, build/runUnitTests, python/dgl/_ffi/_cy3/core.cpython-35m-x86_64-linux-gnu.so"
// Currently DGL on Windows is not working with Cython yet
Minjie Wang's avatar
Minjie Wang committed
5
dgl_win64_libs = "build\\dgl.dll, build\\runUnitTests.exe"
Minjie Wang's avatar
Minjie Wang committed
6
7
8
9

def init_git() {
  sh "rm -rf *"
  checkout scm
10
  sh "git submodule update --recursive --init"
Lingfan Yu's avatar
Lingfan Yu committed
11
12
}

Minjie Wang's avatar
Minjie Wang committed
13
14
def init_git_win64() {
  checkout scm
15
  bat "git submodule update --recursive --init"
Lingfan Yu's avatar
Lingfan Yu committed
16
17
}

Minjie Wang's avatar
Minjie Wang committed
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// pack libraries for later use
def pack_lib(name, libs) {
  echo "Packing ${libs} into ${name}"
  stash includes: libs, name: name
}

// unpack libraries saved before
def unpack_lib(name, libs) {
  unstash name
  echo "Unpacked ${libs} from ${name}"
}

def build_dgl_linux(dev) {
  init_git()
32
  sh "bash tests/scripts/build_dgl.sh ${dev}"
Minjie Wang's avatar
Minjie Wang committed
33
  pack_lib("dgl-${dev}-linux", dgl_linux_libs)
Lingfan Yu's avatar
Lingfan Yu committed
34
35
}

Minjie Wang's avatar
Minjie Wang committed
36
def build_dgl_win64(dev) {
37
38
  /* Assuming that Windows slaves are already configured with MSBuild VS2017,
   * CMake and Python/pip/setuptools etc. */
Minjie Wang's avatar
Minjie Wang committed
39
  init_git_win64()
40
  bat "CALL tests\\scripts\\build_dgl.bat"
Minjie Wang's avatar
Minjie Wang committed
41
  pack_lib("dgl-${dev}-win64", dgl_win64_libs)
42
43
}

Minjie Wang's avatar
Minjie Wang committed
44
45
def cpp_unit_test_linux() {
  init_git()
Minjie Wang's avatar
Minjie Wang committed
46
  unpack_lib("dgl-cpu-linux", dgl_linux_libs)
VoVAllen's avatar
VoVAllen committed
47
48
49
  sh "bash tests/scripts/task_cpp_unit_test.sh"
}

Minjie Wang's avatar
Minjie Wang committed
50
51
def cpp_unit_test_win64() {
  init_git_win64()
Minjie Wang's avatar
Minjie Wang committed
52
  unpack_lib("dgl-cpu-win64", dgl_win64_libs)
VoVAllen's avatar
VoVAllen committed
53
54
55
  bat "CALL tests\\scripts\\task_cpp_unit_test.bat"
}

Minjie Wang's avatar
Minjie Wang committed
56
def unit_test_linux(backend, dev) {
Minjie Wang's avatar
Minjie Wang committed
57
  init_git()
Minjie Wang's avatar
Minjie Wang committed
58
  unpack_lib("dgl-${dev}-linux", dgl_linux_libs)
Da Zheng's avatar
Da Zheng committed
59
  timeout(time: 5, unit: 'MINUTES') {
60
    sh "bash tests/scripts/task_unit_test.sh ${backend} ${dev}"
Minjie Wang's avatar
Minjie Wang committed
61
  }
Lingfan Yu's avatar
Lingfan Yu committed
62
63
}

64
def unit_test_win64(backend, dev) {
Minjie Wang's avatar
Minjie Wang committed
65
  init_git_win64()
Minjie Wang's avatar
Minjie Wang committed
66
  unpack_lib("dgl-${dev}-win64", dgl_win64_libs)
Minjie Wang's avatar
Minjie Wang committed
67
  timeout(time: 2, unit: 'MINUTES') {
68
    bat "CALL tests\\scripts\\task_unit_test.bat ${backend}"
Minjie Wang's avatar
Minjie Wang committed
69
  }
Da Zheng's avatar
Da Zheng committed
70
71
}

72
73
74
75
76
77
78
79
def kg_test_linux(backend, dev) {
  init_git()
  unpack_lib("dgl-${dev}-linux", dgl_linux_libs)
  timeout(time: 20, unit: 'MINUTES') {
    sh "bash tests/scripts/task_kg_test.sh ${backend} ${dev}"
  }
}

Minjie Wang's avatar
Minjie Wang committed
80
def example_test_linux(backend, dev) {
Minjie Wang's avatar
Minjie Wang committed
81
  init_git()
Minjie Wang's avatar
Minjie Wang committed
82
  unpack_lib("dgl-${dev}-linux", dgl_linux_libs)
Minjie Wang's avatar
Minjie Wang committed
83
84
  timeout(time: 20, unit: 'MINUTES') {
    sh "bash tests/scripts/task_example_test.sh ${dev}"
Minjie Wang's avatar
Minjie Wang committed
85
86
87
  }
}

88
def example_test_win64(backend, dev) {
Minjie Wang's avatar
Minjie Wang committed
89
  init_git_win64()
Minjie Wang's avatar
Minjie Wang committed
90
  unpack_lib("dgl-${dev}-win64", dgl_win64_libs)
Minjie Wang's avatar
Minjie Wang committed
91
92
  timeout(time: 20, unit: 'MINUTES') {
    bat "CALL tests\\scripts\\task_example_test.bat ${dev}"
93
94
95
  }
}

Minjie Wang's avatar
Minjie Wang committed
96
def tutorial_test_linux(backend) {
Minjie Wang's avatar
Minjie Wang committed
97
  init_git()
Minjie Wang's avatar
Minjie Wang committed
98
  unpack_lib("dgl-cpu-linux", dgl_linux_libs)
Minjie Wang's avatar
Minjie Wang committed
99
100
  timeout(time: 20, unit: 'MINUTES') {
    sh "bash tests/scripts/task_${backend}_tutorial_test.sh"
Minjie Wang's avatar
Minjie Wang committed
101
  }
Lingfan Yu's avatar
Lingfan Yu committed
102
103
}

Minjie Wang's avatar
Minjie Wang committed
104
pipeline {
105
  agent any
Minjie Wang's avatar
Minjie Wang committed
106
107
  stages {
    stage("Lint Check") {
Minjie Wang's avatar
Minjie Wang committed
108
      agent { docker { image "dgllib/dgl-ci-lint" } }
Minjie Wang's avatar
Minjie Wang committed
109
      steps {
Minjie Wang's avatar
Minjie Wang committed
110
        init_git()
111
        sh "bash tests/scripts/task_lint.sh"
Minjie Wang's avatar
Minjie Wang committed
112
      }
113
114
115
116
117
      post {
        always {
          cleanWs disableDeferredWipeout: true, deleteDirs: true
        }
      }
Minjie Wang's avatar
Minjie Wang committed
118
119
120
121
    }
    stage("Build") {
      parallel {
        stage("CPU Build") {
Minjie Wang's avatar
Minjie Wang committed
122
          agent { docker { image "dgllib/dgl-ci-cpu" } }
Minjie Wang's avatar
Minjie Wang committed
123
          steps {
Minjie Wang's avatar
Minjie Wang committed
124
            build_dgl_linux("cpu")
Minjie Wang's avatar
Minjie Wang committed
125
          }
126
127
128
129
130
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
Minjie Wang's avatar
Minjie Wang committed
131
132
133
134
135
136
137
138
139
        }
        stage("GPU Build") {
          agent {
            docker {
              image "dgllib/dgl-ci-gpu"
              args "--runtime nvidia"
            }
          }
          steps {
Minjie Wang's avatar
Minjie Wang committed
140
141
            sh "nvidia-smi"
            build_dgl_linux("gpu")
Minjie Wang's avatar
Minjie Wang committed
142
          }
143
144
145
146
147
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
Minjie Wang's avatar
Minjie Wang committed
148
        }
Minjie Wang's avatar
Minjie Wang committed
149
150
151
152
        stage("CPU Build (Win64)") {
          // Windows build machines are manually added to Jenkins master with
          // "windows" label as permanent agents.
          agent { label "windows" }
153
          steps {
Minjie Wang's avatar
Minjie Wang committed
154
            build_dgl_win64("cpu")
155
          }
156
157
158
159
160
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
161
        }
Minjie Wang's avatar
Minjie Wang committed
162
        // Currently we don't have Windows GPU build machines
Minjie Wang's avatar
Minjie Wang committed
163
164
165
166
      }
    }
    stage("Test") {
      parallel {
Minjie Wang's avatar
Minjie Wang committed
167
168
169
170
        stage("C++ CPU") {
          agent { docker { image "dgllib/dgl-ci-cpu" } }
          steps {
            cpp_unit_test_linux()
VoVAllen's avatar
VoVAllen committed
171
          }
172
173
174
175
176
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
VoVAllen's avatar
VoVAllen committed
177
        }
Minjie Wang's avatar
Minjie Wang committed
178
179
180
181
        stage("C++ CPU (Win64)") {
          agent { label "windows" }
          steps {
            cpp_unit_test_win64()
182
          }
183
184
185
186
187
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
Minjie Wang's avatar
Minjie Wang committed
188
189
190
        }
        stage("Torch CPU") {
          agent { docker { image "dgllib/dgl-ci-cpu" } }
Minjie Wang's avatar
Minjie Wang committed
191
          stages {
Minjie Wang's avatar
Minjie Wang committed
192
193
            stage("Unit test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
194
                unit_test_linux("pytorch", "cpu")
Minjie Wang's avatar
Minjie Wang committed
195
              }
Lingfan Yu's avatar
Lingfan Yu committed
196
            }
Minjie Wang's avatar
Minjie Wang committed
197
198
            stage("Example test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
199
                example_test_linux("pytorch", "cpu")
Minjie Wang's avatar
Minjie Wang committed
200
201
202
203
              }
            }
            stage("Tutorial test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
204
                tutorial_test_linux("pytorch")
Minjie Wang's avatar
Minjie Wang committed
205
              }
206
207
            }
          }
208
209
210
211
212
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
213
        }
Minjie Wang's avatar
Minjie Wang committed
214
        stage("Torch CPU (Win64)") {
215
216
          agent { label "windows" }
          stages {
Minjie Wang's avatar
Minjie Wang committed
217
218
219
220
            stage("Unit test") {
              steps {
                unit_test_win64("pytorch", "cpu")
              }
221
            }
Minjie Wang's avatar
Minjie Wang committed
222
223
224
225
            stage("Example test") {
              steps {
                example_test_win64("pytorch", "cpu")
              }
Lingfan Yu's avatar
Lingfan Yu committed
226
            }
Minjie Wang's avatar
Minjie Wang committed
227
          }
228
229
230
231
232
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
Lingfan Yu's avatar
Lingfan Yu committed
233
        }
Minjie Wang's avatar
Minjie Wang committed
234
        stage("Torch GPU") {
Minjie Wang's avatar
Minjie Wang committed
235
236
237
238
          agent {
            docker {
              image "dgllib/dgl-ci-gpu"
              args "--runtime nvidia"
Minjie Wang's avatar
Minjie Wang committed
239
            }
Minjie Wang's avatar
Minjie Wang committed
240
241
          }
          stages {
Minjie Wang's avatar
Minjie Wang committed
242
243
244
            stage("Unit test") {
              steps {
                sh "nvidia-smi"
245
                unit_test_linux("pytorch", "gpu")
Minjie Wang's avatar
Minjie Wang committed
246
247
248
249
              }
            }
            stage("Example test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
250
                example_test_linux("pytorch", "gpu")
Minjie Wang's avatar
Minjie Wang committed
251
              }
Minjie Wang's avatar
Minjie Wang committed
252
253
            }
          }
254
255
256
257
258
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
Minjie Wang's avatar
Minjie Wang committed
259
        }
Minjie Wang's avatar
Minjie Wang committed
260
        stage("MXNet CPU") {
Minjie Wang's avatar
Minjie Wang committed
261
          agent { docker { image "dgllib/dgl-ci-cpu" } }
Minjie Wang's avatar
Minjie Wang committed
262
          stages {
Minjie Wang's avatar
Minjie Wang committed
263
264
            stage("Unit test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
265
                unit_test_linux("mxnet", "cpu")
VoVAllen's avatar
VoVAllen committed
266
              }
Da Zheng's avatar
Da Zheng committed
267
            }
268
            //stage("Tutorial test") {
Minjie Wang's avatar
Minjie Wang committed
269
            //  steps {
270
            //    tutorial_test_linux("mxnet")
Minjie Wang's avatar
Minjie Wang committed
271
272
            //  }
            //}
273
274
275
276
          }
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
277
            }
278
279
          }
        }
280
281
282
283
284
285
286
287
288
289
290
291
292
293
        stage("MXNet GPU") {
          agent {
            docker {
              image "dgllib/dgl-ci-gpu"
              args "--runtime nvidia"
            }
          }
          stages {
            stage("Unit test") {
              steps {
                sh "nvidia-smi"
                unit_test_linux("mxnet", "gpu")
              }
            }
294
295
296
297
          }
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
298
            }
299
300
          }
        }
Minjie Wang's avatar
Minjie Wang committed
301
      }
Minjie Wang's avatar
Minjie Wang committed
302
    }
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
    stage("App") {
      parallel {
        stage("Knowledge Graph CPU") {
          agent { docker { image "dgllib/dgl-ci-cpu:torch-1.2.0" } }
          stages {
            stage("Torch test") {
              steps {
                kg_test_linux("pytorch", "cpu")
              }
            }
            stage("MXNet test") {
              steps {
                kg_test_linux("mxnet", "cpu")
              }
            }
          }
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
        }
        stage("Knowledge Graph GPU") {
          agent {
            docker {
              image "dgllib/dgl-ci-gpu:torch-1.2.0"
              args "--runtime nvidia"
            }
          }
          stages {
            stage("Torch test") {
              steps {
                kg_test_linux("pytorch", "gpu")
              }
            }
            stage("MXNet test") {
              steps {
                kg_test_linux("mxnet", "gpu")
              }
            }
          }
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
        }
      }
    }
Minjie Wang's avatar
Minjie Wang committed
352
  }
353
354
355
356
357
358
359
  post {
    always {
      node('windows') {
        bat "rmvirtualenv ${BUILD_TAG}"
      }
    }
  }
Minjie Wang's avatar
Minjie Wang committed
360
}