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

peizhou001's avatar
peizhou001 committed
3
dgl_linux_libs = 'build/libdgl.so, build/runUnitTests, python/dgl/_ffi/_cy3/core.cpython-*-x86_64-linux-gnu.so, build/tensoradapter/pytorch/*.so, build/dgl_sparse/*.so, build/graphbolt/*.so'
Minjie Wang's avatar
Minjie Wang committed
4
// Currently DGL on Windows is not working with Cython yet
peizhou001's avatar
peizhou001 committed
5
dgl_win64_libs = "build\\dgl.dll, build\\runUnitTests.exe, build\\tensoradapter\\pytorch\\*.dll, build\\dgl_sparse\\*.dll, build\\graphbolt\\*.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
def unit_distributed_linux(backend, dev) {
  init_git()
  unpack_lib("dgl-${dev}-linux", dgl_linux_libs)
68
  timeout(time: 40, unit: 'MINUTES') {
69
70
71
72
    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
  def devs = ['dgl-bot', 'noreply', 'Rhett-Ying', 'BarclayII', 'jermainewang',
Rhett Ying's avatar
Rhett Ying committed
123
              'mufeili', 'isratnisa', 'rudongyu', 'classicsong', 'HuXiangkun',
124
              'hetong007', 'kylasa', 'frozenbugs', 'peizhou001', 'zheng-da',
125
              'czkkkkkk', 'thvasilo',
126
              'nv-dlasalle', 'yaox12', 'chang-l', 'Kh4L', 'VibhuJawa',
127
              'kkranen',
128
129
              'bgawrych', 'itaraban', 'daniil-sizov', 'anko-intel', 'Kacper-Pietkun',
              'hankaj', 'agrabows', 'DominikaJedynak', 'RafLit',
130
              'VoVAllen',
keli-wen's avatar
keli-wen committed
131
              'keli-wen',
132
133
134
135
136
137
138
              ]
  return (name in devs)
}

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

141
142
def regression_test_done = false

Minjie Wang's avatar
Minjie Wang committed
143
pipeline {
Jinjing Zhou's avatar
Jinjing Zhou committed
144
  agent any
145
  triggers {
Rhett Ying's avatar
Rhett Ying committed
146
        issueCommentTrigger('@dgl-bot.*')
147
  }
Minjie Wang's avatar
Minjie Wang committed
148
  stages {
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
    // 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)) {
Rhett Ying's avatar
Rhett Ying committed
167
            pullRequest.comment("Not authorized to trigger CI. Please ask core developer to help trigger via issuing comment: \n - `@dgl-bot`")
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
            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') {
196
      agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
197
198
199
200
        docker {
            label 'linux-benchmark-node'
            image 'dgllib/dgl-ci-lint'
            alwaysPull true
Jinjing Zhou's avatar
Jinjing Zhou committed
201
        }
VoVAllen's avatar
VoVAllen committed
202
      }
203
      when { triggeredBy 'IssueCommentCause' }
Minjie Wang's avatar
Minjie Wang committed
204
      steps {
Jinjing Zhou's avatar
Jinjing Zhou committed
205
206
          checkout scm
          script {
207
              def comment = env.GITHUB_COMMENT
Rhett Ying's avatar
Rhett Ying committed
208
209
210
211
212
213
214
215
216
              def command_lists = comment.split(' ')
              if (command_lists.size() == 1) {
                // CI command, not for regression
                return
              }
              if (command_lists.size() != 5) {
                pullRequest.comment('Cannot run the regression test due to unknown command')
                error('Unknown command')
              }
217
              def author = env.GITHUB_COMMENT_AUTHOR
218
219
              echo("${env.GIT_URL}")
              echo("${env}")
220
              if (!is_admin(author)) {
221
                error('Not authorized to launch regression tests')
222
223
              }
              dir('benchmark_scripts_repo') {
Jinjing Zhou's avatar
Jinjing Zhou committed
224
225
                checkout([$class: 'GitSCM', branches: [[name: '*/master']],
                        userRemoteConfigs: [[credentialsId: 'github', url: 'https://github.com/dglai/DGL_scripts.git']]])
226
227
228
              }
              sh('cp benchmark_scripts_repo/benchmark/* benchmarks/scripts/')
              def instance_type = command_lists[2].replace('.', '')
Jinjing Zhou's avatar
Jinjing Zhou committed
229
              pullRequest.comment("Start the Regression test. View at ${RUN_DISPLAY_URL}")
230
              def prNumber = env.BRANCH_NAME.replace('PR-', '')
231
232
              dir('benchmarks/scripts') {
                sh('python3 -m pip install boto3')
233
                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}'")
234
235
236
              }
              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'
237
              regression_test_done = true
Jinjing Zhou's avatar
Jinjing Zhou committed
238
          }
239
      }
Minjie Wang's avatar
Minjie Wang committed
240
    }
