Work in progress #2311
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: Python CI/CD | |
on: | |
push: | |
branches: [ '**' ] | |
tags-ignore: [ '**' ] | |
pull_request: | |
workflow_dispatch: | |
release: | |
types: | |
- published | |
schedule: | |
# * is a special character in YAML so you have to quote this string | |
# Execute a "weekly" build at 2 AM UTC on Thursday | |
- cron: '0 2 * * *' | |
jobs: | |
# sdist can be built from any os and against any python version | |
build_sdist: | |
name: Build source distribution | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
python-version: | |
- "3.10" | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Install Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install build dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y \ | |
build-essential \ | |
coinor-libipopt-dev \ | |
libeigen3-dev \ | |
swig \ | |
libxml2-dev \ | |
libassimp-dev \ | |
libirrlicht-dev \ | |
libglfw3-dev | |
pip install build | |
- name: Build sdist | |
run: python -m build --sdist | |
- name: Install sdist | |
run: pip -v install dist/*.tar.gz | |
- name: Test import | |
run: python -c 'import idyntree.bindings' | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: dist | |
path: dist/*.tar.gz | |
build_wheels: | |
name: Build wheels [${{ matrix.os }}] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: | |
- "3.10" | |
os: | |
- ubuntu-22.04 | |
#- macos-latest | |
#- windows-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install cibuildwheel | |
run: pip install cibuildwheel | |
- name: Build wheels | |
run: python -m cibuildwheel --output-dir wheelhouse | |
env: | |
CIBW_BUILD_VERBOSITY: 1 | |
CIBW_BUILD: cp37-*manylinux*_x86_64 cp38-*manylinux*_x86_64 cp39-*manylinux*_x86_64 cp310-*manylinux*_x86_64 cp311-*manylinux*_x86_64 | |
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 | |
CIBW_ENVIRONMENT_LINUX: AUDITWHEEL_PLAT=manylinux_2_28_x86_64 | |
CIBW_BEFORE_BUILD_LINUX: | | |
dnf update -y &&\ | |
dnf install -y eigen3-devel libxml2-devel | |
CIBW_TEST_COMMAND: "python -c 'import idyntree.bindings'" | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: dist | |
path: ./wheelhouse/*.whl | |
upload_pypi: | |
needs: | |
- build_sdist | |
- build_wheels | |
runs-on: ubuntu-latest | |
# Devel branch produces pre-releases. | |
# Master branch produces stable releases linked to GitHub releases. | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: dist | |
path: dist | |
- name: Inspect dist folder | |
run: ls -lah dist/ | |
- uses: pypa/gh-action-pypi-publish@release/v1 | |
if: | | |
github.repository == 'robotology/idyntree' && | |
((github.event_name == 'release' && github.event.action == 'published') || | |
(github.event_name == 'push' && github.ref == 'refs/heads/devel')) | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_TOKEN }} |