Jenkinsfile 20 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-*-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

def init_git() {
8
  sh 'rm -rf *'
Minjie Wang's avatar
Minjie Wang committed
9
  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
}

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

Minjie Wang's avatar
Minjie Wang committed
51
52
def cpp_unit_test_win64() {
  init_git_win64()
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: 30, 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
66
67
68
69
70
71
72
def unit_distributed_linux(backend, dev) {
  init_git()
  unpack_lib("dgl-${dev}-linux", dgl_linux_libs)
  timeout(time: 30, unit: 'MINUTES') {
    sh "bash tests/scripts/task_distributed_test.sh ${backend} ${dev}"
  }
}

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

81
def unit_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)
84
  timeout(time: 30, unit: 'MINUTES') {
85
    bat "CALL tests\\scripts\\task_unit_test.bat ${backend}"
Minjie Wang's avatar
Minjie Wang committed
86
  }
Da Zheng's avatar
Da Zheng committed
87
88
}

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

97
def example_test_win64(backend, dev) {
Minjie Wang's avatar
Minjie Wang committed
98
  init_git_win64()
Minjie Wang's avatar
Minjie Wang committed
99
  unpack_lib("dgl-${dev}-win64", dgl_win64_libs)
Minjie Wang's avatar
Minjie Wang committed
100
101
  timeout(time: 20, unit: 'MINUTES') {
    bat "CALL tests\\scripts\\task_example_test.bat ${dev}"
102
103
104
  }
}

Minjie Wang's avatar
Minjie Wang committed
105
def tutorial_test_linux(backend) {
Minjie Wang's avatar
Minjie Wang committed
106
  init_git()
107
  unpack_lib('dgl-cpu-linux', dgl_linux_libs)
Minjie Wang's avatar
Minjie Wang committed
108
109
  timeout(time: 20, unit: 'MINUTES') {
    sh "bash tests/scripts/task_${backend}_tutorial_test.sh"
Minjie Wang's avatar
Minjie Wang committed
110
  }
Lingfan Yu's avatar
Lingfan Yu committed
111
112
}

Mufei Li's avatar
Mufei Li committed
113
114
115
def go_test_linux() {
  init_git()
  unpack_lib('dgl-cpu-linux', dgl_linux_libs)
Minjie Wang's avatar
Minjie Wang committed
116
  timeout(time: 20, unit: 'MINUTES') {
Mufei Li's avatar
Mufei Li committed
117
118
119
120
    sh "bash tests/scripts/task_go_test.sh"
  }
}

121
def is_authorized(name) {
122
123
124
125
126
127
128
129
130
131
132
133
  def devs = ['dgl-bot', 'noreply', 'Rhett-Ying', 'BarclayII', 'jermainewang',
              'mufeili', 'isratnisa', 'ru_dongyu', 'classicsong', 'HuXiangkun',
              'hetong007', 'kylasa', 'frozenbugs', 'peizhou001', 'zheng-da',
              'nv-dlasalle', 'yaox12', 'chang-l', 'Kh4L', 'VibhuJawa',
              'VoVAllen',
              ]
  return (name in devs)
}

def is_admin(name) {
  def admins = ['dgl-bot', 'Rhett-Ying', 'BarclayII', 'jermainewang']
  return (name in admins)
134
}
VoVAllen's avatar
VoVAllen committed
135

