Jenkinsfile 3.06 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#!/usr/bin/env groovy
// Adapted from github.com/dmlc/dgl/Jenkinsfile

app_linux_libs = "_deps/dgl*.whl"

app = "dgllife"

def init_git() {
  sh "rm -rf *"
  checkout scm
  sh "git submodule update --recursive --init"
}

// pack libraries for later use
def pack_dgl(name, libs) {
  echo "Packing ${libs} into ${name}"
  stash includes: libs, name: name
}

// unpack libraries saved before
def unpack_dgl(name, libs) {
  unstash name
  echo "Unpacked ${libs} from ${name}"
}

def build_linux(dev) {
  init_git()
  sh "bash tests/scripts/build.sh ${dev}"
  pack_dgl("${app}-${dev}-linux", app_linux_libs)
}

def unit_test_linux(backend, dev) {
  init_git()
  unpack_dgl("${app}-${dev}-linux", app_linux_libs)
  timeout(time: 10, unit: 'MINUTES') {
    sh "bash tests/scripts/task_unit_test.sh ${backend} ${dev}"
  }
}

pipeline {
  agent any
  stages {
    stage("Lint Check") {
      agent {
        docker {
          label "linux-cpu-node"
          image "dgllib/dgl-ci-lint"
        }
      }
      steps {
        init_git()
        sh "bash tests/scripts/task_lint.sh"
      }
      post {
        always {
          cleanWs disableDeferredWipeout: true, deleteDirs: true
        }
      }
    }
    stage("Build") {
      parallel {
        stage("CPU Build") {
          agent {
            docker {
              label "linux-cpu-node"
              image "dgllib/${app}-ci-cpu"
            }
          }
          steps {
            build_linux("cpu")
          }
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
        }
        stage("GPU Build") {
          agent {
            docker {
              label "linux-cpu-node"
              image "dgllib/${app}-ci-gpu"
              //args "-u root"
            }
          }
          steps {
            build_linux("gpu")
          }
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
        }
      }
    }
    stage("Test") {
      parallel {
        stage("Torch CPU") {
          agent {
            docker {
              label "linux-cpu-node"
              image "dgllib/${app}-ci-cpu"
            }
          }
          stages {
            stage("Unit test") {
              steps {
                unit_test_linux("pytorch", "cpu")
              }
            }
          }
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
        }
        stage("Torch GPU") {
          agent {
            docker {
              label "linux-gpu-node"
              image "dgllib/${app}-ci-gpu"
              args "--runtime nvidia"
            }
          }
          stages {
            stage("Unit test") {
              steps {
                sh "nvidia-smi"
                unit_test_linux("pytorch", "gpu")
              }
            }
          }
          post {
            always {
              cleanWs disableDeferredWipeout: true, deleteDirs: true
            }
          }
        }
      }
    }
  }
}