Skip to content

windows-wheels

windows-wheels #104

Workflow file for this run

name: windows-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-wheels:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
build_type: [libsumo]
python_version: [3.7, 3.8, 3.9, '3.10', 3.11, 3.12]
include:
- build_type: sumo
python_version: 3.8
env:
CC: cl
CXX: cl
SUMO_LIBRARIES: D:\a\sumo\sumo\sumolibraries
TMPDIR: D:\a\sumo\sumo\tmp
steps:
- name: Cloning SUMO
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Fetching SUMO tags
run: git fetch --tags --force
- name: Cloning SUMO Libraries
uses: actions/checkout@v4
with:
repository: DLR-TS/SUMOLibraries
path: sumolibraries
- name: Configuring Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python_version }}
architecture: x64
- name: "Set up compiler cache"
uses: actions/cache@v4
with:
path: C:\Users\runneradmin\AppData\Local\Mozilla\sccache\cache
key: ${{ matrix.build_type }}-${{ matrix.python_version }}-${{ github.head_ref }}-${{ github.run_number }}
restore-keys: |
${{ matrix.build_type }}-${{ matrix.python_version }}-${{ github.head_ref }}-
${{ matrix.build_type }}-${{ matrix.python_version }}-
# required for CMake to find Ninja
- name: "Set up MSVC Developer Command Prompt"
# uses: seanmiddleditch/gha-setup-vsdevenv@v4 # disabled until it gets an update for node.js
uses: compnerd/gha-setup-vsdevenv@main
- name: Installing Python build environment
run: |
python -m pip install wheel build
mkdir tmp
- name: Building libsumo plain
if: matrix.build_type == 'libsumo'
run: |
cmake -Bbuild_msvc -GNinja -DCHECK_OPTIONAL_LIBS=false
cmake --build build_msvc --config Release --target libsumo libtraci
xcopy /s data .\tools\libsumo\data\
python tools\build_config\version.py tools\build_config\setup-libsumo.py tools\setup.py
python -m build --wheel tools -o dist --config-setting=--plat-name=win_amd64
- name: Uploading artifacts
if: matrix.build_type == 'libsumo'
uses: actions/upload-artifact@v4
with:
name: libsumo-python-${{ matrix.python_version }}-wheels
path: dist
- name: Building SUMO Wheels
if: matrix.build_type == 'sumo'
run: |
python tools\build_config\version.py tools\build_config\setup-sumolib.py tools\setup.py
python -m build --wheel tools -o dist
python tools\build_config\version.py tools\build_config\setup-traci.py tools\setup.py
python -m build --wheel tools -o dist
copy build_config\pyproject.toml .
python tools\build_config\version.py tools\build_config\setup-sumo.py .\setup.py
python -m build --wheel --config-setting=--plat-name=win_amd64 --config-setting=-G=Ninja
python -c "import glob, os; f = glob.glob(\`"dist/eclipse_sumo-*\`")[0]; os.rename(f, f.replace(\`"cp38-cp38\`", \`"py2.py3-none\`"))"
- name: Uploading artifacts
if: matrix.build_type == 'sumo'
uses: actions/upload-artifact@v4
with:
name: sumo-python-wheels
path: dist
- name: Plain libsumo tests
if: matrix.build_type == 'libsumo'
run: |
$env:PATH += ";$pwd\bin"
$env:TEXTTEST_TMP = "D:/texttest"
cd build_msvc
$env:TEXTTEST_CI_APPS = "-a complex.libsumo.ci"
ctest -R texttest --verbose
copy Testing/Temporary/LastTest.log D:/texttest
###################
# testing wheels
###################
test-wheels:
needs: [build-wheels]
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
python_version: [3.7, 3.8, 3.9, '3.10', 3.11, 3.12]
env:
TEXTTEST_TMP: 'D:/texttest'
steps:
- name: Cloning SUMO
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Fetching SUMO tags
run: git fetch --tags --force
- 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 texttest
python -m pip install (Get-ChildItem -Filter sumo-python-wheels/eclipse_sumo*).FullName
python -c "import sumo; print('SUMO_HOME=' + sumo.SUMO_HOME)" >> $env: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
python -m pip install -r tools/requirements.txt
$env:TEXTTEST_CI_APPS = "-v ci.fast -a activitygen,dfrouter,duarouter,jtrrouter,marouter,netgen,od2trips,polyconvert,netconvert,sumo"
tests\runCiTests.bat $env:pythonLocation\Scripts\texttestc.py
# $env:TEXTTEST_CI_APPS = "-v ci.fast -a complex,tools"
# tests\runCiTests.bat $env:pythonLocation\Scripts\texttestc.py
- name: Running meta tests and cleaning up
run: |
$env:TEXTTEST_CI_APPS = "-ts meta"
tests\runCiTests.bat $env:pythonLocation\Scripts\texttestc.py
python -m pip uninstall -y eclipse-sumo
- name: Installing libsumo
run: |
python -m pip install (Get-ChildItem -Filter sumo-python-wheels/sumolib-*).FullName (Get-ChildItem -Filter sumo-python-wheels/traci-*).FullName
python -m pip install --user (Get-ChildItem -Filter libsumo-python-${{ matrix.python_version }}-wheels/libsumo-*).FullName
# - name: Running libsumo tests
# run: |
# $env:TEXTTEST_CI_APPS = "-a complex.libsumo"
# tests\runCiTests.bat $env:pythonLocation\Scripts\texttestc.py
- name: Compressing test results
if: failure()
run: Compress-Archive -Path $env:TEXTTEST_TMP -DestinationPath D:/tt.zip
- name: Uploading test results
if: failure()
uses: actions/upload-artifact@v4
with:
name: texttesttmp-${{ matrix.python_version }}
path: D:/tt.zip
if-no-files-found: warn
###################
# publishing wheels
###################
publish-wheels:
if: github.repository == 'eclipse-sumo/sumo' && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags'))
needs: [test-wheels]
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v4
# this step removes the sumolib and traci packages which linux takes care of
- name: Moving artifacts
run: |
ls -lR
mkdir dist
mv ./*-wheels/* dist
rm -f dist/sumolib* dist/traci*
- name: Publish to Test PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
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