CI #1538
This file contains 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: CI | |
on: | |
# Triggers the workflow on push only for the master branch or pull request events | |
push: | |
branches: [master] | |
pull_request: | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
# This workflow contains a single job called "build" | |
build: | |
name: "Python ${{ matrix.python-version }} on ${{ matrix.os }} ${{ matrix.name-suffix }}" | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- name-suffix: "PyQt5 sdist" | |
os: ubuntu-20.04 | |
python-version: "3.8" | |
BUILD_OPTION: --sdist | |
QT_BINDING: PyQt5 | |
RUN_TESTS_OPTIONS: --qt-binding=PyQt5 --no-opencl --low-mem | |
- name-suffix: "PyQt5 wheel" | |
os: macos-latest | |
python-version: "3.10" | |
BUILD_OPTION: --wheel | |
QT_BINDING: PyQt5 | |
RUN_TESTS_OPTIONS: --qt-binding=PyQt5 --no-opencl --low-mem | |
- name-suffix: "PySide6 sdist" | |
os: ubuntu-latest | |
python-version: "3.8" | |
BUILD_OPTION: --sdist | |
QT_BINDING: PySide6 | |
RUN_TESTS_OPTIONS: --qt-binding=PySide6 --no-opencl --low-mem | |
- name-suffix: "PySide6 wheel" | |
os: macos-latest | |
python-version: "3.9" | |
BUILD_OPTION: --wheel | |
QT_BINDING: "PySide6<6.7" | |
RUN_TESTS_OPTIONS: --qt-binding=PySide6 --no-opencl --low-mem | |
- name-suffix: "PyQt6 wheel" | |
os: ubuntu-latest | |
python-version: "3.11" | |
BUILD_OPTION: --wheel | |
QT_BINDING: PyQt6 | |
RUN_TESTS_OPTIONS: --qt-binding=PyQt6 --no-opengl --low-mem | |
- name-suffix: "PyQt6 wheel" | |
os: macos-latest | |
python-version: "3.11" | |
BUILD_OPTION: --wheel | |
QT_BINDING: PyQt6 | |
RUN_TESTS_OPTIONS: --qt-binding=PyQt6 --no-opencl --low-mem | |
- name-suffix: "No GUI wheel" | |
os: windows-latest | |
python-version: "3.9" | |
BUILD_COMMAND: --wheel | |
QT_BINDING: PyQt5 | |
RUN_TESTS_OPTIONS: --no-gui --low-mem | |
# No GUI tests on Windows | |
# Steps represent a sequence of tasks that will be executed as part of the job | |
steps: | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
# Install X server packages | |
# libegl1-mesa: Required by Qt xcb platform plugin | |
# ocl-icd-opencl-dev: OpenCL headers, lib and icd loader | |
# libgl1-mesa-glx: For OpenGL | |
# xserver-xorg-video-dummy: For OpenGL | |
# libxkbcommon-x11-0: needed for Qt plugins | |
- name: Install X server | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install libegl1-mesa ocl-icd-opencl-dev intel-opencl-icd libgl1-mesa-glx xserver-xorg-video-dummy libxkbcommon-x11-0 libxkbcommon0 libxkbcommon-dev libxcb-icccm4 libxcb-image0 libxcb-shm0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-sync1 libxcb-xfixes0 libxcb-xinerama0 libxcb-xkb1 libxcb-cursor0 libxcb1 | |
# Runs a single command using the runners shell | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Upgrade distribution modules | |
run: | | |
python -m pip install --upgrade pip | |
pip install --upgrade build setuptools wheel | |
pip install --upgrade --pre numpy cython | |
- name: Print python info used for build | |
run: | | |
python ./ci/info_platform.py | |
pip list | |
- name: Generate source package or wheel | |
run: | | |
if [ ${{ runner.os }} == 'macOS' ]; then | |
export MACOSX_DEPLOYMENT_TARGET=10.9; | |
fi | |
python -m build --no-isolation ${{ matrix.BUILD_OPTION }} | |
ls dist | |
- name: Pre-install dependencies | |
run: | | |
if [ -s "ci/requirements-pinned.txt" ]; | |
then | |
pip install -r ci/requirements-pinned.txt; | |
fi | |
pip install --pre -r requirements.txt | |
pip uninstall -y PyQt5 PyQt6 PySide6 | |
pip install --pre "${{ matrix.QT_BINDING }}" | |
- name: Install pytest | |
run: | | |
pip install pytest | |
pip install pytest-xvfb | |
pip install pytest-mock | |
- name: Install silx package | |
run: pip install --pre --find-links dist/ --no-cache-dir --no-index --no-build-isolation silx | |
- name: Print python info used for tests | |
run: | | |
python ./ci/info_platform.py | |
pip list | |
# For Linux: Start X server with dummy video dirver | |
# Use this instead of Xvfb to have RANDR extension | |
# Otherwise there is a bug with Qt5.10.0 | |
- name: Run the tests | |
run: | | |
if [ ${{ runner.os }} == 'Linux' ]; then | |
export OCL_ICD_VENDORS=$(pwd)/intel_opencl_icd/vendors | |
export DISPLAY=:99.0 | |
Xorg -noreset +extension GLX +extension RANDR +extension RENDER -logfile ./99.log -config ./ci/xorg.conf :99 & | |
sleep 3 | |
fi | |
echo "RUN_TESTS_OPTIONS="${{ matrix.RUN_TESTS_OPTIONS }} | |
python run_tests.py --installed -v ${{ matrix.RUN_TESTS_OPTIONS }} |