Minjie Wang's avatar
Minjie Wang committed
136
pipeline {
Jinjing Zhou's avatar
Jinjing Zhou committed
137
  agent any
138
139
140
  triggers {
        issueCommentTrigger('@dgl-bot .*')
  }
Minjie Wang's avatar
Minjie Wang committed
141
  stages {
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
    // Below 2 stages are to authenticate the change/comment author.
    // Only core developers are allowed to trigger CI.
    // Such authentication protects CI from malicious code which may bring CI instances down.
    stage('Authentication') {
      agent {
        docker {
            label 'linux-benchmark-node'
            image 'dgllib/dgl-ci-lint'
            alwaysPull true
        }
      }
      when { not { triggeredBy 'IssueCommentCause' } }
      steps {
        script {
          def author = env.CHANGE_AUTHOR
          def prOpenTriggerCause = currentBuild.getBuildCauses('jenkins.branch.BranchEventCause')
          def first_run = prOpenTriggerCause && env.BUILD_ID == '1'
          if (author && !is_authorized(author)) {
            if (first_run) {
              pullRequest.comment("Not authorized to trigger CI. Please ask core developer to help trigger via issuing comment: \n - `@dgl-bot`")
            }
            error("Authentication failed.")
          }
          if (first_run) {
            pullRequest.comment('To trigger regression tests: \n - `@dgl-bot run [instance-type] [which tests] [compare-with-branch]`; \n For example: `@dgl-bot run g4dn.4xlarge all dmlc/master` or `@dgl-bot run c5.9xlarge kernel,api dmlc/master`')
          }
        }
      }
    }
    stage('AuthenticationComment') {
      agent {
        docker {
            label 'linux-benchmark-node'
            image 'dgllib/dgl-ci-lint'
            alwaysPull true
        }
      }
      when { triggeredBy 'IssueCommentCause' }
      steps {
        script {
          def author = env.GITHUB_COMMENT_AUTHOR
          if (!is_authorized(author)) {
            pullRequest.comment("Not authorized to trigger CI via issuing comment.")
            error("Authentication failed.")
          }
        }
      }
    }
    stage('Regression Test') {
191
      agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
192
193
194
195
        docker {
            label 'linux-benchmark-node'
            image 'dgllib/dgl-ci-lint'
            alwaysPull true
Jinjing Zhou's avatar
Jinjing Zhou committed
196
        }
VoVAllen's avatar
VoVAllen committed
197
      }
198
      when { triggeredBy 'IssueCommentCause' }
Minjie Wang's avatar
Minjie Wang committed
199
      steps {
Jinjing Zhou's avatar
Jinjing Zhou committed
200
201
202
        // container('dgl-ci-lint') {
          checkout scm
          script {
203
204
              def comment = env.GITHUB_COMMENT
              def author = env.GITHUB_COMMENT_AUTHOR
205
206
              echo("${env.GIT_URL}")
              echo("${env}")
207
              if (!is_admin(author)) {
208
                error('Not authorized to launch regression tests')
209
210
              }
              dir('benchmark_scripts_repo') {
Jinjing Zhou's avatar
Jinjing Zhou committed
211
212
                checkout([$class: 'GitSCM', branches: [[name: '*/master']],
                        userRemoteConfigs: [[credentialsId: 'github', url: 'https://github.com/dglai/DGL_scripts.git']]])
213
214
215
216
217
              }
              sh('cp benchmark_scripts_repo/benchmark/* benchmarks/scripts/')
              def command_lists = comment.split(' ')
              def instance_type = command_lists[2].replace('.', '')
              if (command_lists.size() != 5) {
Jinjing Zhou's avatar
Jinjing Zhou committed
218
219
              pullRequest.comment('Cannot run the regression test due to unknown command')
              error('Unknown command')
220
              } else {
Jinjing Zhou's avatar
Jinjing Zhou committed
221
              pullRequest.comment("Start the Regression test. View at ${RUN_DISPLAY_URL}")
222
              }
223
              def prNumber = env.BRANCH_NAME.replace('PR-', '')
224
225
              dir('benchmarks/scripts') {
                sh('python3 -m pip install boto3')
226
                sh("PYTHONUNBUFFERED=1 GIT_PR_ID=${prNumber} GIT_URL=${env.GIT_URL} GIT_BRANCH=${env.CHANGE_BRANCH} python3 run_reg_test.py --data-folder ${env.GIT_COMMIT}_${instance_type} --run-cmd '${comment}'")
227
228
229
230
              }
              pullRequest.comment("Finished the Regression test. Result table is at https://dgl-asv-data.s3-us-west-2.amazonaws.com/${env.GIT_COMMIT}_${instance_type}/results/result.csv. Jenkins job link is ${RUN_DISPLAY_URL}. ")
              currentBuild.result = 'SUCCESS'
              return
Jinjing Zhou's avatar
Jinjing Zhou committed
231
232
          }
        // }
233
      }
Minjie Wang's avatar
Minjie Wang committed
234
    }
Jinjing Zhou's avatar
Jinjing Zhou committed
235
236
    stage('CI') {
      stages {
237
238
        stage('Lint Check') {
          agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
239
240
            docker {
              label "linux-cpu-node"
Mufei Li's avatar
Mufei Li committed
241
              image "dgllib/dgl-ci-lint"
Jinjing Zhou's avatar
Jinjing Zhou committed
242
              alwaysPull true
VoVAllen's avatar
VoVAllen committed
243
244
            }
          }
Minjie Wang's avatar
Minjie Wang committed
245
          steps {
246
247
            init_git()
            sh 'bash tests/scripts/task_lint.sh'
VoVAllen's avatar
VoVAllen committed
248
          }
249
250
251
252
253
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
VoVAllen's avatar
VoVAllen committed
254
        }
Mufei Li's avatar
Mufei Li committed
255

256
257
258
259
        stage('Build') {
          parallel {
            stage('CPU Build') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
260
261
                docker {
                  label "linux-cpu-node"
262
                  image "dgllib/dgl-ci-cpu:v220816"
Jinjing Zhou's avatar
Jinjing Zhou committed
263
264
                  args "-u root"
                  alwaysPull true
265
                }
Jinjing Zhou's avatar
Jinjing Zhou committed
266
267
              }
              steps {
268
                build_dgl_linux('cpu')
Jinjing Zhou's avatar
Jinjing Zhou committed
269
              }
270
271
272
273
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
Minjie Wang's avatar
Minjie Wang committed
274
              }
Lingfan Yu's avatar
Lingfan Yu committed
275
            }
276
277
            stage('GPU Build') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
278
279
                docker {
                  label "linux-cpu-node"
280
                  image "dgllib/dgl-ci-gpu:cu101_v220816"
Jinjing Zhou's avatar
Jinjing Zhou committed
281
282
                  args "-u root"
                  alwaysPull true
283
                }
Minjie Wang's avatar
Minjie Wang committed
284
285
              }
              steps {
286
287
                // sh "nvidia-smi"
                build_dgl_linux('gpu')
Minjie Wang's avatar
Minjie Wang committed
288
              }
