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

Minjie Wang's avatar
Minjie Wang committed
3
4
dgl_linux_libs = "build/libdgl.so, build/runUnitTests, python/dgl/_ffi/_cy3/core.cpython-35m-x86_64-linux-gnu.so"
// 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
Minjie Wang's avatar
Minjie Wang committed
10
11
  sh "git submodule init"
  sh "git submodule update"
Lingfan Yu's avatar
Lingfan Yu committed
12
13
}

Minjie Wang's avatar
Minjie Wang committed
14
15
def init_git_win64() {
  checkout scm
16
17
  bat "git submodule init"
  bat "git submodule update"
Lingfan Yu's avatar
Lingfan Yu committed
18
19
}

Minjie Wang's avatar
Minjie Wang committed
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// 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()
34
  sh "bash tests/scripts/build_dgl.sh"
Minjie Wang's avatar
Minjie Wang committed
35
  pack_lib("dgl-${dev}-linux", dgl_linux_libs)
Lingfan Yu's avatar
Lingfan Yu committed
36
37
}

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

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

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

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

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

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

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

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

Minjie Wang's avatar
Minjie Wang committed
98
pipeline {
Minjie Wang's avatar
Minjie Wang committed
99
100
101
  agent none
  stages {
    stage("Lint Check") {
Minjie Wang's avatar
Minjie Wang committed
102
      agent { docker { image "dgllib/dgl-ci-lint" } }
Minjie Wang's avatar
Minjie Wang committed
103
      steps {
Minjie Wang's avatar
Minjie Wang committed
104
        init_git()
105
        sh "bash tests/scripts/task_lint.sh"
Minjie Wang's avatar
Minjie Wang committed
106
107
108
109
110
      }
    }
    stage("Build") {
      parallel {
        stage("CPU Build") {
Minjie Wang's avatar
Minjie Wang committed
111
          agent { docker { image "dgllib/dgl-ci-cpu" } }
Minjie Wang's avatar
Minjie Wang committed
112
          steps {
Minjie Wang's avatar
Minjie Wang committed
113
            build_dgl_linux("cpu")
Minjie Wang's avatar
Minjie Wang committed
114
115
116
117
118
119
120
121
122
123
          }
        }
        stage("GPU Build") {
          agent {
            docker {
              image "dgllib/dgl-ci-gpu"
              args "--runtime nvidia"
            }
          }
          steps {
Minjie Wang's avatar
Minjie Wang committed
124
125
            sh "nvidia-smi"
            build_dgl_linux("gpu")
Minjie Wang's avatar
Minjie Wang committed
126
127
          }
        }
Minjie Wang's avatar
Minjie Wang committed
128
129
130
131
        stage("CPU Build (Win64)") {
          // Windows build machines are manually added to Jenkins master with
          // "windows" label as permanent agents.
          agent { label "windows" }
132
          steps {
Minjie Wang's avatar
Minjie Wang committed
133
            build_dgl_win64("cpu")
134
135
          }
        }
Minjie Wang's avatar
Minjie Wang committed
136
        // Currently we don't have Windows GPU build machines
Minjie Wang's avatar
Minjie Wang committed
137
138
139
140
      }
    }
    stage("Test") {
      parallel {
Minjie Wang's avatar
Minjie Wang committed
141
142
143
144
        stage("C++ CPU") {
          agent { docker { image "dgllib/dgl-ci-cpu" } }
          steps {
            cpp_unit_test_linux()
VoVAllen's avatar
VoVAllen committed
145
146
          }
        }
Minjie Wang's avatar
Minjie Wang committed
147
148
149
150
        stage("C++ CPU (Win64)") {
          agent { label "windows" }
          steps {
            cpp_unit_test_win64()
151
          }
Minjie Wang's avatar
Minjie Wang committed
152
153
154
        }
        stage("Torch CPU") {
          agent { docker { image "dgllib/dgl-ci-cpu" } }
Minjie Wang's avatar
Minjie Wang committed
155
          stages {
Minjie Wang's avatar
Minjie Wang committed
156
157
            stage("Unit test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
158
                unit_test_linux("pytorch", "cpu")
Minjie Wang's avatar
Minjie Wang committed
159
              }
Lingfan Yu's avatar
Lingfan Yu committed
160
            }
Minjie Wang's avatar
Minjie Wang committed
161
162
            stage("Example test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
163
                example_test_linux("pytorch", "cpu")
Minjie Wang's avatar
Minjie Wang committed
164
165
166
167
              }
            }
            stage("Tutorial test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
168
                tutorial_test_linux("pytorch")
Minjie Wang's avatar
Minjie Wang committed
169
              }
170
171
172
            }
          }
        }
Minjie Wang's avatar
Minjie Wang committed
173
        stage("Torch CPU (Win64)") {
174
175
          agent { label "windows" }
          stages {
Minjie Wang's avatar
Minjie Wang committed
176
177
178
179
            stage("Unit test") {
              steps {
                unit_test_win64("pytorch", "cpu")
              }
180
            }
Minjie Wang's avatar
Minjie Wang committed
181
182
183
184
            stage("Example test") {
              steps {
                example_test_win64("pytorch", "cpu")
              }
Lingfan Yu's avatar
Lingfan Yu committed
185
            }
Minjie Wang's avatar
Minjie Wang committed
186
          }
Lingfan Yu's avatar
Lingfan Yu committed
187
        }
Minjie Wang's avatar
Minjie Wang committed
188
        stage("Torch GPU") {
Minjie Wang's avatar
Minjie Wang committed
189
190
191
192
          agent {
            docker {
              image "dgllib/dgl-ci-gpu"
              args "--runtime nvidia"
Minjie Wang's avatar
Minjie Wang committed
193
            }
Minjie Wang's avatar
Minjie Wang committed
194
195
          }
          stages {
Minjie Wang's avatar
Minjie Wang committed
196
197
            stage("Unit test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
198
                //unit_test_linux("pytorch", "gpu")
Minjie Wang's avatar
Minjie Wang committed
199
200
201
202
203
                sh "nvidia-smi"
              }
            }
            stage("Example test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
204
                example_test_linux("pytorch", "gpu")
Minjie Wang's avatar
Minjie Wang committed
205
              }
Minjie Wang's avatar
Minjie Wang committed
206
207
            }
          }