Jinjing Zhou's avatar
Jinjing Zhou committed
241
    stage('CI') {
242
      when { expression { !regression_test_done } }
Jinjing Zhou's avatar
Jinjing Zhou committed
243
      stages {
244
245
246
        stage('Abort Previous CI') {
          steps {
            script {
247
248
249
250
251
252
253
254
              if (env.BRANCH_NAME != "master") {
                // Jenkins will abort an older build if a newer build already
                // passed a higher milestone.
                // https://www.jenkins.io/doc/pipeline/steps/pipeline-milestone-step/
                def buildNumber = env.BUILD_NUMBER as int
                for (int i = 1; i <= buildNumber; i++) {
                  milestone(i)
                }
255
256
257
258
259
              }
            }
          }
        }

260
261
        stage('Lint Check') {
          agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
262
            docker {
263
              label "linux-benchmark-node"
Mufei Li's avatar
Mufei Li committed
264
              image "dgllib/dgl-ci-lint"
Jinjing Zhou's avatar
Jinjing Zhou committed
265
              alwaysPull true
VoVAllen's avatar
VoVAllen committed
266
267
            }
          }
Minjie Wang's avatar
Minjie Wang committed
268
          steps {
269
270
            init_git()
            sh 'bash tests/scripts/task_lint.sh'
VoVAllen's avatar
VoVAllen committed
271
          }
272
273
274
275
276
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
VoVAllen's avatar
VoVAllen committed
277
        }
Mufei Li's avatar
Mufei Li committed
278

279
280
281
282
        stage('Build') {
          parallel {
            stage('CPU Build') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
283
284
                docker {
                  label "linux-cpu-node"
285
                  image "dgllib/dgl-ci-cpu:v230210"
Jinjing Zhou's avatar
Jinjing Zhou committed
286
287
                  args "-u root"
                  alwaysPull true
288
                }
Jinjing Zhou's avatar
Jinjing Zhou committed
289
290
              }
              steps {
291
                build_dgl_linux('cpu')
Jinjing Zhou's avatar
Jinjing Zhou committed
292
              }
293
294
295
296
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
Minjie Wang's avatar
Minjie Wang committed
297
              }
Lingfan Yu's avatar
Lingfan Yu committed
298
            }
299
300
            stage('GPU Build') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
301
302
                docker {
                  label "linux-cpu-node"
303
                  image "dgllib/dgl-ci-gpu:cu102_v230210"
Jinjing Zhou's avatar
Jinjing Zhou committed
304
305
                  args "-u root"
                  alwaysPull true
306
                }
Minjie Wang's avatar
Minjie Wang committed
307
308
              }
              steps {
309
310
                // sh "nvidia-smi"
                build_dgl_linux('gpu')
Minjie Wang's avatar
Minjie Wang committed
311
              }
312
313
314
315
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
Minjie Wang's avatar
Minjie Wang committed
316
              }
317
            }
