https://github.com/dmlc/dgl
Raw File
Tip revision: 660f356e0664e52abf4cb187e71a2aec42a6ae28 authored by Minjie Wang on 08 March 2019, 22:07:42 UTC
Merge branch 'master' of github.com:zzhang-cn/dgl into 0.2.x
Tip revision: 660f356
Jenkinsfile
#!/usr/bin/env groovy

def init_git_submodule() {
  sh "git submodule init"
  sh "git submodule update"
}

def init_git_submodule_win64() {
  bat "git submodule init"
  bat "git submodule update"
}

def build_dgl() {
  sh "bash tests/scripts/build_dgl.sh"
}

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}"
  }
}

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}"
  }
}

def example_test(backend, dev) {
  withEnv(["DGL_LIBRARY_PATH=${env.WORKSPACE}/build", "PYTHONPATH=${env.WORKSPACE}/python", "DGLBACKEND=${backend}"]) {
    dir ("tests/scripts") {
      sh "bash task_example_test.sh ${dev}"
    }
  }
}

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}"
    }
  }
}

def pytorch_tutorials() {
  withEnv(["DGL_LIBRARY_PATH=${env.WORKSPACE}/build", "PYTHONPATH=${env.WORKSPACE}/python"]) {
    dir ("tests/scripts") {
      sh "bash task_pytorch_tutorial_test.sh"
    }
  }
}

def mxnet_tutorials() {
  withEnv(["DGL_LIBRARY_PATH=${env.WORKSPACE}/build", "PYTHONPATH=${env.WORKSPACE}/python", "DGLBACKEND=mxnet"]) {
    dir("tests/scripts") {
      sh "bash task_mxnet_tutorial_test.sh"
    }
  }
}
pipeline {
  agent none
  stages {
    stage("Lint Check") {
      agent {
        docker { image "dgllib/dgl-ci-lint" }
      }
      steps {
        init_git_submodule()
        sh "bash tests/scripts/task_lint.sh"
      }
    }
    stage("Build") {
      parallel {
        stage("CPU Build") {
          agent {
            docker { image "dgllib/dgl-ci-cpu" }
          }
          steps {
            init_git_submodule()
            build_dgl()
          }
        }
        stage("GPU Build") {
          agent {
            docker {
              image "dgllib/dgl-ci-gpu"
              args "--runtime nvidia"
            }
          }
          steps {
            init_git_submodule()
            build_dgl()
          }
        }
        stage("MXNet CPU Build (temp)") {
          agent {
            docker { image "dgllib/dgl-ci-mxnet-cpu" }
          }
          steps {
            init_git_submodule()
            build_dgl()
          }
        }
        stage("CPU Build (Win64/PyTorch)") {
          agent {
            label "windows"
          }
          steps {
            init_git_submodule_win64()
            build_dgl_win64()
          }
        }
      }
    }
    stage("Test") {
      parallel {
        stage("Pytorch CPU") {
          agent {
            docker { image "dgllib/dgl-ci-cpu" }
          }
          stages {
            stage("TH CPU unittest") {
              steps { unit_test("pytorch", "CPU") }
            }
            stage("TH CPU example test") {
              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") }
            }
          }
          post {
            always { junit "*.xml" }
          }
        }
        stage("Pytorch GPU") {
          agent {
            docker {
              image "dgllib/dgl-ci-gpu"
              args "--runtime nvidia"
            }
          }
          stages {
            // TODO: have GPU unittest
            //stage("TH GPU unittest") {
            //  steps { pytorch_unit_test("GPU") }
            //}
            stage("TH GPU example test") {
              steps { example_test("pytorch", "GPU") }
            }
          }
          // TODO: have GPU unittest
          //post {
          //  always { junit "*.xml" }
          //}
        }
        stage("MXNet CPU") {
          agent {
            docker { image "dgllib/dgl-ci-mxnet-cpu" }
          }
          stages {
            stage("MX Unittest") {
              steps { unit_test("mxnet", "CPU") }
            }
          }
          post {
            always { junit "*.xml" }
          }
        }
      }
    }
    stage("Doc") {
      parallel {
        stage("TH Tutorial") {
          agent {
            docker { image "dgllib/dgl-ci-cpu" }
          }
          steps {
            pytorch_tutorials()
          }
        }
        stage("MX Tutorial") {
          agent {
            docker { image "dgllib/dgl-ci-mxnet-cpu" }
          }
          steps {
            mxnet_tutorials()
          }
        }
      }
    }
  }
}
back to top