Skip to content

CI

CI #1

Workflow file for this run

name: CI
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
buildLinux:
runs-on: ubuntu-latest
container: ubuntu:latest
steps:
- uses: actions/checkout@v4
- name: Install Qt6 and python
run: |
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get install -y qt6-base-dev libxrandr-dev libudev-dev libxi-dev freeglut3-dev
apt-get install -y python3.12 python3.12-venv python3-pip cython3
mkdir venv
python3.12 -m venv venv/
. venv/bin/activate
python3.12 -m pip install --upgrade pip
python3.12 -m pip install setuptools cython
- name: compile library
run: qmake6 && make
- name: compile Python binding
run: |
. venv/bin/activate
cp pointing/libpointing.a bindings/Python/cython/
cd bindings/Python/cython/
python3 buildcythonlib.py build_ext --inplace
- name: Save the compiled libraries
uses: actions/upload-artifact@v4
with:
name: LinuxArtifact
path: |
pointing/libpointing.a
bindings/Python/cython/libpointing/*.so
buildMacOS:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Install Qt6 and python
run: |
brew update
brew install qt
brew install python@3.12
mkdir venv
python3.12 -m venv venv/
source venv/bin/activate
python3.12 -m pip install --upgrade pip
python3.12 -m pip install setuptools cython
- name: compile library
run: |
cd pointing
qmake
make
- name: compile Python binding
run: |
source venv/bin/activate
cp pointing/libpointing.a bindings/Python/cython/
cd bindings/Python/cython/
python3.12 buildcythonlib.py build_ext --inplace
- name: Save the compiled libraries
uses: actions/upload-artifact@v4
with:
name: macOSArtifact
path: |
pointing/libpointing.a
bindings/Python/cython/libpointing/*.so
buildWindows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: ilammy/msvc-dev-cmd@v1
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
host: 'windows'
target: 'desktop'
arch: 'win64_msvc2019_64'
dir: '${{ github.workspace }}/qtdir/'
install-deps: 'true'
archives: 'qtbase'
cache: 'false'
cache-key-prefix: 'install-qt-action'
setup-python: 'true'
tools: ''
set-env: 'true'
tools-only: 'false'
aqtversion: '==3.1.*'
py7zrversion: '==0.20.*'
extra: '--external 7z'
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install Python librairies
run: |
python.exe -m ensurepip --upgrade
python.exe -m pip install --upgrade pip
python.exe -m pip install virtualenv
python.exe -m virtualenv venv
./venv/Scripts/activate
python.exe -m pip install wheel setuptools cython
- name: compile library
run: |
cd pointing
qmake
nmake
# mingw32-make
- name: compile Python binding
run: |
./venv/Scripts/activate
cp pointing/release/pointing.lib bindings/Python/cython/
cd bindings/Python/cython/
python.exe --version
python.exe buildcythonlib.py build_ext --inplace
- name: Save the compiled libraries
uses: actions/upload-artifact@v4
with:
name: WindowsArtifact
path: |
pointing/release/pointing.lib
bindings/Python/cython/libpointing/*.pyd
buildPythonBinding:
needs: [buildLinux, buildMacOS, buildWindows]
runs-on: ubuntu-latest
container: ubuntu:latest
steps:
- uses: actions/checkout@v4
- name: Install python
run: |
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get install -y python3.12 python3.12-venv python3-pip cython3
mkdir venv
python3.12 -m venv venv/
. venv/bin/activate
python3.12 -m pip install --upgrade pip
python3.12 -m pip install setuptools build cython twine
- name: Download Linux artifact
uses: actions/download-artifact@v4
with:
name: LinuxArtifact
- name: Download macOS artifact
uses: actions/download-artifact@v4
with:
name: macOSArtifact
- name: Download Windows artifact
uses: actions/download-artifact@v4
with:
name: WindowsArtifact
- name: Copy files from artifacts
run: |
mkdir -p libraries/Linux
mkdir -p libraries/macOS
mkdir -p libraries/Windows
cp -r linux-artifact/libpointing/pointing/libpointing.a libraries/Linux/
cp -r macOS-artifact/artifact/pointing/libpointing.a libraries/macOS/
cp -r windows-artifact/artifact/pointing/release/pointing.lib libraries/Windows/
cp -r linux-artifact/libpointing/bindings/Python/cython/libpointing/*.so bindings/Python/cython/libpointing/
cp -r macOS-artifact/artifact/bindings/Python/cython/libpointing/*.so bindings/Python/cython/libpointing/
cp -r windows-artifact/artifact/bindings/Python/cython/libpointing/*.pyd bindings/Python/cython/libpointing/
- name: compile Python binding
run: |
. venv/bin/activate
cd bindings/Python/cython/
ls -la libpointing/
python3 -m build
ls -la dist/
cd ../../..
mkdir python
cp -r bindings/Python/cython/dist/*.whl python/
- name: Save the compiled libraries
uses: actions/upload-artifact@v4
with:
name: librairiesAndPythonBinding
path: |
libraries/
python/
- name: Publish Python 🐍 distribution 📦 to PyPI
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
env:
TWINE_USERNAME: "__token__"
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
run : |
. venv/bin/activate
python3 -m twine upload python/*