version: 2 jobs: # ======================================================================================= # Python 3.6 testing. # ======================================================================================= test-3.6: docker: - image: python:3.6 working_directory: ~/spleeter steps: - checkout - restore_cache: key: models-{{ checksum "spleeter/model/__init__.py" }} - run: apt-get update && apt-get install -y ffmpeg - run: pip install -r requirements.txt && pip install pytest pytest-xdist - run: make test - save_cache: key: models-{{ checksum "spleeter/model/__init__.py" }} paths: - "pretrained_models" # ======================================================================================= # Python 3.7 testing. # ======================================================================================= test-3.7: docker: - image: python:3.7 working_directory: ~/spleeter steps: - checkout - restore_cache: key: models-{{ checksum "spleeter/model/__init__.py" }} - run: apt-get update && apt-get install -y ffmpeg - run: pip install -r requirements.txt && pip install pytest pytest-xdist - run: make test - save_cache: key: models-{{ checksum "spleeter/model/__init__.py" }} paths: - "pretrained_models" # ======================================================================================= # Source distribution packaging. # ======================================================================================= sdist: docker: - image: python:3 steps: - checkout - run: make build - save_cache: key: sdist-{{ .Branch }}-{{ checksum "setup.py" }} paths: - dist # ======================================================================================= # PyPi deployment. # ======================================================================================= pypi-deploy: docker: - image: python:3 steps: - checkout - restore_cache: key: sdist-{{ .Branch }}-{{ checksum "setup.py" }} - run: name: upload to PyPi # TODO: Infer destination regarding of branch. # - master => production PyPi # - other => testing PyPi command: make deploy # ======================================================================================= # Conda distribution. # ======================================================================================= conda-forge-deploy: docker: - image: python:3 steps: - checkout - run: apt-get update && apt-get install -y git openssl hub - run: make feedstock # ======================================================================================= # Docker build. # ======================================================================================= docker-conda-cpu: docker: - image: docker:17.05.0-ce-git steps: - checkout - run: docker build -t researchdeezer/spleeter:conda -f docker/cpu/conda.dockerfile . - run: docker build -t researchdeezer/spleeter:conda-2stems -f docker/cpu/conda-2stems.dockerfile . - run: docker build -t researchdeezer/spleeter:conda-4stems -f docker/cpu/conda-2stems.dockerfile . - run: docker build -t researchdeezer/spleeter:conda-5stems -f docker/cpu/conda-2stems.dockerfile . - run: docker run -v $(pwd):/runtime researchdeezer/spleeter:conda separate -i /runtime/audio_example.mp3 -o /tmp - run: docker run -v $(pwd):/runtime researchdeezer/spleeter:conda-2stems separate -i /runtime/audio_example.mp3 -o /tmp - run: docker run -v $(pwd):/runtime researchdeezer/spleeter:conda-4stems separate -i /runtime/audio_example.mp3 -o /tmp - run: docker run -v $(pwd):/runtime researchdeezer/spleeter:conda-5stems separate -i /runtime/audio_example.mp3 -o /tmp - run: docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD - run: docker push researchdeezer/spleeter:conda - run: docker push researchdeezer/spleeter:conda-2stems - run: docker push researchdeezer/spleeter:conda-4stems - run: docker push researchdeezer/spleeter:conda-5stems docker-conda-gpu: docker: - image: docker:17.05.0-ce-git steps: - checkout - run: docker build -t researchdeezer/spleeter:conda-gpu -f docker/cpu/conda.dockerfile . - run: docker build -t researchdeezer/spleeter:conda-gpu-2stems -f docker/cpu/conda-2stems.dockerfile . - run: docker build -t researchdeezer/spleeter:conda-gpu-4stems -f docker/cpu/conda-2stems.dockerfile . - run: docker build -t researchdeezer/spleeter:conda-gpu-5stems -f docker/cpu/conda-2stems.dockerfile . - run: docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD - run: docker push researchdeezer/spleeter:conda-gpu - run: docker push researchdeezer/spleeter:conda-gpu-2stems - run: docker push researchdeezer/spleeter:conda-gpu-4stems - run: docker push researchdeezer/spleeter:conda-gpu-5stems docker-3.6-cpu: docker: - image: docker:17.05.0-ce-git steps: - checkout - run: docker build -t researchdeezer/spleeter:3.6 -f docker/cpu/python-3.6.dockerfile . - run: docker build -t researchdeezer/spleeter:3.6-2stems -f docker/cpu/python-3.6-2stems.dockerfile . - run: docker build -t researchdeezer/spleeter:3.6-4stems -f docker/cpu/python-3.6-4stems.dockerfile . - run: docker build -t researchdeezer/spleeter:3.6-5stems -f docker/cpu/python-3.6-5stems.dockerfile . - run: docker run -v $(pwd):/runtime researchdeezer/spleeter:3.6 separate -i /runtime/audio_example.mp3 -o /tmp - run: docker run -v $(pwd):/runtime researchdeezer/spleeter:3.6-2stems separate -i /runtime/audio_example.mp3 -o /tmp - run: docker run -v $(pwd):/runtime researchdeezer/spleeter:3.6-4stems separate -i /runtime/audio_example.mp3 -o /tmp - run: docker run -v $(pwd):/runtime researchdeezer/spleeter:3.6-5stems separate -i /runtime/audio_example.mp3 -o /tmp - run: docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD - run: docker push researchdeezer/spleeter:3.6 - run: docker push researchdeezer/spleeter:3.6-2stems - run: docker push researchdeezer/spleeter:3.6-4stems - run: docker push researchdeezer/spleeter:3.6-5stems docker-3.7-cpu: docker: - image: docker:17.05.0-ce-git steps: - checkout - run: docker build -t spleeter:3.7 -f docker/cpu/python-3.7.dockerfile . - run: docker build -t spleeter:3.7-2stems -f docker/cpu/python-3.7-2stems.dockerfile . - run: docker build -t spleeter:3.7-4stems -f docker/cpu/python-3.7-4stems.dockerfile . - run: docker build -t spleeter:3.7-5stems -f docker/cpu/python-3.7-5stems.dockerfile . - run: docker run -v $(pwd):/runtime researchdeezer/spleeter:3.7 separate -i /runtime/audio_example.mp3 -o /tmp - run: docker run -v $(pwd):/runtime researchdeezer/spleeter:3.7-2stems separate -i /runtime/audio_example.mp3 -o /tmp - run: docker run -v $(pwd):/runtime researchdeezer/spleeter:3.7-4stems separate -i /runtime/audio_example.mp3 -o /tmp - run: docker run -v $(pwd):/runtime researchdeezer/spleeter:3.7-5stems separate -i /runtime/audio_example.mp3 -o /tmp - run: docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD - run: docker tags researchdeezer/spleeter:3.7 researchdeezer/spleeter:latest - run: docker push researchdeezer/spleeter:latest - run: docker push researchdeezer/spleeter:3.7 - run: docker push researchdeezer/spleeter:3.7-2stems - run: docker push researchdeezer/spleeter:3.7-4stems - run: docker push researchdeezer/spleeter:3.7-5stems workflows: version: 2 spleeter-release-pipeline: jobs: - test-3.6 - test-3.7 - sdist: requires: - test-3.6 - test-3.7 - pypi-deploy: filters: branches: only: - master requires: - sdist - conda-forge-deploy: filters: branches: only: - master requires: - pypi-deploy - hold: type: approval requires: - pypi-deploy - conda-forge-deploy filters: branches: only: - master - docker-conda-cpu: requires: - hold filters: branches: only: - master - docker-conda-gpu: requires: - hold filters: branches: only: - master - docker-3.6-cpu: requires: - pypi-deploy filters: branches: only: - master - docker-3.7-cpu: requires: - pypi-deploy filters: branches: only: - master