318
319
320
321
            stage('PyTorch Cugraph GPU Build') {
              agent {
                docker {
                  label "linux-cpu-node"
322
                  image "rapidsai/cugraph_stable_torch-cuda:11.8-base-ubuntu20.04-py3.10-pytorch2.0.0-rapids23.04"
323
                  args "-u root"
324
                  alwaysPull true
325
326
327
328
329
330
331
332
333
334
335
                }
              }
              steps {
                build_dgl_linux('cugraph')
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
            }
336
337
338
339
            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
340
              steps {
341
342
343
344
345
346
                build_dgl_win64('cpu')
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
Minjie Wang's avatar
Minjie Wang committed
347
              }
Lingfan Yu's avatar
Lingfan Yu committed
348
            }
349
          // Currently we don't have Windows GPU build machines
350
          }
Lingfan Yu's avatar
Lingfan Yu committed
351
        }
352
353
354
355
        stage('Test') {
          parallel {
            stage('C++ CPU') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
356
357
                docker {
                  label "linux-cpu-node"
358
                  image "dgllib/dgl-ci-cpu:v230210"
Jinjing Zhou's avatar
Jinjing Zhou committed
359
                  alwaysPull true
360
361
                }
              }
Minjie Wang's avatar
Minjie Wang committed
362
              steps {
363
364
365
366
367
368
369
370
371
372
                cpp_unit_test_linux('cpu')
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
            }
            stage('C++ GPU') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
373
374
                docker {
                  label "linux-gpu-node"
375
                  image "dgllib/dgl-ci-gpu:cu102_v230210"
Jinjing Zhou's avatar
Jinjing Zhou committed
376
377
                  args "--runtime nvidia"
                  alwaysPull true
378
379
380
381
                }
              }
              steps {
                cpp_unit_test_linux('gpu')
382
383
384
385
386
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
Minjie Wang's avatar
Minjie Wang committed
387
388
              }
            }
389
390
            stage('C++ CPU (Win64)') {
              agent { label 'windows' }
Minjie Wang's avatar
Minjie Wang committed
391
              steps {
392
393
394
395
396
397
                cpp_unit_test_win64()
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
Minjie Wang's avatar
Minjie Wang committed
398
              }
Minjie Wang's avatar
Minjie Wang committed
399
            }
400
401
            stage('Tensorflow CPU') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
