Skip to content

Extend functional APIs #790

Extend functional APIs

Extend functional APIs #790

Workflow file for this run

name: Python CI/CD
on:
workflow_dispatch:
push:
pull_request:
release:
types:
- published
schedule:
# * is a special character in YAML so you have to quote this string
# Execute a "nightly" build at 2 AM UTC
- cron: '0 2 * * *'
jobs:
package:
name: Package the project
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install Python tools
run: pip install build twine
- name: Create distributions
run: python -m build -o dist/
- name: Inspect dist folder
run: ls -lah dist/
- name: Check wheel's abi and platform tags
run: test $(find dist/ -name *-none-any.whl | wc -l) -gt 0
- name: Run twine check
run: twine check dist/*
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
path: dist/*
name: dist
test:
name: 'Python${{ matrix.python }}@${{ matrix.os }}'
needs: package
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
- macos-latest
- windows-latest
python:
- "3.11"
- "3.12"
steps:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Download Python packages
uses: actions/download-artifact@v3
with:
path: dist
name: dist
- name: Install wheel (ubuntu)
if: contains(matrix.os, 'ubuntu')
shell: bash
run: pip install "$(find dist/ -type f -name '*.whl')[all]"
- name: Install wheel (macos|windows)
if: contains(matrix.os, 'macos') || contains(matrix.os, 'windows')
shell: bash
run: pip install "$(find dist/ -type f -name '*.whl')"
- name: Document installed pip packages
shell: bash
run: pip list --verbose
- name: Import the package
run: python -c "import jaxsim"
- uses: actions/checkout@v3
with:
fetch-depth: 0
# - name: Install Gazebo Classic
# if: contains(matrix.os, 'ubuntu')
# run: |
# sudo apt-get update
# sudo apt-get install gazebo
# https://gazebosim.org/docs/harmonic/install_ubuntu
- name: Install Gazebo Sim
if: contains(matrix.os, 'ubuntu')
run: |
sudo apt-get update
sudo apt-get install lsb-release wget gnupg
sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
sudo apt-get update
sudo apt-get install gz-harmonic
- name: Run the Python tests
if: contains(matrix.os, 'ubuntu')
run: pytest
env:
JAX_PLATFORM_NAME: cpu
publish:
name: Publish to PyPI
needs: test
runs-on: ubuntu-22.04
steps:
- name: Download Python packages
uses: actions/download-artifact@v3
with:
path: dist
name: dist
- name: Inspect dist folder
run: ls -lah dist/
- name: Publish to PyPI
if: |
github.repository == 'ami-iit/jaxsim' &&
((github.event_name == 'push' && github.ref == 'refs/heads/main') ||
(github.event_name == 'release'))
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_TOKEN }}
skip_existing: true