From f08548bfd6d394a82566022709b5ce9e6b0a855e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Haian=20Huang=28=E6=B7=B1=E5=BA=A6=E7=9C=B8=29?= <1286304229@qq.com> Date: Tue, 30 Nov 2021 20:14:32 +0800 Subject: [PATCH] Support circleci (#6630) * add ci * rename * fix mmtrack unittest * update mmcv version --- .circleci/config.yml | 168 ++++++++++++++++++++++++++++++++++++++ .pre-commit-config.yaml | 7 +- docs/get_started.md | 5 +- docs_zh-CN/get_started.md | 4 +- requirements/tests.txt | 2 +- 5 files changed, 178 insertions(+), 8 deletions(-) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000000..804bfd761f7 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,168 @@ +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 mmdet + + 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: | + pip install --upgrade pip + pip install wheel + - run: + name: Install PyTorch + command: | + python -V + pip install torch==<< parameters.torch >>+cpu torchvision==<< parameters.torchvision >>+cpu -f https://download.pytorch.org/whl/torch_stable.html + - when: + condition: + equal: [ "3.9.0", << parameters.python >> ] + steps: + - run: pip install protobuf && sudo apt-get update && sudo apt-get -y install libprotobuf-dev protobuf-compiler cmake + - run: + name: Install mmdet dependencies + command: | + pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cpu/torch<< parameters.torch >>/index.html + pip install -r requirements/tests.txt -r requirements/optional.txt + pip install albumentations>=0.3.2 --no-binary imgaug,albumentations + pip install git+https://github.com/cocodataset/panopticapi.git + - run: + name: Build and install + command: | + pip install -e . + - run: + name: Run unittests + command: | + coverage run --branch --source mmdet -m pytest tests/ + coverage xml + 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 + pip install --upgrade pip + pip install wheel + - run: + name: Install PyTorch + command: | + python -V + pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html + - run: + name: Install mmdet dependencies + # pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch${{matrix.torch_version}}/index.html + command: | + pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html + pip install -r requirements/tests.txt -r requirements/optional.txt + pip install pycocotools + pip install albumentations>=0.3.2 --no-binary imgaug,albumentations + pip install git+https://github.com/cocodataset/panopticapi.git + python -c 'import mmcv; print(mmcv.__version__)' + - run: + name: Build and install + command: | + python setup.py check -m -s + TORCH_CUDA_ARCH_LIST=7.0 pip install -e . + - run: + name: Run unittests + command: | + 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.12" + 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 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d7999f010ac..c461b497ce1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -28,11 +28,12 @@ repos: args: ["--remove"] - id: mixed-line-ending args: ["--fix=lf"] - - repo: https://github.com/jumanjihouse/pre-commit-hooks - rev: 2.1.4 + - repo: https://github.com/markdownlint/markdownlint + rev: v0.11.0 hooks: - id: markdownlint - args: ["-r", "~MD002,~MD013,~MD024,~MD029,~MD033,~MD034,~MD036", "-t", "allow_different_nesting"] + args: ["-r", "~MD002,~MD013,~MD029,~MD033,~MD034", + "-t", "allow_different_nesting"] - repo: https://github.com/codespell-project/codespell rev: v2.1.0 hooks: diff --git a/docs/get_started.md b/docs/get_started.md index f6b3edb0e36..14ff77e65ce 100644 --- a/docs/get_started.md +++ b/docs/get_started.md @@ -11,8 +11,9 @@ Compatible MMDetection and MMCV versions are shown as below. Please install the | MMDetection version | MMCV version | |:-------------------:|:-------------------:| -| master | mmcv-full>=1.3.14, <1.4.0 | -| 2.18.0 | mmcv-full>=1.3.14, <1.4.0 | +| master | mmcv-full>=1.3.17, <1.5.0 | +| 2.19.0 | mmcv-full>=1.3.17, <1.5.0 | +| 2.18.0 | mmcv-full>=1.3.17, <1.4.0 | | 2.17.0 | mmcv-full>=1.3.14, <1.4.0 | | 2.16.0 | mmcv-full>=1.3.8, <1.4.0 | | 2.15.1 | mmcv-full>=1.3.8, <1.4.0 | diff --git a/docs_zh-CN/get_started.md b/docs_zh-CN/get_started.md index 317af030a79..4b69679aa5c 100644 --- a/docs_zh-CN/get_started.md +++ b/docs_zh-CN/get_started.md @@ -11,8 +11,8 @@ MMDetection 和 MMCV 版本兼容性如下所示,需要安装正确的 MMCV | MMDetection 版本 | MMCV 版本 | | :--------------: | :----------------------: | -| master | mmcv-full>=1.3.17, <1.4.0 | -| 2.19.0 | mmcv-full>=1.3.17, <1.4.0 | +| master | mmcv-full>=1.3.17, <1.5.0 | +| 2.19.0 | mmcv-full>=1.3.17, <1.5.0 | | 2.18.1 | mmcv-full>=1.3.17, <1.4.0 | | 2.18.0 | mmcv-full>=1.3.14, <1.4.0 | | 2.17.0 | mmcv-full>=1.3.14, <1.4.0 | diff --git a/requirements/tests.txt b/requirements/tests.txt index 124a750bfb5..7470725c365 100644 --- a/requirements/tests.txt +++ b/requirements/tests.txt @@ -5,7 +5,7 @@ interrogate isort==4.3.21 # Note: used for kwarray.group_items, this may be ported to mmcv in the future. kwarray -mmtrack +-e git+https://github.com/open-mmlab/mmtracking#egg=mmtrack onnx==1.7.0 onnxruntime>=1.8.0 pytest