Jenkinsfile 9.34 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)
59
  timeout(time: 15, 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)
67
  timeout(time: 10, 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
}

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

80
def example_test_win64(backend, dev) {
Minjie Wang's avatar
Minjie Wang committed
81
  init_git_win64()
Minjie Wang's avatar
Minjie Wang committed
82
  unpack_lib("dgl-${dev}-win64", dgl_win64_libs)
Minjie Wang's avatar
Minjie Wang committed
83
84
  timeout(time: 20, unit: 'MINUTES') {
    bat "CALL tests\\scripts\\task_example_test.bat ${dev}"
85
86
87
  }
}

Minjie Wang's avatar
Minjie Wang committed
88
def tutorial_test_linux(backend) {
Minjie Wang's avatar
Minjie Wang committed
89
  init_git()
Minjie Wang's avatar
Minjie Wang committed
90
  unpack_lib("dgl-cpu-linux", dgl_linux_libs)
Minjie Wang's avatar
Minjie Wang committed
91
92
  timeout(time: 20, unit: 'MINUTES') {
    sh "bash tests/scripts/task_${backend}_tutorial_test.sh"
Minjie Wang's avatar
Minjie Wang committed
93
  }
Lingfan Yu's avatar
Lingfan Yu committed
94
95
}

VoVAllen's avatar
VoVAllen committed
96

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