Skip to content

linux-wheels

linux-wheels #181

Workflow file for this run

name: linux-wheels
on:
push: # run on push events
paths-ignore: # but ignore everything in the docs subfolder
- 'docs/**'
- 'src/gui*/**'
- 'src/netedit/**'
- 'tests/netedit/**'
branches:
- '**'
tags:
- '*'
pull_request: # run on pull requests
paths-ignore: # but ignore everything in the docs subfolder
- 'docs/**'
workflow_dispatch:
schedule:
- cron: '5 1 * * *'
jobs:
build-manylinux-wheels:
runs-on: ubuntu-latest
steps:
- name: Cloning SUMO
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Fetching SUMO tags
run: |
git fetch --tags --force
- name: Building sumolib / traci (pure Python) wheels and sdist
run: |
cd tools
python -m pip install build
python build_config/version.py build_config/setup-sumolib.py ./setup.py
python -m build -o ../wheelhouse
python build_config/version.py build_config/setup-traci.py ./setup.py
python -m build -o ../wheelhouse
- name: Building SUMO / libsumo Python wheels (latest manylinux docker)
# if: github.repository == 'DLR-TS/sumo'
uses: docker://quay.io/pypa/manylinux2014_x86_64
with:
entrypoint: tools/build_config/build_wheels.sh
# the next two steps are only needed when we debug the manylinux build
# - name: Building Python wheels (fixed manylinux docker)
# if: github.repository == 'eclipse-sumo/sumo'
# uses: docker://quay.io/pypa/manylinux2014_x86_64:2022-11-14-1226cfc
# with:
# entrypoint: tools/build_config/build_wheels.sh
# - name: Uploading raw wheels (without auditwheel being applied)
# uses: actions/upload-artifact@v4
# with:
# name: manylinux-raw-wheels
# path: dist
- name: Uploading artifacts (Python wheels)
uses: actions/upload-artifact@v4
with:
name: manylinux-wheels
path: wheelhouse
###################
# testing wheels
###################
test-wheels:
needs: [build-manylinux-wheels]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python_version: [3.7, 3.8, 3.9, '3.10', 3.11, 3.12]
steps:
- name: Cloning SUMO
uses: actions/checkout@v4
- name: Downloading Wheels artifact
uses: actions/download-artifact@v4
- name: Configuring Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python_version }}
- name: Preparing Python environment
run: |
python -m pip install wheel # need to do this separately because the texttest install wants it
python -m pip install texttest
python -m pip install manylinux-wheels/eclipse_sumo*
python -c "import sumo; print('SUMO_HOME=' + sumo.SUMO_HOME)" >> $GITHUB_ENV
- name: Running "sumo in the wheel" tests
if: github.repository == 'DLR-TS/sumo'
run: |
python -m pip install -r tools/req_ci.txt -r tools/requirements.txt
tests/runTests.sh -b ci -v ci.fast
- name: Running meta tests and cleaning up
run: |
tests/runTests.sh -b ci -v ci -ts meta
python -m pip uninstall -y eclipse-sumo
sed -i '/SUMO_HOME/d' $GITHUB_ENV
- name: Running libsumo tests
run: |
python -m pip install manylinux-wheels/sumolib-*.whl manylinux-wheels/traci-*.whl
PYTHON_VERSION=${{ matrix.python_version }}
python -m pip install manylinux-wheels/libsumo-*cp3${PYTHON_VERSION:2}*
cd tests
texttest -b ci -v ci -a complex.libsumo
- name: Compressing test results
if: failure()
run: |
zip -r texttesttmp.zip ~/.texttest/tmp
- name: Uploading test results
if: failure()
uses: actions/upload-artifact@v4
with:
name: texttesttmp-${{ matrix.python_version }}
path: texttesttmp.zip
if-no-files-found: warn
###################
# publishing wheels
###################
publish-wheels:
if: github.repository == 'eclipse-sumo/sumo' && (github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags'))
needs: [test-wheels]
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- name: Downloading Wheels artifact
uses: actions/download-artifact@v4
- name: Publish to Test PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: manylinux-wheels/
repository-url: https://test.pypi.org/legacy/
skip-existing: true
- name: Publish to PyPI
if: startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: manylinux-wheels/