Skip to content

Tests and continuous integration: Fixed issues and updated CI configuration #1609

Tests and continuous integration: Fixed issues and updated CI configuration

Tests and continuous integration: Fixed issues and updated CI configuration #1609

Workflow file for this run

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:
fail-fast: false
matrix:
include:
- name-suffix: "PyQt5 sdist"
os: ubuntu-20.04
python-version: "3.8"
BUILD_OPTION: --sdist
QT_API: PyQt5
- name-suffix: "PyQt6 wheel"
os: ubuntu-latest
python-version: "3.11"
BUILD_OPTION: --wheel
QT_API: PyQt6
- name-suffix: "PySide6 sdist"
os: ubuntu-latest
python-version: "3.12"
BUILD_OPTION: --sdist
QT_API: PySide6
- name-suffix: "PyQt5 wheel"
os: macos-13
python-version: "3.10"
BUILD_OPTION: --wheel
QT_API: PyQt5
- name-suffix: "PyQt6 wheel"
os: macos-13
python-version: "3.12"
BUILD_OPTION: --wheel
QT_API: PyQt6
- name-suffix: "PySide6 wheel"
os: macos-13
python-version: "3.9"
BUILD_OPTION: --wheel
QT_API: PySide6
- name-suffix: "PyQt5 wheel"
os: windows-latest
python-version: "3.9"
BUILD_COMMAND: --wheel
QT_API: PyQt5
- name-suffix: "PyQt6 wheel"
os: windows-latest
python-version: "3.12"
BUILD_COMMAND: --wheel
QT_API: PyQt6
- name-suffix: "PySide6 wheel"
os: windows-latest
python-version: "3.10"
BUILD_COMMAND: --wheel
QT_API: PySide6
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- uses: actions/checkout@v4
# 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@v5
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install mesa OpenGL
if: runner.os == 'Windows'
run: |
curl -fsS -o opengl32.dll http://www.silx.org/pub/silx/continuous_integration/opengl32_mingw-mesa-x86_64.dll
- name: Upgrade distribution modules
run: |
python -m pip install --upgrade pip
pip install --upgrade build setuptools wheel
pip install --upgrade --pre 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: |
pip install -r ci/requirements-pinned.txt
pip install --pre -r requirements.txt
pip install --pre "${{ matrix.QT_API }}"
- 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
if [ ${{ runner.os }} == 'Windows' ]; then
export WITH_GL_TEST=False
fi
export QT_API=${{ matrix.QT_API }}
python -c "import silx.test, sys; sys.exit(silx.test.run_tests(verbosity=1, args=('--low-mem', '--qt-binding=${{ matrix.QT_API }}')));"