Spaces:
Sleeping
Sleeping
def docker_images = ["registry.cn-hangzhou.aliyuncs.com/sensetime/openmmlab:cuda10.1-cudnn7-devel-ubuntu18.04-py37-pt1.3", | |
"registry.cn-hangzhou.aliyuncs.com/sensetime/openmmlab:cuda10.2-cudnn7-devel-ubuntu18.04-py37-pt1.5"] | |
def torch_versions = ["1.3.0", "1.5.0"] | |
def torchvision_versions = ["0.4.2", "0.6.0"] | |
def get_stages(docker_image, folder) { | |
def pip_mirror = "-i https://mirrors.aliyun.com/pypi/simple" | |
stages = { | |
docker.image(docker_image).inside('-u root --gpus all --net host') { | |
sh "rm -rf ${env.WORKSPACE}-${folder} ${env.WORKSPACE}-${folder}@tmp" | |
sh "cp -r ${env.WORKSPACE} ${env.WORKSPACE}-${folder}" | |
try { | |
dir("${env.WORKSPACE}-${folder}") { | |
stage("before_install") { | |
sh "apt-get update && apt-get install -y ninja-build" | |
} | |
stage("dependencies") { | |
// torch and torchvision are pre-installed in dockers | |
sh "pip list | grep torch" | |
sh "apt-get install -y ffmpeg libturbojpeg" | |
sh "pip install pytest coverage lmdb PyTurboJPEG Cython ${pip_mirror}" | |
} | |
stage("build") { | |
sh "MMCV_WITH_OPS=1 pip install -e . ${pip_mirror}" | |
} | |
stage("test") { | |
sh "coverage run --branch --source=mmcv -m pytest tests/" | |
sh "coverage xml" | |
sh "coverage report -m" | |
} | |
} | |
} finally { | |
sh "rm -rf ${env.WORKSPACE}-${folder} ${env.WORKSPACE}-${folder}@tmp" | |
} | |
} | |
} | |
return stages | |
} | |
node('master') { | |
// fetch latest change from SCM (Source Control Management) | |
checkout scm | |
def stages = [:] | |
for (int i = 0; i < docker_images.size(); i++) { | |
def docker_image = docker_images[i] | |
def torch = torch_versions[i] | |
def torchvision = torchvision_versions[i] | |
def tag = docker_image + '_' + torch + '_' + torchvision | |
def folder = "${i}" | |
stages[tag] = get_stages(docker_image, folder) | |
} | |
parallel stages | |
} | |