180 lines
5.0 KiB
YAML
180 lines
5.0 KiB
YAML
# Python CircleCI 2.0 configuration file
|
|
#
|
|
# Check https://circleci.com/docs/2.0/language-python/ for more details
|
|
#
|
|
version: 2
|
|
|
|
# -------------------------------------------------------------------------------------
|
|
# Environments to run the jobs in
|
|
# -------------------------------------------------------------------------------------
|
|
cpu: &cpu
|
|
docker:
|
|
- image: circleci/python:3.6.8-stretch
|
|
resource_class: medium
|
|
|
|
gpu: &gpu
|
|
machine:
|
|
image: ubuntu-1604:201903-01
|
|
docker_layer_caching: true
|
|
resource_class: gpu.small
|
|
|
|
# -------------------------------------------------------------------------------------
|
|
# Re-usable commands
|
|
# -------------------------------------------------------------------------------------
|
|
install_python: &install_python
|
|
- run:
|
|
name: Install Python
|
|
working_directory: ~/
|
|
command: |
|
|
pyenv install 3.6.1
|
|
pyenv global 3.6.1
|
|
|
|
setup_venv: &setup_venv
|
|
- run:
|
|
name: Setup Virtual Env
|
|
working_directory: ~/
|
|
command: |
|
|
python -m venv ~/venv
|
|
echo ". ~/venv/bin/activate" >> $BASH_ENV
|
|
. ~/venv/bin/activate
|
|
python --version
|
|
which python
|
|
which pip
|
|
pip install --upgrade pip
|
|
|
|
install_dep: &install_dep
|
|
- run:
|
|
name: Install Dependencies
|
|
command: |
|
|
pip install --progress-bar off -U 'git+https://github.com/facebookresearch/fvcore'
|
|
pip install --progress-bar off cython opencv-python
|
|
pip install --progress-bar off 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
|
|
pip install --progress-bar off torch torchvision
|
|
|
|
install_detectron2: &install_detectron2
|
|
- run:
|
|
name: Install Detectron2
|
|
command: |
|
|
gcc --version
|
|
pip install -U --progress-bar off -e .[dev]
|
|
python -m detectron2.utils.collect_env
|
|
|
|
install_nvidia_driver: &install_nvidia_driver
|
|
- run:
|
|
name: Install nvidia driver
|
|
working_directory: ~/
|
|
command: |
|
|
wget -q 'https://s3.amazonaws.com/ossci-linux/nvidia_driver/NVIDIA-Linux-x86_64-430.40.run'
|
|
sudo /bin/bash ./NVIDIA-Linux-x86_64-430.40.run -s --no-drm
|
|
nvidia-smi
|
|
|
|
run_unittests: &run_unittests
|
|
- run:
|
|
name: Run Unit Tests
|
|
command: |
|
|
python -m unittest discover -v -s tests
|
|
|
|
# -------------------------------------------------------------------------------------
|
|
# Jobs to run
|
|
# -------------------------------------------------------------------------------------
|
|
jobs:
|
|
cpu_tests:
|
|
<<: *cpu
|
|
|
|
working_directory: ~/detectron2
|
|
|
|
steps:
|
|
- checkout
|
|
- <<: *setup_venv
|
|
|
|
# Cache the venv directory that contains dependencies
|
|
- restore_cache:
|
|
keys:
|
|
- cache-key-{{ .Branch }}-ID-20200425
|
|
|
|
- <<: *install_dep
|
|
|
|
- save_cache:
|
|
paths:
|
|
- ~/venv
|
|
key: cache-key-{{ .Branch }}-ID-20200425
|
|
|
|
- <<: *install_detectron2
|
|
|
|
- run:
|
|
name: isort
|
|
command: |
|
|
isort -c -sp .
|
|
- run:
|
|
name: black
|
|
command: |
|
|
black --check -l 100 .
|
|
- run:
|
|
name: flake8
|
|
command: |
|
|
flake8 .
|
|
|
|
- <<: *run_unittests
|
|
|
|
gpu_tests:
|
|
<<: *gpu
|
|
|
|
working_directory: ~/detectron2
|
|
|
|
steps:
|
|
- checkout
|
|
- <<: *install_nvidia_driver
|
|
|
|
- run:
|
|
name: Install nvidia-docker
|
|
working_directory: ~/
|
|
command: |
|
|
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
|
|
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
|
|
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
|
|
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
|
|
sudo apt-get update && sudo apt-get install -y nvidia-docker2
|
|
# reload the docker daemon configuration
|
|
sudo pkill -SIGHUP dockerd
|
|
|
|
- run:
|
|
name: Launch docker
|
|
working_directory: ~/detectron2/docker
|
|
command: |
|
|
nvidia-docker build -t detectron2:v0 -f Dockerfile-circleci .
|
|
nvidia-docker run -itd --name d2 detectron2:v0
|
|
docker exec -it d2 nvidia-smi
|
|
|
|
- run:
|
|
name: Build Detectron2
|
|
command: |
|
|
docker exec -it d2 pip install 'git+https://github.com/facebookresearch/fvcore'
|
|
docker cp ~/detectron2 d2:/detectron2
|
|
# This will build d2 for the target GPU arch only
|
|
docker exec -it d2 pip install -e /detectron2
|
|
docker exec -it d2 python3 -m detectron2.utils.collect_env
|
|
docker exec -it d2 python3 -c 'import torch; assert(torch.cuda.is_available())'
|
|
|
|
- run:
|
|
name: Run Unit Tests
|
|
command: |
|
|
docker exec -e CIRCLECI=true -it d2 python3 -m unittest discover -v -s /detectron2/tests
|
|
|
|
workflows:
|
|
version: 2
|
|
regular_test:
|
|
jobs:
|
|
- cpu_tests
|
|
- gpu_tests
|
|
|
|
#nightly_test:
|
|
#jobs:
|
|
#- gpu_tests
|
|
#triggers:
|
|
#- schedule:
|
|
#cron: "0 0 * * *"
|
|
#filters:
|
|
#branches:
|
|
#only:
|
|
#- master
|