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

VoVAllen's avatar
VoVAllen committed
3
dgl_linux_libs = "build/libdgl.so, build/runUnitTests, python/dgl/_ffi/_cy3/core.cpython-36m-x86_64-linux-gnu.so"
Minjie Wang's avatar
Minjie Wang committed
4
// 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)
VoVAllen's avatar
VoVAllen committed
59
  timeout(time: 10, 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
}

VoVAllen's avatar
VoVAllen committed
104

Minjie Wang's avatar
Minjie Wang committed
105
pipeline {
106
  agent any
Minjie Wang's avatar
Minjie Wang committed
107
108
  stages {
    stage("Lint Check") {
VoVAllen's avatar
VoVAllen committed
109
110
111
112
113
114
      agent { 
        docker {
          label "linux-cpu-node"
          image "dgllib/dgl-ci-lint" 
        }
      }
Minjie Wang's avatar
Minjie Wang committed
115
      steps {
Minjie Wang's avatar
Minjie Wang committed
116
        init_git()
117
        sh "bash tests/scripts/task_lint.sh"
Minjie Wang's avatar
Minjie Wang committed
118
      }
119
120
121
122
123
      post {
        always {
          cleanWs disableDeferredWipeout: true, deleteDirs: true
        }
      }
Minjie Wang's avatar
Minjie Wang committed
124
125
126
127
    }
    stage("Build") {
      parallel {
        stage("CPU Build") {
VoVAllen's avatar
VoVAllen committed
128
129
130
131
132
133
          agent { 
            docker {
              label "linux-cpu-node"
              image "dgllib/dgl-ci-cpu:conda" 
            }
          }
Minjie Wang's avatar
Minjie Wang committed
134
          steps {
Minjie Wang's avatar
Minjie Wang committed
135
            build_dgl_linux("cpu")
Minjie Wang's avatar
Minjie Wang committed
136
          }
137
138
139
140
141
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
Minjie Wang's avatar
Minjie Wang committed
142
143
144
145
        }
        stage("GPU Build") {
          agent {
            docker {
VoVAllen's avatar
VoVAllen committed
146
              label "linux-cpu-node"
VoVAllen's avatar
VoVAllen committed
147
              image "dgllib/dgl-ci-gpu:conda"
VoVAllen's avatar
VoVAllen committed
148
              args "-u root"
Minjie Wang's avatar
Minjie Wang committed
149
150
151
            }
          }
          steps {
Minjie Wang's avatar
Minjie Wang committed
152
153
            sh "nvidia-smi"
            build_dgl_linux("gpu")
Minjie Wang's avatar
Minjie Wang committed
154
          }
155
156
157
158
159
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
Minjie Wang's avatar
Minjie Wang committed
160
        }
Minjie Wang's avatar
Minjie Wang committed
161
162
163
164
        stage("CPU Build (Win64)") {
          // Windows build machines are manually added to Jenkins master with
          // "windows" label as permanent agents.
          agent { label "windows" }
165
          steps {
Minjie Wang's avatar
Minjie Wang committed
166
            build_dgl_win64("cpu")
167
          }
168
169
170
171
172
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
173
        }
Minjie Wang's avatar
Minjie Wang committed
174
        // Currently we don't have Windows GPU build machines
Minjie Wang's avatar
Minjie Wang committed
175
176
177
178
      }
    }
    stage("Test") {
      parallel {
Minjie Wang's avatar
Minjie Wang committed
179
        stage("C++ CPU") {
VoVAllen's avatar
VoVAllen committed
180
181
182
183
184
185
          agent { 
            docker { 
              label "linux-cpu-node"
              image "dgllib/dgl-ci-cpu:conda"
            }
          }
Minjie Wang's avatar
Minjie Wang committed
186
187
          steps {
            cpp_unit_test_linux()
VoVAllen's avatar
VoVAllen committed
188
          }
189
190
191
192
193
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
VoVAllen's avatar
VoVAllen committed
194
        }
Minjie Wang's avatar
Minjie Wang committed
195
196
197
198
        stage("C++ CPU (Win64)") {
          agent { label "windows" }
          steps {
            cpp_unit_test_win64()
199
          }
200
201
202
203
204
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
Minjie Wang's avatar
Minjie Wang committed
205
        }
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
        // stage("Tensorflow CPU") {
        //   agent { 
        //     docker {
        //       label "linux-cpu-node"
        //       image "dgllib/dgl-ci-cpu:conda" 
        //     }
        //   }
        //   stages {
        //     stage("Unit test") {
        //       steps {
        //         unit_test_linux("tensorflow", "cpu")
        //       }
        //     }
        //   }
        //   post {
        //     always {
        //       cleanWs disableDeferredWipeout: true, deleteDirs: true
        //     }
        //   }
        // }
        // stage("Tensorflow GPU") {
        //   agent { 
        //     docker { 
        //       label "linux-gpu-node"
        //       image "dgllib/dgl-ci-gpu:conda" 
        //       args "--runtime nvidia"
        //     }
        //   }
        //   stages {
        //     stage("Unit test") {
        //       steps {
        //         unit_test_linux("tensorflow", "gpu")
        //       }
        //     }
        //   }
        //   post {
        //     always {
        //       cleanWs disableDeferredWipeout: true, deleteDirs: true
        //     }
        //   }
        // }
Minjie Wang's avatar
Minjie Wang committed
247
        stage("Torch CPU") {
VoVAllen's avatar
VoVAllen committed
248
249
250
251
252
253
          agent { 
            docker {
              label "linux-cpu-node"
              image "dgllib/dgl-ci-cpu:conda" 
            }
          }
Minjie Wang's avatar
Minjie Wang committed
254
          stages {
Minjie Wang's avatar
Minjie Wang committed
255
256
            stage("Unit test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
257
                unit_test_linux("pytorch", "cpu")
Minjie Wang's avatar
Minjie Wang committed
258
              }
Lingfan Yu's avatar
Lingfan Yu committed
259
            }
Minjie Wang's avatar
Minjie Wang committed
260
261
            stage("Example test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
262
                example_test_linux("pytorch", "cpu")
Minjie Wang's avatar
Minjie Wang committed
263
264
265
266
              }
            }
            stage("Tutorial test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
267
                tutorial_test_linux("pytorch")
Minjie Wang's avatar
Minjie Wang committed
268
              }
269
270
            }
          }
271
272
273
274
275
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
276
        }
Minjie Wang's avatar
Minjie Wang committed
277
        stage("Torch CPU (Win64)") {
278
279
          agent { label "windows" }
          stages {
Minjie Wang's avatar
Minjie Wang committed
280
281
282
283
            stage("Unit test") {
              steps {
                unit_test_win64("pytorch", "cpu")
              }
284
            }
Minjie Wang's avatar
Minjie Wang committed
285
286
287
288
            stage("Example test") {
              steps {
                example_test_win64("pytorch", "cpu")
              }
Lingfan Yu's avatar
Lingfan Yu committed
289
            }
Minjie Wang's avatar
Minjie Wang committed
290
          }
291
292
293
294
295
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
Lingfan Yu's avatar
Lingfan Yu committed
296
        }
Minjie Wang's avatar
Minjie Wang committed
297
        stage("Torch GPU") {
Minjie Wang's avatar
Minjie Wang committed
298
299
          agent {
            docker {
VoVAllen's avatar
VoVAllen committed
300
              label "linux-gpu-node"
VoVAllen's avatar
VoVAllen committed
301
              image "dgllib/dgl-ci-gpu:conda"
Minjie Wang's avatar
Minjie Wang committed
302
              args "--runtime nvidia"
Minjie Wang's avatar
Minjie Wang committed
303
            }
Minjie Wang's avatar
Minjie Wang committed
304
305
          }
          stages {
Minjie Wang's avatar
Minjie Wang committed
306
307
308
            stage("Unit test") {
              steps {
                sh "nvidia-smi"
309
                unit_test_linux("pytorch", "gpu")
Minjie Wang's avatar
Minjie Wang committed
310
311
312
313
              }
            }
            stage("Example test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
314
                example_test_linux("pytorch", "gpu")
Minjie Wang's avatar
Minjie Wang committed
315
              }
Minjie Wang's avatar
Minjie Wang committed
316
317
            }
          }
318
319
320
321
322
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
Minjie Wang's avatar
Minjie Wang committed
323
        }
Minjie Wang's avatar
Minjie Wang committed
324
        stage("MXNet CPU") {
VoVAllen's avatar
VoVAllen committed
325
326
327
328
329
330
          agent { 
            docker {
              label "linux-cpu-node"
              image "dgllib/dgl-ci-cpu:conda" 
            }
          }
Minjie Wang's avatar
Minjie Wang committed
331
          stages {
Minjie Wang's avatar
Minjie Wang committed
332
333
            stage("Unit test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
334
                unit_test_linux("mxnet", "cpu")
VoVAllen's avatar
VoVAllen committed
335
              }
Da Zheng's avatar
Da Zheng committed
336
            }
337
            //stage("Tutorial test") {
Minjie Wang's avatar
Minjie Wang committed
338
            //  steps {
339
            //    tutorial_test_linux("mxnet")
Minjie Wang's avatar
Minjie Wang committed
340
341
            //  }
            //}
342
343
344
345
          }
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
346
            }
347
348
          }
        }
349
350
351
        stage("MXNet GPU") {
          agent {
            docker {
VoVAllen's avatar
VoVAllen committed
352
              label "linux-gpu-node" 
VoVAllen's avatar
VoVAllen committed
353
              image "dgllib/dgl-ci-gpu:conda"
354
355
356
357
358
359
360
361
362
363
              args "--runtime nvidia"
            }
          }
          stages {
            stage("Unit test") {
              steps {
                sh "nvidia-smi"
                unit_test_linux("mxnet", "gpu")
              }
            }
364
365
366
367
          }
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
368
            }
369
370
          }
        }
Minjie Wang's avatar
Minjie Wang committed
371
      }
Minjie Wang's avatar
Minjie Wang committed
372
    }
373
374
375
    stage("App") {
      parallel {
        stage("Knowledge Graph CPU") {
VoVAllen's avatar
VoVAllen committed
376
377
378
379
380
381
          agent { 
            docker {
              label "linux-cpu-node"
              image "dgllib/dgl-ci-cpu:conda" 
            }
          }
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
          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 {
VoVAllen's avatar
VoVAllen committed
403
              label "linux-gpu-node"
VoVAllen's avatar
VoVAllen committed
404
              image "dgllib/dgl-ci-gpu:conda"
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
              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
428
  }
429
430
431
432
433
434
435
  post {
    always {
      node('windows') {
        bat "rmvirtualenv ${BUILD_TAG}"
      }
    }
  }
Minjie Wang's avatar
Minjie Wang committed
436
}