Skip to content

Document installed packages in ci_cd workflow #4

Document installed packages in ci_cd workflow

Document installed packages in ci_cd workflow #4

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
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
src: &src
- 'src/**'
tests: &tests
- 'tests/**'
src_and_tests:
- *src
- *tests
- name: Install Gazebo Classic
if: |
contains(matrix.os, 'ubuntu') &&
(github.event_name != 'pull_request' ||
steps.changes.outputs.src_and_tests == 'true')
run: |
sudo apt-get update
sudo apt-get install gazebo
- name: Run the Python tests
if: |
contains(matrix.os, 'ubuntu') &&
(github.event_name != 'pull_request' ||
steps.changes.outputs.src_and_tests == 'true')
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