289
290
291
292
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
Minjie Wang's avatar
Minjie Wang committed
293
              }
294
            }
295
296
297
298
            stage('PyTorch Cugraph GPU Build') {
              agent {
                docker {
                  label "linux-cpu-node"
299
                  image "rapidsai/cugraph_nightly_torch-cuda:11.5-base-ubuntu18.04-py3.9-pytorch1.11.0-rapids22.10"
300
                  args "-u root"
301
                  alwaysPull True
302
303
304
305
306
307
308
309
310
311
312
                }
              }
              steps {
                build_dgl_linux('cugraph')
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
            }
313
314
315
316
            stage('CPU Build (Win64)') {
              // Windows build machines are manually added to Jenkins master with
              // "windows" label as permanent agents.
              agent { label 'windows' }
Minjie Wang's avatar
Minjie Wang committed
317
              steps {
318
319
320
321
322
323
                build_dgl_win64('cpu')
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
Minjie Wang's avatar
Minjie Wang committed
324
              }
Lingfan Yu's avatar
Lingfan Yu committed
325
            }
326
          // Currently we don't have Windows GPU build machines
327
          }
Lingfan Yu's avatar
Lingfan Yu committed
328
        }
329
330
331
332
        stage('Test') {
          parallel {
            stage('C++ CPU') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
333
334
                docker {
                  label "linux-cpu-node"
335
                  image "dgllib/dgl-ci-cpu:v220816"
Jinjing Zhou's avatar
Jinjing Zhou committed
336
                  alwaysPull true
337
338
                }
              }
Minjie Wang's avatar
Minjie Wang committed
339
              steps {
340
341
342
343
344
345
346
347
348
349
                cpp_unit_test_linux('cpu')
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
            }
            stage('C++ GPU') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
350
351
                docker {
                  label "linux-gpu-node"
352
                  image "dgllib/dgl-ci-gpu:cu101_v220816"
Jinjing Zhou's avatar
Jinjing Zhou committed
353
354
                  args "--runtime nvidia"
                  alwaysPull true
355
356
357
358
                }
              }
              steps {
                cpp_unit_test_linux('gpu')
359
360
361
362
363
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
Minjie Wang's avatar
Minjie Wang committed
364
365
              }
            }
