feat(cmake): Move to find_package #864
Workflow file for this run
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: manylinux2014 | |
on: | |
push: | |
paths-ignore: | |
- '**.md' | |
tags: | |
- '*' | |
branches: | |
- '**' | |
pull_request: | |
paths-ignore: | |
- '**.md' | |
branches: | |
- '**' | |
env: | |
BUILD_TYPE: Release | |
DEV_MODE: ON | |
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
jobs: | |
build-info: | |
name: Build info | |
runs-on: ubuntu-latest | |
outputs: | |
python-versions: ${{ steps.setVariables.outputs.matrix }} | |
steps: | |
- id: setVariables | |
run: | | |
echo 'matrix=["3.7", "3.8", "3.9", "3.10", "3.11" ]' >> $GITHUB_OUTPUT | |
build-wheel: | |
name: Build native wheel | |
runs-on: ubuntu-latest | |
needs: [build-info ] | |
strategy: | |
fail-fast: true | |
matrix: | |
PYTHON_VERSION: ${{ fromJson(needs.build-info.outputs.python-versions) }} | |
container: quay.io/pypa/manylinux_2_28_x86_64 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set env | |
run: | | |
export PYTHON_SHORT_VERSION=$(echo '${{ matrix.PYTHON_VERSION }}' | tr -d '.') | |
echo "PYTHON_SHORT_VERSION=${PYTHON_SHORT_VERSION}" >> $GITHUB_ENV | |
export PYTHON_PATH=/opt/python/cp${PYTHON_SHORT_VERSION}-cp$(if [[ $PYTHON_SHORT_VERSION =~ ^3[67]$ ]]; then echo $PYTHON_SHORT_VERSION'm';else echo $PYTHON_SHORT_VERSION; fi ) | |
export PATH=$PYTHON_PATH:$PYTHON_PATH/bin:$PATH | |
echo "PYTHON_PATH=${PYTHON_PATH}" >> $GITHUB_ENV | |
echo "PATH=${PATH}" >> $GITHUB_ENV | |
- name: Install system packages | |
run: | | |
yum install -y ninja-build python3-pip python3-devel wget unzip zip | |
- name: Set env conan dependencies | |
run: | | |
pip3 install --retries=30 conan==1.64.0 | |
conan user | |
conan profile new default --detect --force | |
conan profile update settings.compiler.libcxx=libstdc++11 default | |
conan config set general.parallel_download=$(nproc) | |
conan config set general.cpu_count=$(nproc) | |
conan config install conan | |
conan remote add duckstax http://conan.duckstax.com | |
- name: Download and Install conan dependencies | |
run: | | |
pwd | |
ls | |
conan install conanfile.txt --build missing \ | |
--build fmt \ | |
--build spdlog \ | |
-s build_type=Release | |
- name: Build wheel | |
run: | | |
cp integration/python/otterbrix/setup.py . | |
cp integration/python/otterbrix/pyproject.toml . | |
cp integration/python/otterbrix/get_path.py . | |
touch MANIFEST.in | |
python3 -m pip install wheel setuptools scikit-build==0.16.6 pytest==6.2.5 | |
mkdir -p $(echo "./$(python3 get_path.py )") | |
conan install conanfile.txt --build missing -s build_type=Release -if=$(echo "./$(python3 get_path.py )") | |
python3 setup.py bdist_wheel --verbose | |
- name: Repair wheel | |
run: | | |
for whl in dist/otterbrix*.whl; do | |
auditwheel repair ${whl} -w ./work/dist/ | |
rm ${whl}; | |
done | |
- name: Save library | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-wheel-${{ env.PYTHON_SHORT_VERSION }} | |
path: ./work/dist/otterbrix*cp${{ env.PYTHON_SHORT_VERSION }}*.whl | |
test-wheel: | |
name: Test wheel | |
runs-on: ${{ matrix.operating-system }} | |
needs: [ build-wheel, build-info ] | |
strategy: | |
fail-fast: true | |
matrix: | |
operating-system: [ ubuntu-20.04 ] | |
python-version: ${{ fromJson(needs.build-info.outputs.python-versions) }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Set env | |
run: | | |
export PYTHON_SHORT_VERSION=$(echo '${{ matrix.python-version }}' | tr -d '.') | |
echo "PYTHON_SHORT_VERSION=${PYTHON_SHORT_VERSION}" >> $GITHUB_ENV | |
- name: Install pytest | |
run: | | |
sudo apt update | |
sudo apt install -y python3-pip python3-venv | |
pip3 install --retries=30 pytest==6.2.5 | |
- name: Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: artifact-wheel-${{ env.PYTHON_SHORT_VERSION }} | |
path: ./app | |
- name: Inspect artifacts | |
run: | | |
ls -l ./app/*whl | |
- name: Install package from wheel | |
run: | | |
python3 --version | |
pip3 install --retries=30 ./app/otterbrix-*.whl | |
- name: Test package imports | |
run: | | |
python3 -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))" | |
python3 -c "from otterbrix import Client, DataBase, Collection, Connection, Cursor" | |
- name: Run pytest | |
run: | | |
pytest | |
upload-wheel: | |
name: Upload wheel | |
runs-on: ${{ matrix.operating-system }} | |
needs: [ test-wheel, build-info ] | |
if: github.ref_type == 'tag' && startsWith(github.ref, 'refs/tags/') | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ ubuntu-20.04 ] | |
python-version: ${{ fromJson(needs.build-info.outputs.python-versions) }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Set env | |
run: | | |
export PYTHON_SHORT_VERSION=$(echo '${{ matrix.python-version }}' | tr -d '.') | |
echo "PYTHON_SHORT_VERSION=${PYTHON_SHORT_VERSION}" >> $GITHUB_ENV | |
- name: Install pip3 | |
run: | | |
sudo apt update | |
sudo apt install -y python3-pip | |
- name: Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: artifact-wheel-${{ env.PYTHON_SHORT_VERSION }} | |
path: ./app | |
- name: Inspect artifacts | |
run: | | |
ls -l ./app/*whl | |
- name: Install twine | |
run: | | |
pip3 install --retries=30 twine | |
- name: Publish wheels | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} | |
run: | | |
echo "Pretend to upload" | |
twine upload --skip-existing * | |
working-directory: ./app |