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