Jenkinsfile 5.58 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
5
6
7
8
9
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
dgl_windows_libs = "build\\dgl.dll, build\\runUnitTests.exe"

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"
Minjie Wang's avatar
Minjie Wang committed
12
  sh "ls -lh"
Lingfan Yu's avatar
Lingfan Yu committed
13
14
}

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

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

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

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

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

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

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

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

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

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

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