Skip to content

test pypi

test pypi #29

name: Build and test python
on: [push, pull_request]
jobs:
build-test-python:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-24.04
arch:
- posix
buildsystem:
- cmake
runs-on: ${{ matrix.os }}
steps:
- name: Setup packages on Linux
run: |
sudo apt-get update
sudo apt-get install libzmq3-dev libsocketcan-dev
- name: Setup build system packages on Linux
run: |
sudo apt-get install ninja-build cmake
- name: Checkout
uses: actions/checkout@v4
- name: Build libcsp examples
run: python3 examples/buildall.py ${{ matrix.arch }} --build-system=${{ matrix.buildsystem }}
- name: Build libcsp with python binding
run: |
cmake -GNinja -B buildBinding -DCSP_ENABLE_PYTHON3_BINDINGS=1 -DCSP_USE_RTABLE=1 -DCMAKE_POSITION_INDEPENDENT_CODE=ON && ninja -C buildBinding
- name: Run ZMQ Python binding Test
run: |
build/examples/zmqproxy &
LD_LIBRARY_PATH=buildBinding PYTHONPATH=buildBinding python3 examples/python_bindings_example_server.py &
LD_LIBRARY_PATH=buildBinding PYTHONPATH=buildBinding python3 examples/python_bindings_example_client.py -z localhost -s 27 -a 2
pkill zmqproxy
- name: Prepare Python binding for packaging
run: |
mkdir -p csp_moonlight/
cp buildBinding/libcsp_py3*.so csp_moonlight/libcsp_py3-${{ matrix.os }}.so
- name: Set up Python environment
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Create and activate virtual environment
run: |
python -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
python -m pip install setuptools wheel build
- name: Build the Python package
run: |
source venv/bin/activate
python3 -m build
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}
repository-url: https://test.pypi.org/legacy/
#if: github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/tags/')
# Install the package from PyPI and run tests again
- name: Install package from PyPI
run: |
source venv/bin/activate
pip install -i https://test.pypi.org/simple/ csp-moonlight
# Verify the package installation
pip show csp-moonlight
# Verify that .py files are present
ls venv/lib/python*/site-packages/
ls -l venv/lib/python*/site-packages/csp_moonlight-2.0.1.dist-info
# Test import in Python
python -c "import csp_moonlight; print('csp_moonlight imported successfully')"
python -c "from csp_moonlight import libcsp_py3 as libcsp; print('libcsp_py3 imported successfully')"
# Run again tests to test the uploaded package
#- name: Run ZMQ Python binding test with PyPI package
# run: |
# build/examples/zmqproxy &
# python3 examples/python_bindings_example_server.py &
# python3 examples/python_bindings_example_client.py -z localhost -s 27 -a 2
# pkill zmqproxy