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

Lingfan Yu's avatar
Lingfan Yu committed
3
def init_git_submodule() {
Minjie Wang's avatar
Minjie Wang committed
4
5
  sh "git submodule init"
  sh "git submodule update"
Lingfan Yu's avatar
Lingfan Yu committed
6
7
}

8
9
10
def init_git_submodule_win64() {
  bat "git submodule init"
  bat "git submodule update"
Lingfan Yu's avatar
Lingfan Yu committed
11
12
}

Lingfan Yu's avatar
Lingfan Yu committed
13
def build_dgl() {
14
  sh "bash tests/scripts/build_dgl.sh"
Lingfan Yu's avatar
Lingfan Yu committed
15
16
}

17
18
19
20
21
22
23
24
25
def build_dgl_win64() {
  /* Assuming that Windows slaves are already configured with MSBuild VS2017,
   * CMake and Python/pip/setuptools etc. */
  bat "CALL tests\\scripts\\build_dgl.bat"
}

def unit_test(backend, dev) {
  withEnv(["DGL_LIBRARY_PATH=${env.WORKSPACE}/build", "PYTHONPATH=${env.WORKSPACE}/python", "DGLBACKEND=${backend}"]) {
    sh "bash tests/scripts/task_unit_test.sh ${backend}"
Minjie Wang's avatar
Minjie Wang committed
26
  }
Lingfan Yu's avatar
Lingfan Yu committed
27
28
}

29
30
31
def unit_test_win64(backend, dev) {
  withEnv(["DGL_LIBRARY_PATH=${env.WORKSPACE}\\build", "PYTHONPATH=${env.WORKSPACE}\\python", "DGLBACKEND=${backend}"]) {
    bat "CALL tests\\scripts\\task_unit_test.bat ${backend}"
Minjie Wang's avatar
Minjie Wang committed
32
  }
Da Zheng's avatar
Da Zheng committed
33
34
}

35
36
def example_test(backend, dev) {
  withEnv(["DGL_LIBRARY_PATH=${env.WORKSPACE}/build", "PYTHONPATH=${env.WORKSPACE}/python", "DGLBACKEND=${backend}"]) {
Minjie Wang's avatar
Minjie Wang committed
37
    dir ("tests/scripts") {
38
      sh "bash task_example_test.sh ${dev}"
Minjie Wang's avatar
Minjie Wang committed
39
40
41
42
    }
  }
}

43
44
45
46
47
48
49
50
def example_test_win64(backend, dev) {
  withEnv(["DGL_LIBRARY_PATH=${env.WORKSPACE}\\build", "PYTHONPATH=${env.WORKSPACE}\\python", "DGLBACKEND=${backend}"]) {
    dir ("tests\\scripts") {
      bat "CALL task_example_test ${dev}"
    }
  }
}

Minjie Wang's avatar
Minjie Wang committed
51
def pytorch_tutorials() {
Minjie Wang's avatar
Minjie Wang committed
52
53
  withEnv(["DGL_LIBRARY_PATH=${env.WORKSPACE}/build", "PYTHONPATH=${env.WORKSPACE}/python"]) {
    dir ("tests/scripts") {
54
      sh "bash task_pytorch_tutorial_test.sh"
Lingfan Yu's avatar
Lingfan Yu committed
55
    }
Minjie Wang's avatar
Minjie Wang committed
56
  }
Lingfan Yu's avatar
Lingfan Yu committed
57
58
}

