streamlink/.github/workflows/main.yml

153 lines
4.6 KiB
YAML
Raw Normal View History

2019-10-06 21:47:37 +02:00
name: Test, build and deploy
on:
push:
branches-ignore:
- 'automated/**'
2022-07-09 05:07:44 +02:00
tags:
- '**'
pull_request: {}
schedule:
- cron: '0 0 * * *'
2019-10-06 21:47:37 +02:00
env:
STREAMLINK_DIST_DIR: ${{ github.workspace }}/dist
SIGNING_KEY_ID: 2E390FA0
SIGNING_KEY_FILE: ${{ github.workspace }}/signing.key
2019-10-06 21:47:37 +02:00
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
2019-10-06 21:47:37 +02:00
matrix:
os:
- ubuntu-20.04
- 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
2019-10-06 21:47:37 +02:00
runs-on: ${{ matrix.os }}
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 300
- uses: actions/setup-python@v4
2019-10-06 21:47:37 +02:00
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
2020-04-07 14:34:37 +02:00
continue-on-error: ${{ matrix.continue || false }}
2019-10-06 21:47:37 +02:00
run: bash ./script/install-dependencies.sh
- name: Test
2020-04-07 14:34:37 +02:00
continue-on-error: ${{ matrix.continue || false }}
tests.mixins.stream_hls: increase TIMEOUT_AWAIT_WRITE timeout, use --durations 10 for pytest `self.rebuild_proxies(request, self.proxies))` seems to slow down `requests` https://github.com/psf/requests/commit/60ea7f0c2def461a9ddc20e7af0fc90b68dbe0de#diff-c80d84057edadb04b5615f7169c55f88ccda358d7c20af966afb20c0d0d1056a which results in a pytest timeout, because 5 seconds is not enough on windows ``` with kwargs.setdefault('proxies', self.proxies) ============================================================================================ slowest 10 durations ============================================================================================= 0.86s call tests/streams/test_hls.py::TestHLSStreamEncrypted::test_hls_encrypted_aes128 0.53s call tests/streams/test_hls.py::TestHLSStreamEncrypted::test_hls_encrypted_aes128_key_uri_override 0.43s call tests/streams/test_hls.py::TestHLSStreamEncrypted::test_hls_encrypted_aes128_with_map 0.36s call tests/streams/test_hls.py::TestHLSStreamEncrypted::test_hls_encrypted_aes128_incorrect_padding_content 0.30s call tests/streams/test_hls.py::TestHLSStreamEncrypted::test_hls_encrypted_aes128_incorrect_padding_length 0.30s call tests/streams/test_hls.py::TestHLSStreamEncrypted::test_hls_encrypted_aes128_incorrect_block_length ``` ``` with kwargs.setdefault('proxies', self.rebuild_proxies(request, self.proxies)) ============================================================================================ slowest 10 durations ============================================================================================= 10.01s call tests/streams/test_hls.py::TestHLSStreamEncrypted::test_hls_encrypted_aes128 9.80s call tests/streams/test_hls.py::TestHLSStreamEncrypted::test_hls_encrypted_aes128_key_uri_override 5.63s call tests/streams/test_hls.py::TestHLSStreamEncrypted::test_hls_encrypted_aes128_incorrect_padding_length 5.22s call tests/streams/test_hls.py::TestHLSStreamEncrypted::test_hls_encrypted_aes128_with_map 2.97s call tests/streams/test_hls.py::TestHLSStreamEncrypted::test_hls_encrypted_aes128_incorrect_block_length 2.95s call tests/streams/test_hls.py::TestHLSStreamEncrypted::test_hls_encrypted_aes128_incorrect_padding_content ``` --- also show the 10 slowest tests on pytest
2021-08-22 10:45:00 +02:00
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
2019-10-06 21:47:37 +02:00
- name: Upload coverage data
if: github.event_name != 'schedule'
2020-04-07 14:34:37 +02:00
continue-on-error: ${{ matrix.continue || false }}
uses: codecov/codecov-action@v3
with:
name: os:${{ matrix.os }} py:${{ matrix.python }}
2019-10-06 21:47:37 +02:00
documentation:
name: Test docs
if: github.event_name != 'schedule'
runs-on: ubuntu-20.04
2019-10-06 21:47:37 +02:00
steps:
- uses: actions/checkout@v3
2019-10-06 21:47:37 +02:00
with:
fetch-depth: 300
- name: Fetch tags
run: git fetch --depth=300 origin +refs/tags/*:refs/tags/*
- uses: actions/setup-python@v4
2019-10-06 21:47:37 +02:00
with:
python-version: "3.10"
2019-10-06 21:47:37 +02:00
- name: Install dependencies
run: |
./script/install-dependencies.sh
python -m pip install -r docs-requirements.txt
- name: Build
run: make --directory=docs html man
2019-10-06 21:47:37 +02:00
2020-03-18 02:45:13 +01:00
deploy-documentation:
name: Deploy docs
if: github.repository == 'streamlink/streamlink' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/'))
needs:
- test
- documentation
runs-on: ubuntu-20.04
2020-03-18 02:45:13 +01:00
steps:
- uses: actions/checkout@v3
2020-03-18 02:45:13 +01:00
with:
fetch-depth: 300
- name: Fetch tags
run: git fetch --depth=300 origin +refs/tags/*:refs/tags/*
- uses: actions/setup-python@v4
2020-03-18 02:45:13 +01:00
with:
python-version: "3.10"
2020-03-18 02:45:13 +01:00
- name: Install dependencies
run: |
./script/install-dependencies.sh
python -m pip install -r docs-requirements.txt
- name: Build
run: make --directory=docs html
- name: Deploy
env:
DOCS_DEPLOY_TOKEN: ${{ secrets.DOCS_DEPLOY_TOKEN }}
2020-03-18 02:45:13 +01:00
run: ./script/deploy-docs.sh
release:
name: New release
if: github.repository == 'streamlink/streamlink' && github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
needs:
- deploy-documentation
runs-on: ubuntu-20.04
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
2020-12-28 12:35:51 +01:00
python -m pip install -r docs-requirements.txt
python -m pip install --upgrade Jinja2 wheel twine
- name: Build shell completions
run: ./script/build-shell-completions.sh
2020-12-28 12:35:51 +01:00
- name: Build man page
run: make --directory=docs man
- name: sdist and wheels
env:
2020-04-01 16:45:45 +02:00
RELEASE_KEY_PASSPHRASE: ${{ secrets.RELEASE_KEY_PASSPHRASE }}
run: ./script/build-and-sign.sh
- name: Github release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2022-05-02 06:46:40 +02:00
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