Test, build and deploy #1315
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test, build and deploy | |
| on: | |
| push: | |
| branches-ignore: | |
| - 'automated/**' | |
| tags: | |
| - '**' | |
| pull_request: {} | |
| schedule: | |
| - cron: '0 0 * * *' | |
| env: | |
| STREAMLINK_DIST_DIR: ${{ github.workspace }}/dist | |
| SIGNING_KEY_ID: 2E390FA0 | |
| SIGNING_KEY_FILE: ${{ github.workspace }}/signing.key | |
| jobs: | |
| test: | |
| name: Test | |
| strategy: | |
| fail-fast: false | |
| # please remember to change the `codecov.notify.after_n_builds` value in .codecov.yml | |
| # when changing the build matrix and changing the number of test runners | |
| matrix: | |
| os: | |
| - ubuntu-latest | |
| - windows-latest | |
| python: | |
| - "3.7" | |
| - "3.8" | |
| - "3.9" | |
| - "3.10" | |
| - "3.11" | |
| # include: | |
| # - python: "3.12-dev" | |
| # os: ubuntu-20.04 | |
| # continue: true | |
| # - python: "3.12-dev" | |
| # os: windows-latest | |
| # continue: true | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 300 | |
| - uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ matrix.python }} | |
| - name: Install dependencies | |
| continue-on-error: ${{ matrix.continue || false }} | |
| run: bash ./script/install-dependencies.sh | |
| - name: Test | |
| continue-on-error: ${{ matrix.continue || false }} | |
| run: pytest -r a --cov --cov-branch --cov-report=xml --durations 10 | |
| - name: Build shell completions | |
| continue-on-error: ${{ matrix.continue || false }} | |
| run: bash ./script/build-shell-completions.sh | |
| - name: Upload coverage data | |
| if: github.event_name != 'schedule' | |
| continue-on-error: ${{ matrix.continue || false }} | |
| uses: codecov/codecov-action@v3 | |
| with: | |
| name: os:${{ matrix.os }} py:${{ matrix.python }} | |
| release: | |
| name: New release | |
| if: github.repository == 'streamlink/streamlink' && github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - name: Fetch tags | |
| run: git fetch --depth=300 origin +refs/tags/*:refs/tags/* | |
| - uses: actions/setup-python@v4 | |
| with: | |
| python-version: "3.10" | |
| - name: Install dependencies | |
| run: | | |
| ./script/install-dependencies.sh | |
| python -m pip install -r docs-requirements.txt | |
| python -m pip install --upgrade Jinja2 build wheel twine | |
| - name: Build shell completions | |
| run: ./script/build-shell-completions.sh | |
| - name: Build man page | |
| run: make --directory=docs man | |
| - name: sdist and wheels | |
| env: | |
| RELEASE_KEY_PASSPHRASE: ${{ secrets.RELEASE_KEY_PASSPHRASE }} | |
| run: ./script/build-and-sign.sh | |
| - name: Github release | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: ./script/github-release.py "${STREAMLINK_DIST_DIR}"/*.tar.gz{,.asc} | |
| - name: PyPI release | |
| env: | |
| PYPI_USER: streamlink | |
| PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} | |
| run: ./script/deploy-pypi.sh |