Skip to content

CI

CI #1538

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:
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 }}