name: docker on: workflow_dispatch: inputs: version: description: "Spleeter version to build image for" required: true default: "2.1.2" jobs: cuda-base: runs-on: ubuntu-latest strategy: matrix: distribution: [3.6, 3.7, 3.8] fail-fast: true steps: - uses: actions/checkout@v2 - name: Build CUDA base image run: | docker build \ --build-arg BASE=python:${{ matrix.distribution }} \ -t deezer/python-cuda-10-1:${{ matrix.distribution }} \ -f docker/cuda-10-1.dockerfile . - name: Docker login run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin - name: Push deezer/python-cuda-10-1:${{ matrix.distribution }} image run: docker push deezer/python-cuda-10-1:${{ matrix.distribution }} pip-images: needs: cuda-base runs-on: ubuntu-latest strategy: matrix: platform: [cpu, gpu] distribution: [3.6, 3.7, 3.8] fail-fast: true steps: - uses: actions/checkout@v2 - if: ${{ matrix.platform == 'cpu' }} run: | echo "base=deezer/spleeter:${{ matrix.distribution }}" >> $GITHUB_ENV echo "image=spleeter" >> $GITHUB_ENV - if: ${{ matrix.platform == 'gpu' }} run: | echo "base=deezer/python-cuda-10-1:${{ matrix.distribution }}" >> $GITHUB_ENV echo "image=spleeter-gpu" >> $GITHUB_ENV - name: Build deezer/${{ env.image }}:${{ matrix.distribution }} image run: | docker build \ --build-arg BASE=${{ env.base }} \ --build-arg SPLEETER_VERSION=${{ github.event.inputs.version }} \ -t deezer/${{ env.image }}:${{ matrix.distribution }} \ -f docker/spleeter.dockerfile . - name: Test deezer/${{ env.image }}:${{ matrix.distribution }} image run: | docker run \ -v $(pwd):/runtime \ deezer/${{ env.image }}:${{ matrix.distribution }} \ separate -i /runtime/audio_example.mp3 -o /tmp - name: Docker login run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin - name: Push deezer/${{ env.image }}:${{ matrix.distribution }} image run: docker push deezer/${{ env.image }}:${{ matrix.distribution }} conda-images: needs: cuda-base runs-on: ubuntu-latest strategy: matrix: platform: [cpu, gpu] fail-fast: true steps: - uses: actions/checkout@v2 - if: ${{ matrix.platform == 'cpu' }} name: Build Conda base image run: | docker build -t conda:cpu -f docker/conda.dockerfile . echo "image=spleeter" >> $GITHUB_ENV - if: ${{ matrix.platform == 'gpu' }} name: Build Conda base image run: | docker build --build-arg BASE=deezer/python-cuda-10-1:3.8 -t conda:gpu -f docker/conda.dockerfile . echo "image=spleeter-gpu" >> $GITHUB_ENV - name: Build deezer/${{ env.image }}:${{ env.tag }} image run: | docker build \ --build-arg BASE=conda:${{ matrix.platform }} \ --build-arg SPLEETER_VERSION=${{ github.event.inputs.version }} \ -t deezer/${{ env.image }}:conda \ -f docker/spleeter-conda.dockerfile . - name: Docker login run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin - name: Push deezer/${{ env.image }}:conda image run: docker push deezer/${{ env.image }}:conda images-with-model: needs: [pip-images, conda-images] runs-on: ubuntu-latest strategy: matrix: platform: [cpu, gpu] distribution: [3.6, 3.7, 3.8, conda] model: [2stems, 4stems, 5stems] fail-fast: true steps: - uses: actions/checkout@v2 - if: ${{ matrix.platform == 'cpu' }} run: echo "image=spleeter" >> $GITHUB_ENV - if: ${{ matrix.platform == 'gpu' }} run: echo "image=spleeter-gpu" >> $GITHUB_ENV - name: Build deezer/${{ env.image }}:${{ matrix.distribution }}-${{ matrix.model }} image run: | docker build \ --build-arg BASE=deezer/${{ env.image }}:${{ matrix.distribution }} \ --build-arg MODEL=${{ matrix.model }} \ -t deezer/${{ env.image }}:${{ matrix.distribution }}-${{ matrix.model }} \ -f docker/spleeter-model.dockerfile .dockerfile - name: Test deezer/${{ env.image }}:${{ matrix.distribution }}-${{ matrix.model }} image run: | docker run \ -v $(pwd):/runtime \ deezer/${{ env.image }}:${{ matrix.distribution }} \ separate -i /runtime/audio_example.mp3 -o /tmp -p spleeter:${{ matrix.model }} - name: Docker login run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin - name: Push deezer/${{ env.image }}:${{ matrix.distribution }}-${{ matrix.model }} image run: docker push deezer/${{ env.image }}:${{ matrix.distribution }}-${{ matrix.model }}