--- a +++ b/.circleci/config.yml @@ -0,0 +1,161 @@ +version: 2.1 + +jobs: + lint: + docker: + - image: cimg/python:3.7.4 + steps: + - checkout + - run: + name: Install dependencies + command: | + sudo apt-add-repository ppa:brightbox/ruby-ng -y + sudo apt-get update + sudo apt-get install -y ruby2.7 + - run: + name: Install pre-commit hook + command: | + pip install pre-commit + pre-commit install + - run: + name: Linting + command: pre-commit run --all-files + - run: + name: Check docstring coverage + command: | + pip install interrogate + interrogate -v --ignore-init-method --ignore-module --ignore-nested-functions --ignore-regex "__repr__" --fail-under 50 mmseg + + build_cpu: + parameters: + # The python version must match available image tags in + # https://circleci.com/developer/images/image/cimg/python + python: + type: string + default: "3.7.4" + torch: + type: string + torchvision: + type: string + docker: + - image: cimg/python:<< parameters.python >> + resource_class: large + steps: + - checkout + - run: + name: Install Libraries + command: | + sudo apt-get update + sudo apt-get install -y ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6 libgl1-mesa-glx libjpeg-dev zlib1g-dev libtinfo-dev libncurses5 + - run: + name: Configure Python & pip + command: | + python -m pip install --upgrade pip + python -m pip install wheel + - run: + name: Install PyTorch + command: | + python -V + python -m pip install torch==<< parameters.torch >>+cpu torchvision==<< parameters.torchvision >>+cpu -f https://download.pytorch.org/whl/torch_stable.html + - run: + name: Install mmseg dependencies + command: | + python -m pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cpu/torch<< parameters.torch >>/index.html + python -m pip install mmdet + python -m pip install -r requirements.txt + - run: + name: Build and install + command: | + python -m pip install -e . + - run: + name: Run unittests + command: | + python -m pip install timm + python -m coverage run --branch --source mmseg -m pytest tests/ + python -m coverage xml + python -m coverage report -m + + build_cu101: + machine: + image: ubuntu-1604-cuda-10.1:201909-23 + resource_class: gpu.nvidia.small + steps: + - checkout + - run: + name: Install Libraries + command: | + sudo apt-get update + sudo apt-get install -y git ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6 libgl1-mesa-glx + - run: + name: Configure Python & pip + command: | + pyenv global 3.7.0 + python -m pip install --upgrade pip + python -m pip install wheel + - run: + name: Install PyTorch + command: | + python -V + python -m pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html + - run: + name: Install mmseg dependencies + # python -m pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch${{matrix.torch_version}}/index.html + command: | + python -m pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html + python -m pip install mmdet + python -m pip install -r requirements.txt + - run: + name: Build and install + command: | + python setup.py check -m -s + TORCH_CUDA_ARCH_LIST=7.0 python -m pip install -e . + - run: + name: Run unittests + command: | + python -m pip install timm + python -m pytest tests/ + +workflows: + unit_tests: + jobs: + - lint + - build_cpu: + name: build_cpu_th1.6 + torch: 1.6.0 + torchvision: 0.7.0 + requires: + - lint + - build_cpu: + name: build_cpu_th1.7 + torch: 1.7.0 + torchvision: 0.8.1 + requires: + - lint + - build_cpu: + name: build_cpu_th1.8_py3.9 + torch: 1.8.0 + torchvision: 0.9.0 + python: "3.9.0" + requires: + - lint + - build_cpu: + name: build_cpu_th1.9_py3.8 + torch: 1.9.0 + torchvision: 0.10.0 + python: "3.8.0" + requires: + - lint + - build_cpu: + name: build_cpu_th1.9_py3.9 + torch: 1.9.0 + torchvision: 0.10.0 + python: "3.9.0" + requires: + - lint + - build_cu101: + requires: + - build_cpu_th1.6 + - build_cpu_th1.7 + - build_cpu_th1.8_py3.9 + - build_cpu_th1.9_py3.8 + - build_cpu_th1.9_py3.9