-
Notifications
You must be signed in to change notification settings - Fork 1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[CI] Use CircleCI to do unit tests. (#567)
* Add .circleci/config.yml * Use new markdown lint
- Loading branch information
Showing
2 changed files
with
241 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,239 @@ | ||
# Use the latest 2.1 version of CircleCI pipeline process engine. | ||
# See: https://circleci.com/docs/2.0/configuration-reference | ||
version: 2.1 | ||
|
||
# Define a job to be invoked later in a workflow. | ||
# See: https://circleci.com/docs/2.0/configuration-reference/#jobs | ||
jobs: | ||
lint: | ||
docker: | ||
- image: cimg/python:3.7.4 | ||
# Add steps to the job | ||
# See: https://circleci.com/docs/2.0/configuration-reference/#steps | ||
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 40 mmcls | ||
build: | ||
parameters: | ||
# The python version must match available image tags in | ||
# https://circleci.com/developer/images/image/cimg/python | ||
python: | ||
type: string | ||
default: "3.6.15" | ||
torch: | ||
type: string | ||
torchvision: | ||
type: string | ||
env: | ||
type: string | ||
default: "" | ||
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 libjpeg8-dev zlib1g-dev | ||
- 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 mmcls 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 -r requirements.txt | ||
- run: | ||
name: Build and install | ||
command: | | ||
python -m pip install -e . | ||
- run: | ||
name: Run unittests | ||
command: | | ||
<< parameters.env >> python -m pytest tests/ --ignore tests/test_models/test_backbones/test_timm_backbone.py | ||
build_with_cuda: | ||
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 libjpeg8-dev zlib1g-dev | ||
- 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 mmcls dependencies | ||
command: | | ||
python -m pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html | ||
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 pytest tests/ --ignore tests/test_models/test_backbones/test_timm_backbone.py | ||
build_with_timm: | ||
parameters: | ||
# The python version must match available image tags in | ||
# https://circleci.com/developer/images/image/cimg/python | ||
python: | ||
type: string | ||
default: "3.7.12" | ||
torch: | ||
type: string | ||
default: "1.10.0" | ||
torchvision: | ||
type: string | ||
default: "0.11.1" | ||
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 libjpeg8-dev zlib1g-dev | ||
- 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 mmcls 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 -r requirements.txt | ||
- run: | ||
name: Install TIMM | ||
command: | | ||
pip install timm | ||
- run: | ||
name: Build and install | ||
command: | | ||
python -m pip install -e . | ||
- run: | ||
name: Run unittests | ||
command: | | ||
python -m coverage run --branch --source mmcls -m pytest tests/ | ||
python -m coverage xml | ||
python -m coverage report -m | ||
# Invoke jobs via workflows | ||
# See: https://circleci.com/docs/2.0/configuration-reference/#workflows | ||
workflows: | ||
unit_tests: | ||
jobs: | ||
- lint | ||
- build_with_timm: | ||
name: build_with_timm | ||
requires: | ||
- lint | ||
- build: | ||
name: build_py36_torch1.5 | ||
torch: 1.5.0 | ||
torchvision: 0.6.0 | ||
# To fix memory leak in torch1.5+cpu, refers to pytorch#32037 | ||
env: LRU_CACHE_CAPACITY=1 | ||
requires: | ||
- lint | ||
- build: | ||
name: build_py36_torch1.6 | ||
torch: 1.6.0 | ||
torchvision: 0.7.0 | ||
requires: | ||
- lint | ||
- build: | ||
name: build_py36_torch1.7 | ||
torch: 1.7.0 | ||
torchvision: 0.8.1 | ||
requires: | ||
- lint | ||
- build: | ||
name: build_py36_torch1.8 | ||
torch: 1.8.0 | ||
torchvision: 0.9.0 | ||
requires: | ||
- lint | ||
- build: | ||
name: build_py39_torch1.8 | ||
torch: 1.8.0 | ||
torchvision: 0.9.0 | ||
python: "3.9.0" | ||
requires: | ||
- lint | ||
- build: | ||
name: build_py39_torch1.9 | ||
torch: 1.9.0 | ||
torchvision: 0.10.0 | ||
python: "3.9.0" | ||
requires: | ||
- lint | ||
- build: | ||
name: build_py39_torch1.10 | ||
torch: 1.10.0 | ||
torchvision: 0.11.1 | ||
python: "3.9.0" | ||
requires: | ||
- lint | ||
- build_with_cuda: | ||
name: build_py36_torch1.6_cu101 | ||
requires: | ||
- build_with_timm | ||
- build_py36_torch1.5 | ||
- build_py36_torch1.6 | ||
- build_py36_torch1.7 | ||
- build_py36_torch1.8 | ||
- build_py39_torch1.8 | ||
- build_py39_torch1.9 | ||
- build_py39_torch1.10 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters