diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f01e9ff..8be82ec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: CI +name: Python CI/CD on: push: @@ -7,49 +7,83 @@ on: tags: - v* pull_request: - branches: - - main + branches: [ main ] + types: [opened, synchronize, reopened] jobs: - build: + test: runs-on: ubuntu-latest + timeout-minutes: 60 strategy: matrix: - python-version: [3.8, 3.9, '3.10', 3.11] + python-version: [3.8, 3.9, '3.10', '3.11'] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v2 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} - - name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} + - name: Cache Python dependencies + uses: actions/cache@v2 + with: + path: | + ~/.cache/pip + !~/.cache/pip/log + key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('requirements/server.txt', 'requirements/client.txt') }} + restore-keys: | + ${{ runner.os }}-pip-${{ matrix.python-version }}- + + - name: Install system dependencies + run: sudo apt-get update && sudo apt-get install -y ffmpeg portaudio19-dev + + - name: Install Python dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements/server.txt --extra-index-url https://download.pytorch.org/whl/cpu + pip install -r requirements/client.txt + + - name: Run tests + run: | + echo "Running tests with Python ${{ matrix.python-version }}" + python -m unittest discover -s tests - - name: Set up FFmpeg - uses: FedericoCarboni/setup-ffmpeg@v2 - - - name: Install Additional requirements - run: | - sudo apt-get -y install portaudio19-dev wget - - - name: Install Client and Server Requirements - run: | - pip install -r requirements/client.txt - pip install -r requirements/server.txt + build-and-push: + needs: test + runs-on: ubuntu-latest + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') + steps: + - uses: actions/checkout@v2 - - name: Run Tests - run: | - # Add commands to run your tests here - echo "Running tests against Python ${{ matrix.python-version }}" + - name: Set up Python 3.8 + uses: actions/setup-python@v2 + with: + python-version: 3.8 - - name: Build wheel - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') - run: | - pip install wheel twine - python setup.py sdist bdist_wheel - - - name: Push package on PyPI - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') - uses: pypa/gh-action-pypi-publish@release/v1 - with: - user: __token__ - password: ${{ secrets.PYPI_API_TOKEN }} + - name: Cache Python dependencies + uses: actions/cache@v2 + with: + path: | + ~/.cache/pip + !~/.cache/pip/log + key: ubuntu-latest-pip-3.8-${{ hashFiles('requirements/server.txt', 'requirements/client.txt') }} + restore-keys: | + ubuntu-latest-pip-3.8- + + - name: Install system dependencies + run: sudo apt-get update && sudo apt-get install -y ffmpeg portaudio19-dev + + - name: Install Python dependencies + run: | + pip install -r requirements/server.txt + pip install -r requirements/client.txt + + - name: Build package + run: python setup.py sdist bdist_wheel + + - name: Publish package to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml deleted file mode 100644 index 54441e0..0000000 --- a/.github/workflows/tests.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Tests - -on: - pull_request: - branches: [ main ] - types: [opened, synchronize, reopened] - -jobs: - build-and-test: - runs-on: ubuntu-latest - timeout-minutes: 60 - - strategy: - matrix: - python-version: ['3.8', '3.9', '3.10', '3.11'] - - steps: - - uses: actions/checkout@v2 - - - name: Install system dependencies - run: sudo apt-get update && sudo apt-get install -y ffmpeg portaudio19-dev - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - - name: Cache dependencies - uses: actions/cache@v2 - with: - path: | - ~/.cache/pip - !~/.cache/pip/log - key: ${{ runner.os }}-pip-${{ hashFiles('requirements/server.txt', 'requirements/client.txt') }} - restore-keys: | - ${{ runner.os }}-pip- - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements/server.txt --extra-index-url https://download.pytorch.org/whl/cpu - pip install -r requirements/client.txt - - - name: Run Tests - run: | - python -m unittest discover -s tests