59
def mxnet_tutorials() {
60
  withEnv(["DGL_LIBRARY_PATH=${env.WORKSPACE}/build", "PYTHONPATH=${env.WORKSPACE}/python", "DGLBACKEND=mxnet"]) {
61
62
63
64
65
    dir("tests/scripts") {
      sh "bash task_mxnet_tutorial_test.sh"
    }
  }
}
Minjie Wang's avatar
Minjie Wang committed
66
pipeline {
Minjie Wang's avatar
Minjie Wang committed
67
68
69
  agent none
  stages {
    stage("Lint Check") {
70
71
72
      agent {
        docker { image "dgllib/dgl-ci-lint" }
      }
Minjie Wang's avatar
Minjie Wang committed
73
74
      steps {
        init_git_submodule()
75
        sh "bash tests/scripts/task_lint.sh"
Minjie Wang's avatar
Minjie Wang committed
76
77
78
79
80
      }
    }
    stage("Build") {
      parallel {
        stage("CPU Build") {
81
82
83
          agent {
            docker { image "dgllib/dgl-ci-cpu" }
          }
Minjie Wang's avatar
Minjie Wang committed
84
          steps {
85
            init_git_submodule()
Minjie Wang's avatar
Minjie Wang committed
86
87
88
89
90
91
92
93
94
95
96
            build_dgl()
          }
        }
        stage("GPU Build") {
          agent {
            docker {
              image "dgllib/dgl-ci-gpu"
              args "--runtime nvidia"
            }
          }
          steps {
97
            init_git_submodule()
Minjie Wang's avatar
Minjie Wang committed
98
99
100
101
            build_dgl()
          }
        }
        stage("MXNet CPU Build (temp)") {
102
103
104
          agent {
            docker { image "dgllib/dgl-ci-mxnet-cpu" }
          }
Minjie Wang's avatar
Minjie Wang committed
105
          steps {
106
            init_git_submodule()
Minjie Wang's avatar
Minjie Wang committed
107
108
109
            build_dgl()
          }
        }
110
111
112
113
114
115
116
117
118
        stage("CPU Build (Win64/PyTorch)") {
          agent {
            label "windows"
          }
          steps {
            init_git_submodule_win64()
            build_dgl_win64()
          }
        }
Minjie Wang's avatar
Minjie Wang committed
119
120
121
122
123
      }
    }
    stage("Test") {
      parallel {
        stage("Pytorch CPU") {
124
125
126
          agent {
            docker { image "dgllib/dgl-ci-cpu" }
          }
Minjie Wang's avatar
Minjie Wang committed
127
128
          stages {
            stage("TH CPU unittest") {
129
              steps { unit_test("pytorch", "CPU") }
Lingfan Yu's avatar
Lingfan Yu committed
130
            }
Minjie Wang's avatar
Minjie Wang committed
131
            stage("TH CPU example test") {
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
              steps { example_test("pytorch", "CPU") }
            }
          }
          post {
            always { junit "*.xml" }
          }
        }
        stage("Pytorch CPU (Windows)") {
          agent { label "windows" }
          stages {
            stage("TH CPU Win64 unittest") {
              steps { unit_test_win64("pytorch", "CPU") }
            }
            stage("TH CPU Win64 example test") {
              steps { example_test_win64("pytorch", "CPU") }
Lingfan Yu's avatar
Lingfan Yu committed
147
            }
Minjie Wang's avatar
Minjie Wang committed
148
149
150
151
          }
          post {
            always { junit "*.xml" }
          }
Lingfan Yu's avatar
Lingfan Yu committed
152
        }
Minjie Wang's avatar
Minjie Wang committed
153
154
155
156
157
        stage("Pytorch GPU") {
          agent {
            docker {
              image "dgllib/dgl-ci-gpu"
              args "--runtime nvidia"
Minjie Wang's avatar
Minjie Wang committed
158
            }
Minjie Wang's avatar
Minjie Wang committed
159
160
161
162
163
164
165
          }
          stages {
            // TODO: have GPU unittest
            //stage("TH GPU unittest") {
            //  steps { pytorch_unit_test("GPU") }
            //}
            stage("TH GPU example test") {
166
              steps { example_test("pytorch", "GPU") }
Minjie Wang's avatar
Minjie Wang committed
167
168
169
170
171
172
            }
          }
          // TODO: have GPU unittest
          //post {
          //  always { junit "*.xml" }
          //}
Minjie Wang's avatar
Minjie Wang committed
173
        }
Minjie Wang's avatar
Minjie Wang committed
174
        stage("MXNet CPU") {
175
176
177
          agent {
            docker { image "dgllib/dgl-ci-mxnet-cpu" }
          }
Minjie Wang's avatar
Minjie Wang committed
178
179
          stages {
            stage("MX Unittest") {
180
              steps { unit_test("mxnet", "CPU") }
Da Zheng's avatar
Da Zheng committed
181
            }
Minjie Wang's avatar
Minjie Wang committed
182
183
184
185
          }
          post {
            always { junit "*.xml" }
          }
Da Zheng's avatar
Da Zheng committed
186
        }
Minjie Wang's avatar
Minjie Wang committed
187
188
189
      }
    }
    stage("Doc") {
190
191
      parallel {
        stage("TH Tutorial") {
192
193
194
          agent {
            docker { image "dgllib/dgl-ci-cpu" }
          }
195
196
197
198
199
          steps {
            pytorch_tutorials()
          }
        }
        stage("MX Tutorial") {
200
201
202
          agent {
            docker { image "dgllib/dgl-ci-mxnet-cpu" }
          }
203
204
205
206
          steps {
            mxnet_tutorials()
          }
        }
Minjie Wang's avatar
Minjie Wang committed
207
      }
Minjie Wang's avatar
Minjie Wang committed
208
    }
Minjie Wang's avatar
Minjie Wang committed
209
  }
Minjie Wang's avatar
Minjie Wang committed
210
}