name: integration on: push: branches: - main pull_request: types: [opened, synchronize, reopened] workflow_dispatch: inputs: trainer_branch: description: "Branch of Trainer to test" required: false default: "main" coqpit_branch: description: "Branch of Coqpit to test" required: false default: "main" jobs: test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.9", "3.12"] subset: ["test_tts", "test_tts2", "test_vocoder", "test_xtts", "test_zoo0", "test_zoo1", "test_zoo2"] steps: - uses: actions/checkout@v4 - name: Setup uv uses: ./.github/actions/setup-uv - name: Set up Python ${{ matrix.python-version }} run: uv python install ${{ matrix.python-version }} - name: Install Espeak if: contains(fromJSON('["test_tts", "test_tts2", "test_xtts", "test_zoo0", "test_zoo1", "test_zoo2"]'), matrix.subset) run: | sudo apt-get update sudo apt-get install espeak espeak-ng - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y --no-install-recommends git make gcc make system-deps - name: Install custom Trainer and/or Coqpit if requested run: | if [[ -n "${{ github.event.inputs.trainer_branch }}" ]]; then uv add git+https://github.com/idiap/coqui-ai-Trainer --branch ${{ github.event.inputs.trainer_branch }} fi if [[ -n "${{ github.event.inputs.coqpit_branch }}" ]]; then uv add git+https://github.com/idiap/coqui-ai-coqpit --branch ${{ github.event.inputs.coqpit_branch }} fi - name: Integration tests run: | resolution=highest if [ "${{ matrix.python-version }}" == "3.9" ]; then resolution=lowest-direct fi uv run --resolution=$resolution --extra server --extra languages make ${{ matrix.subset }} - name: Upload coverage data uses: actions/upload-artifact@v4 with: include-hidden-files: true name: coverage-data-${{ matrix.subset }}-${{ matrix.python-version }} path: .coverage.* if-no-files-found: ignore coverage: if: always() needs: test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup uv uses: ./.github/actions/setup-uv - uses: actions/download-artifact@v4 with: pattern: coverage-data-* merge-multiple: true - name: Combine coverage run: | uv python install uvx coverage combine uvx coverage html --skip-covered --skip-empty uvx coverage report --format=markdown >> $GITHUB_STEP_SUMMARY