docker.yml 3.5 KB
Newer Older
F
Félix Voituret 已提交
1 2
name: docker
on:
F
Félix Voituret 已提交
3 4 5 6 7 8
  workflow_dispatch:
    inputs:
      version:
        description: "Spleeter version to build image for"
        required: true
        default: "2.1.2"
F
Félix Voituret 已提交
9 10 11 12 13 14
jobs:
  build-test-push:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        platform: [cpu, gpu]
F
Félix Voituret 已提交
15
        distribution: [3.6, 3.7, 3.8, conda]
F
Félix Voituret 已提交
16 17 18 19 20 21 22 23
        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: |
F
Félix Voituret 已提交
24 25 26
          echo "base=python:${{ matrix.distribution }}" >> $GITHUB_ENV
          echo "tag=${{ matrix.distribution }}" >> $GITHUB_ENV
          echo "file=spleeter" >> $GITHUB_ENV
F
Félix Voituret 已提交
27
      - if: ${{ matrix.distribution == 'conda' }}
F
Félix Voituret 已提交
28 29 30
        name: Build Conda base image
        run: |
          docker build -t python:conda -f docker/conda.dockerfile .
F
Félix Voituret 已提交
31
          echo "file=spleeter-conda" >> $GITHUB_ENV
F
Félix Voituret 已提交
32
      - if: ${{ matrix.platform == 'gpu' }}
F
Félix Voituret 已提交
33 34 35
        name: Build CUDA base image
        run: |
          docker build \
36
            --build-arg BASE=python:${{ matrix.distribution }} \
F
Félix Voituret 已提交
37
            -t cuda:${{ matrix.distribution }} \
F
Félix Voituret 已提交
38
            -f docker/cuda-10-1.dockerfile .
F
Félix Voituret 已提交
39 40
          echo "base=${{ matrix.distribution }}" >> $GITHUB_ENV
          echo "tag=${{ matrix.distribution }}-gpu" >> $GITHUB_ENV
F
Félix Voituret 已提交
41 42
      # ----------------------------------------------------------------------
      # Note: image building.
F
Félix Voituret 已提交
43
      - name: Build deezer/spleeter:${{ env.tag }} image
F
Félix Voituret 已提交
44 45 46
        run: |
          docker build \
            --build-arg BASE=${{ env.base }} \
F
Félix Voituret 已提交
47
            --build-arg SPLEETER_VERSION=${{ github.event.inputs.version }} \
F
Félix Voituret 已提交
48
            -t deezer/spleeter:${{ env.tag }} \
F
Félix Voituret 已提交
49
            -f docker/${{ env.file }}.dockerfile .
F
Félix Voituret 已提交
50
          echo "modelargs=" >> $GITHUB_ENV
F
Félix Voituret 已提交
51
      - if: ${{ matrix.model != 'modelless' }}
F
Félix Voituret 已提交
52
        name: Build deezer/spleeter:${{ env.tag }}-${{ matrix.model }} image
F
Félix Voituret 已提交
53 54
        run: |
          docker build \
F
Félix Voituret 已提交
55
            --build-arg BASE=deezer/spleeter:${{ env.tag }} \
F
Félix Voituret 已提交
56
            --build-arg MODEL=${{ matrix.model }} \
F
Félix Voituret 已提交
57
            -t deezer/spleeter:${{ env.tag }}-${{ matrix.model }} \
F
Félix Voituret 已提交
58
            -f docker/spleeter-model.dockerfile .
F
Félix Voituret 已提交
59 60
          echo "tag=${{ env.tag }}-${{ matrix.model }}" >> $GITHUB_ENV
          echo "modelarg=-p spleeter:${{ matrix.model }}" >> $GITHUB_ENV
F
Félix Voituret 已提交
61 62
      # ----------------------------------------------------------------------
      # Note: image testing.
F
Félix Voituret 已提交
63
      - name: Test deezer/spleeter:${{ env.tag }} image
F
Félix Voituret 已提交
64 65 66
        run: |
          docker run \
            -v $(pwd):/runtime \
F
Félix Voituret 已提交
67
            deezer/spleeter:${{ env.tag }} \
F
Félix Voituret 已提交
68 69 70 71 72
            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
F
Félix Voituret 已提交
73 74
      - name: Push deezer/spleeter:${{ env.tag }} image
        run: docker push deezer/spleeter:${{ env.tag }}
F
Félix Voituret 已提交
75
      - if: ${{ env.tag == 'spleeter:3.8' }}
F
Félix Voituret 已提交
76
        name: Push deezer/spleeter:latest image
F
Félix Voituret 已提交
77
        run: |
F
Félix Voituret 已提交
78
          docker tag deezer/spleeter:3.8 deezer/spleeter:latest
F
Félix Voituret 已提交
79
          docker push deezer/spleeter:latest
F
Félix Voituret 已提交
80
      - if: ${{ env.tag == 'spleeter:3.8-gpu' }}
F
Félix Voituret 已提交
81
        name: Push deezer/spleeter:gpu image
F
Félix Voituret 已提交
82
        run: |
F
Félix Voituret 已提交
83
          docker tag deezer/spleeter:3.8-gpu deezer/spleeter:gpu
F
Félix Voituret 已提交
84
          docker push deezer/spleeter:gpu