366
367
            stage('C++ CPU (Win64)') {
              agent { label 'windows' }
Minjie Wang's avatar
Minjie Wang committed
368
              steps {
369
370
371
372
373
374
                cpp_unit_test_win64()
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
Minjie Wang's avatar
Minjie Wang committed
375
              }
Minjie Wang's avatar
Minjie Wang committed
376
            }
377
378
            stage('Tensorflow CPU') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
379
380
                docker {
                  label "linux-cpu-node"
381
                  image "dgllib/dgl-ci-cpu:v220816"
Jinjing Zhou's avatar
Jinjing Zhou committed
382
                  alwaysPull true
383
384
385
                }
              }
              stages {
386
                stage('Tensorflow CPU Unit test') {
387
388
389
390
391
392
393
394
395
396
                  steps {
                    unit_test_linux('tensorflow', 'cpu')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
397
            }
398
399
            stage('Tensorflow GPU') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
400
401
                docker {
                  label "linux-gpu-node"
402
                  image "dgllib/dgl-ci-gpu:cu101_v220816"
Jinjing Zhou's avatar
Jinjing Zhou committed
403
404
                  args "--runtime nvidia"
                  alwaysPull true
405
406
407
                }
              }
              stages {
408
                stage('Tensorflow GPU Unit test') {
409
410
411
412
413
414
415
416
417
418
                  steps {
                    unit_test_linux('tensorflow', 'gpu')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
VoVAllen's avatar
VoVAllen committed
419
            }
420
421
            stage('Torch CPU') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
422
423
                docker {
                  label "linux-cpu-node"
424
                  image "dgllib/dgl-ci-cpu:v220816"
Jinjing Zhou's avatar
Jinjing Zhou committed
425
426
                  args "--shm-size=4gb"
                  alwaysPull true
427
428
429
                }
              }
              stages {
430
                stage('Torch CPU Unit test') {
431
432
433
434
                  steps {
                    unit_test_linux('pytorch', 'cpu')
                  }
                }
435
                stage('Torch CPU Example test') {
436
437
438
439
                  steps {
                    example_test_linux('pytorch', 'cpu')
                  }
                }
440
                stage('Torch CPU Tutorial test') {
441
442
443
444
445
446
447
448
449
                  steps {
                    tutorial_test_linux('pytorch')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
VoVAllen's avatar
VoVAllen committed
450
              }
Da Zheng's avatar
Da Zheng committed
451
            }
452
453
454
            stage('Torch CPU (Win64)') {
              agent { label 'windows' }
              stages {
455
                stage('Torch CPU (Win64) Unit test') {
456
457
458
459
                  steps {
                    unit_test_win64('pytorch', 'cpu')
                  }
                }
460
                stage('Torch CPU (Win64) Example test') {
461
462
463
464
465
466
467
468
469
470
                  steps {
                    example_test_win64('pytorch', 'cpu')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
471
            }
472
473
            stage('Torch GPU') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
474
475
                docker {
                  label "linux-gpu-node"
476
                  image "dgllib/dgl-ci-gpu:cu101_v220816"
Jinjing Zhou's avatar
Jinjing Zhou committed
477
478
                  args "--runtime nvidia --shm-size=8gb"
                  alwaysPull true
479
480
481
                }
              }
              stages {
482
                stage('Torch GPU Unit test') {
483
484
485
486
487
                  steps {
                    sh 'nvidia-smi'
                    unit_test_linux('pytorch', 'gpu')
                  }
                }
488
                stage('Torch GPU Example test') {
489
490
491
492
493
494
495
496
497
498
                  steps {
                    example_test_linux('pytorch', 'gpu')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
499
            }
500
501
502
503
            stage('Distributed') {
              agent {
                docker {
                  label "linux-cpu-node"
504
                  image "dgllib/dgl-ci-cpu:ssh_v220818"
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
                  args "--shm-size=4gb"
                  alwaysPull true
                }
              }
              stages {
                stage('Distributed Torch CPU Unit test') {
                  steps {
                    unit_distributed_linux('pytorch', 'cpu')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
            }
522
523
524
525
            stage('PyTorch Cugraph GPU') {
              agent {
                docker {
                  label "linux-gpu-node"
526
                  image "rapidsai/cugraph_nightly_torch-cuda:11.5-base-ubuntu18.04-py3.9-pytorch1.11.0-rapids22.10"
527
                  args "--runtime nvidia --shm-size=8gb"
528
                  alwaysPull True
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
                }
              }
              stages {
                stage('PyTorch Cugraph GPU Unit test') {
                  steps {
                    sh 'nvidia-smi'
                    unit_test_cugraph('pytorch', 'cugraph')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
            }
545
546
            stage('MXNet CPU') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
547
548
                docker {
                  label "linux-cpu-node"
549
                  image "dgllib/dgl-ci-cpu:cu101_v220629"
Jinjing Zhou's avatar
Jinjing Zhou committed
550
                  alwaysPull true
551
552
553
                }
              }
              stages {
554
                stage('MXNet CPU Unit test') {
555
556
557
558
559
560
561
562
563
                  steps {
                    unit_test_linux('mxnet', 'cpu')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
564
565
              }
            }
566
567
            stage('MXNet GPU') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
568
569
                docker {
                  label "linux-gpu-node"
570
                  image "dgllib/dgl-ci-gpu:cu101_v220816"
Jinjing Zhou's avatar
Jinjing Zhou committed
571
572
                  args "--runtime nvidia"
                  alwaysPull true
573
574
575
                }
              }
              stages {
576
                stage('MXNet GPU Unit test') {
577
578
579
580
581
582
583
584
585
586
587
                  steps {
                    sh 'nvidia-smi'
                    unit_test_linux('mxnet', 'gpu')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
588
            }
Minjie Wang's avatar
Minjie Wang committed
589
590
591
592
            stage('DGL-Go') {
              agent {
                docker {
                  label "linux-cpu-node"
593
                  image "dgllib/dgl-ci-cpu:v220816"
Minjie Wang's avatar
Minjie Wang committed
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
                  alwaysPull true
                }
              }
              stages {
                stage('DGL-Go CPU test') {
                  steps {
                    go_test_linux()
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
            }
610
611
          }
        }
Minjie Wang's avatar
Minjie Wang committed
612
      }
Minjie Wang's avatar
Minjie Wang committed
613
    }
Minjie Wang's avatar
Minjie Wang committed
614
  }
615
616
  post {
    always {
617
      script {
618
        node("dglci-post-linux") {
619
620
621
          docker.image('dgllib/dgl-ci-awscli:v220418').inside("--pull always --entrypoint=''") {
            sh("rm -rf ci_tmp")
            dir('ci_tmp') {
622
              sh("curl -k -o cireport.log ${BUILD_URL}consoleText")
Rhett Ying's avatar
Rhett Ying committed
623
624
              sh("curl -o report.py https://raw.githubusercontent.com/dmlc/dgl/master/tests/scripts/ci_report/report.py")
              sh("curl -o status.py https://raw.githubusercontent.com/dmlc/dgl/master/tests/scripts/ci_report/status.py")
625
              sh("curl -k -L ${BUILD_URL}wfapi")
626
627
628
629
630
631
632
              sh("cat status.py")
              sh("pytest --html=report.html --self-contained-html report.py || true")
              sh("aws s3 sync ./ s3://dgl-ci-result/${JOB_NAME}/${BUILD_NUMBER}/${BUILD_ID}/logs/  --exclude '*' --include '*.log' --acl public-read --content-type text/plain")
              sh("aws s3 sync ./ s3://dgl-ci-result/${JOB_NAME}/${BUILD_NUMBER}/${BUILD_ID}/logs/  --exclude '*.log' --acl public-read")

              def comment = sh(returnStdout: true, script: "python3 status.py").trim()
              echo(comment)
633
634
635
              if ((env.BRANCH_NAME).startsWith('PR-')) {
                pullRequest.comment(comment)
              }
636
637
638
639
640
641
            }
          }
        }
        node('windows') {
            bat(script: "rmvirtualenv ${BUILD_TAG}", returnStatus: true)
        }
642
643
644
      }
    }
  }
Minjie Wang's avatar
Minjie Wang committed
645
}