402
403
                docker {
                  label "linux-cpu-node"
404
                  image "dgllib/dgl-ci-cpu:v230210"
Jinjing Zhou's avatar
Jinjing Zhou committed
405
                  alwaysPull true
406
407
408
                }
              }
              stages {
409
                stage('Tensorflow CPU Unit test') {
410
411
412
413
414
415
416
417
418
419
                  steps {
                    unit_test_linux('tensorflow', 'cpu')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
420
            }
421
422
            stage('Tensorflow GPU') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
423
424
                docker {
                  label "linux-gpu-node"
425
                  image "dgllib/dgl-ci-gpu:cu101_v230210"
Jinjing Zhou's avatar
Jinjing Zhou committed
426
427
                  args "--runtime nvidia"
                  alwaysPull true
428
429
430
                }
              }
              stages {
431
                stage('Tensorflow GPU Unit test') {
432
433
434
435
436
437
438
439
440
441
                  steps {
                    unit_test_linux('tensorflow', 'gpu')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
VoVAllen's avatar
VoVAllen committed
442
            }
443
444
            stage('Torch CPU') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
445
446
                docker {
                  label "linux-cpu-node"
447
                  image "dgllib/dgl-ci-cpu:v230210"
Jinjing Zhou's avatar
Jinjing Zhou committed
448
449
                  args "--shm-size=4gb"
                  alwaysPull true
450
451
452
                }
              }
              stages {
453
                stage('Torch CPU Unit test') {
454
455
456
457
                  steps {
                    unit_test_linux('pytorch', 'cpu')
                  }
                }
458
                stage('Torch CPU Example test') {
459
460
461
462
                  steps {
                    example_test_linux('pytorch', 'cpu')
                  }
                }
463
                stage('Torch CPU Tutorial test') {
464
465
466
467
468
469
470
471
472
                  steps {
                    tutorial_test_linux('pytorch')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
VoVAllen's avatar
VoVAllen committed
473
              }
Da Zheng's avatar
Da Zheng committed
474
            }
475
476
477
            stage('Torch CPU (Win64)') {
              agent { label 'windows' }
              stages {
478
                stage('Torch CPU (Win64) Unit test') {
479
480
481
482
                  steps {
                    unit_test_win64('pytorch', 'cpu')
                  }
                }
483
                stage('Torch CPU (Win64) Example test') {
484
485
486
487
488
489
490
491
492
493
                  steps {
                    example_test_win64('pytorch', 'cpu')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
494
            }
495
496
            stage('Torch GPU') {
              agent {
Jinjing Zhou's avatar
Jinjing Zhou committed
497
498
                docker {
                  label "linux-gpu-node"
499
                  image "dgllib/dgl-ci-gpu:cu102_v230210"
Jinjing Zhou's avatar
Jinjing Zhou committed
500
501
                  args "--runtime nvidia --shm-size=8gb"
                  alwaysPull true
502
503
504
                }
              }
              stages {
505
                stage('Torch GPU Unit test') {
506
507
508
509
510
                  steps {
                    sh 'nvidia-smi'
                    unit_test_linux('pytorch', 'gpu')
                  }
                }
511
                stage('Torch GPU Example test') {
512
513
514
515
516
517
518
519
520
521
                  steps {
                    example_test_linux('pytorch', 'gpu')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
522
            }
523
524
525
526
            stage('Distributed') {
              agent {
                docker {
                  label "linux-cpu-node"
527
                  image "dgllib/dgl-ci-cpu:v230210"
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
                  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
                }
              }
            }
545
546
547
548
            stage('PyTorch Cugraph GPU') {
              agent {
                docker {
                  label "linux-gpu-node"
549
                  image "rapidsai/cugraph_stable_torch-cuda:11.8-base-ubuntu20.04-py3.10-pytorch2.0.0-rapids23.04"
550
                  args "--runtime nvidia --shm-size=8gb"
551
                  alwaysPull true
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
                }
              }
              stages {
                stage('PyTorch Cugraph GPU Unit test') {
                  steps {
                    sh 'nvidia-smi'
                    unit_test_cugraph('pytorch', 'cugraph')
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
            }
Minjie Wang's avatar
Minjie Wang committed
568
569
570
571
            stage('DGL-Go') {
              agent {
                docker {
                  label "linux-cpu-node"
572
                  image "dgllib/dgl-ci-cpu:v230210"
Minjie Wang's avatar
Minjie Wang committed
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
                  alwaysPull true
                }
              }
              stages {
                stage('DGL-Go CPU test') {
                  steps {
                    go_test_linux()
                  }
                }
              }
              post {
                always {
                  cleanWs disableDeferredWipeout: true, deleteDirs: true
                }
              }
            }
589
590
          }
        }
Minjie Wang's avatar
Minjie Wang committed
591
      }
Minjie Wang's avatar
Minjie Wang committed
592
    }
Minjie Wang's avatar
Minjie Wang committed
593
  }
594
595
  post {
    always {
596
      script {
597
        node("dglci-post-linux") {
598
599
600
          docker.image('dgllib/dgl-ci-awscli:v220418').inside("--pull always --entrypoint=''") {
            sh("rm -rf ci_tmp")
            dir('ci_tmp') {
601
              sh("curl -k -o cireport.log ${BUILD_URL}consoleText")
Rhett Ying's avatar
Rhett Ying committed
602
603
              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")
604
              sh("curl -k -L ${BUILD_URL}wfapi")
605
606
607
608
609
              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")

610
              def comment = sh(returnStdout: true, script: "python3 status.py --result ${currentBuild.currentResult}").trim()
611
              echo(comment)
612
613
614
              if ((env.BRANCH_NAME).startsWith('PR-')) {
                pullRequest.comment(comment)
              }
615
616
617
618
619
620
            }
          }
        }
        node('windows') {
            bat(script: "rmvirtualenv ${BUILD_TAG}", returnStatus: true)
        }
621
622
623
      }
    }
  }
Minjie Wang's avatar
Minjie Wang committed
624
}