name: Linux on: [push, pull_request] jobs: test_linux: # Ubuntu 20.04 is still required for python 3.6; this doesn't work on Ubuntu 22.04 anymore runs-on: "ubuntu-20.04" name: "Ubuntu 20.04 - Python ${{ matrix.python-version }}" strategy: matrix: python-version: ["3.6"] redis-version: [6] steps: - uses: "actions/checkout@v3" - uses: "actions/setup-python@v4" with: python-version: "${{ matrix.python-version }}" cache: "pip" cache-dependency-path: | **/setup.py **/requirements*.txt - name: "Install dependencies" run: | set -xe sudo apt-get install -y libxml2-dev libxslt-dev python -VV python -m pip install --upgrade pip setuptools python -m pip install -e . python -m pip install -r requirements-pytest.txt - name: Start Redis uses: supercharge/redis-github-action@1.2.0 with: redis-version: ${{ matrix.redis-version }} - name: "Run tests for ${{ matrix.python-version }}" env: CLUBLOG_APIKEY: ${{ secrets.CLUBLOG_APIKEY }} QRZ_USERNAME: ${{ secrets.QRZ_USERNAME }} QRZ_PWD: ${{ secrets.QRZ_PWD }} PYTHON_VERSION: ${{ matrix.python-version }} # delay the execution randomly by a couple of seconds to reduce the amount # of concurrent API calls on Clublog and QRZ.com when all CI jobs execute simultaneously run: | sleep $[ ( $RANDOM % 10 ) + 1 ]s pytest ./test test_linux_ubuntu_22: runs-on: "ubuntu-22.04" name: "Ubuntu 22.04 - Python ${{ matrix.python-version }}" env: USING_COVERAGE: '3.11' strategy: matrix: python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "pypy3.7", "pypy3.8", "pypy3.9", "pypy3.10"] redis-version: [6] steps: - uses: "actions/checkout@v3" - uses: "actions/setup-python@v4" with: python-version: "${{ matrix.python-version }}" cache: "pip" cache-dependency-path: | **/setup.py **/requirements*.txt - name: "Install dependencies" run: | set -xe sudo apt-get install -y libxml2-dev libxslt-dev python -VV python -m pip install --upgrade pip setuptools wheel codecov python -m pip install -e . python -m pip install -r requirements-pytest.txt python -m pip install -r requirements-docs.txt - name: Start Redis uses: supercharge/redis-github-action@1.2.0 with: redis-version: ${{ matrix.redis-version }} - name: "Run tests for ${{ matrix.python-version }}" env: CLUBLOG_APIKEY: ${{ secrets.CLUBLOG_APIKEY }} QRZ_USERNAME: ${{ secrets.QRZ_USERNAME }} QRZ_PWD: ${{ secrets.QRZ_PWD }} PYTHON_VERSION: ${{ matrix.python-version }} # delay the execution randomly by a couple of seconds to reduce the amount # of concurrent API calls on Clublog and QRZ.com when all CI jobs execute simultaneously run: | sleep $[ ( $RANDOM % 10 ) + 1 ]s if [[ $PYTHON_VERSION == 3.11 ]] then pytest --cov=test/ codecov else pytest test/ fi cd docs && make html # publish_package: # runs-on: "ubuntu-latest" # needs: ["test_linux"] # if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') # steps: # - name: Publish package # uses: pypa/gh-action-pypi-publish@release/v1 # with: # user: __token__ # password: ${{ secrets.PYPI_API_TOKEN }} test_macos: # Ubuntu 20.04 is still required for python 3.6; this doesn't work on Ubuntu 22.04 anymore runs-on: "macos-12" name: "MacOS 12 - Python ${{ matrix.python-version }}" strategy: matrix: python-version: ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "pypy3.8", "pypy3.9", "pypy3.10"] redis-version: [6] steps: - uses: "actions/checkout@v3" - uses: "actions/setup-python@v4" with: python-version: "${{ matrix.python-version }}" cache: "pip" cache-dependency-path: | **/setup.py **/requirements*.txt - name: "Install dependencies" run: | set -xe python -VV python -m pip install --upgrade pip setuptools python -m pip install -e . python -m pip install -r requirements-pytest.txt - name: Start Redis uses: shogo82148/actions-setup-redis@v1.31.1 with: redis-version: ${{ matrix.redis-version }} - name: "Run tests for ${{ matrix.python-version }}" env: CLUBLOG_APIKEY: ${{ secrets.CLUBLOG_APIKEY }} QRZ_USERNAME: ${{ secrets.QRZ_USERNAME }} QRZ_PWD: ${{ secrets.QRZ_PWD }} PYTHON_VERSION: ${{ matrix.python-version }} # delay the execution randomly by a couple of seconds to reduce the amount # of concurrent API calls on Clublog and QRZ.com when all CI jobs execute simultaneously run: | sleep $[ ( $RANDOM % 10 ) + 1 ] pytest ./test test_windows: runs-on: "windows-latest" name: "Windows latest - Python ${{ matrix.python-version }}" strategy: matrix: python-version: ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] steps: - uses: "actions/checkout@v3" - uses: "actions/setup-python@v4" with: python-version: "${{ matrix.python-version }}" cache: "pip" cache-dependency-path: | setup.py requirements*.txt - name: "Install dependencies" run: | python -VV python -m pip install --upgrade pip setuptools wheel codecov python -m pip install -e . python -m pip install -r requirements-pytest.txt python -m pip install -r requirements-docs.txt - name: Setup redis # There are no github-actions supporting redis on windows. # Github Actions Container services are also not available for windows. # We have to download and install a non-official redis windows port # since there is no official redis version for windows. # Redis is then installed an run as a service run: | C:\msys64\usr\bin\wget.exe https://github.com/redis-windows/redis-windows/releases/download/7.0.14/Redis-7.0.14-Windows-x64-with-Service.tar.gz C:\msys64\usr\bin\tar.exe -xvzf Redis-7.0.14-Windows-x64-with-Service.tar.gz sc.exe create Redis binpath=D:\a\pyhamtools\pyhamtools\Redis-7.0.14-Windows-x64-with-Service\RedisService.exe start= auto net start Redis - name: "Run tests for ${{ matrix.python-version }}" env: CLUBLOG_APIKEY: ${{ secrets.CLUBLOG_APIKEY }} QRZ_USERNAME: ${{ secrets.QRZ_USERNAME }} QRZ_PWD: ${{ secrets.QRZ_PWD }} PYTHON_VERSION: ${{ matrix.python-version }} # give redis service time to startup and # delay the execution randomly by 5-20sec to reduce the # amount of concurrent API calls on Clublog and QRZ.com # when all CI jobs execute simultaneously run: | start-sleep -Seconds (5..20 | get-random) pytest