Minjie Wang's avatar
Minjie Wang committed
208
        }
Minjie Wang's avatar
Minjie Wang committed
209
        stage("MXNet CPU") {
Minjie Wang's avatar
Minjie Wang committed
210
          agent { docker { image "dgllib/dgl-ci-cpu" } }
Minjie Wang's avatar
Minjie Wang committed
211
          stages {
Minjie Wang's avatar
Minjie Wang committed
212
213
            stage("Unit test") {
              steps {
Minjie Wang's avatar
Minjie Wang committed
214
                unit_test_linux("mxnet", "cpu")
VoVAllen's avatar
VoVAllen committed
215
              }
Da Zheng's avatar
Da Zheng committed
216
            }
Minjie Wang's avatar
Minjie Wang committed
217
218
            //stage("Example test") {
            //  steps {
Minjie Wang's avatar
Minjie Wang committed
219
            //    unit_test_linux("pytorch", "cpu")
Minjie Wang's avatar
Minjie Wang committed
220
221
222
223
            //  }
            //}
            //stage("Tutorial test") {
            //  steps {
Minjie Wang's avatar
Minjie Wang committed
224
            //    tutorial_test_linux("mxnet")
Minjie Wang's avatar
Minjie Wang committed
225
226
            //  }
            //}
227
228
          }
        }
Minjie Wang's avatar
Minjie Wang committed
229
      }
Minjie Wang's avatar
Minjie Wang committed
230
    }
Minjie Wang's avatar
Minjie Wang committed
231
  }
Minjie Wang's avatar
Minjie Wang committed
232
}