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

3
dgl_linux_libs = "build/libdgl.so, build/runUnitTests, python/dgl/_ffi/_cy3/core.cpython-36m-x86_64-linux-gnu.so, build/tensoradapter/pytorch/*.so"
Minjie Wang's avatar
Minjie Wang committed
4
// Currently DGL on Windows is not working with Cython yet
5
dgl_win64_libs = "build\\dgl.dll, build\\runUnitTests.exe, build\\tensoradapter\\pytorch\\*.dll"
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}"
33
  sh "ls -lh /usr/lib/x86_64-linux-gnu/"
Minjie Wang's avatar
Minjie Wang committed
34
  pack_lib("dgl-${dev}-linux", dgl_linux_libs)
Lingfan Yu's avatar
Lingfan Yu committed
35
36
}

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

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

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

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

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

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

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

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

VoVAllen's avatar
VoVAllen committed
97

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