Fix artifact name collision. Future proof old python version builds #275
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: build | |
on: | |
push: | |
branches: | |
- main | |
- 'dev/**' | |
pull_request: | |
branches: [ main ] | |
release: | |
types: | |
- published | |
jobs: | |
test: | |
strategy: | |
matrix: | |
python-version: | |
- "3.6" | |
- "3.7" | |
- "3.8" | |
- "3.9" | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
include: | |
- os: ubuntu-latest | |
# older versions need older OS | |
- python-version: "3.6" | |
os: ubuntu-20.04 | |
- python-version: "3.7" | |
os: ubuntu-22.04 | |
- python-version: "3.8" | |
os: ubuntu-22.04 | |
name: python${{ matrix.python-version }} | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip install -U pytest pytest-cov coveralls>=3.0.0 parameterized | |
- name: Install | |
run: | | |
python -m pip install . | |
- name: Test | |
run: | | |
cd test | |
pytest --cov=systemrdl | |
- name: Test (without antlr accelerator) | |
run: | | |
cd test | |
export SYSTEMRDL_DISABLE_ACCELERATOR=1 | |
pytest | |
- name: Coveralls | |
if: ${{ matrix.python-version != 3.5 }} # coveralls no longer works well on 3.5 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
COVERALLS_PARALLEL: true | |
run: | | |
cd test | |
coveralls --service=github | |
finish_coveralls: | |
needs: test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.x | |
- name: Coveralls | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
COVERALLS_PARALLEL: true | |
run: | | |
python -m pip install -U coveralls>=3.0.0 | |
coveralls --service=github --finish | |
#------------------------------------------------------------------------------- | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Install dependencies | |
run: | | |
python -m pip install -U pylint | |
- name: Install | |
run: | | |
python setup.py install | |
- name: Run Lint | |
run: | | |
pylint --rcfile test/pylint.rc systemrdl | |
#------------------------------------------------------------------------------- | |
mypy: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Install dependencies | |
run: | | |
python -m pip install -U types-Markdown | |
# Exclude version due to: https://github.com/python/mypy/issues/16770 | |
python -m pip install -U "mypy != 1.8.0" | |
- name: Type Check | |
run: | | |
mypy --config-file test/mypy.ini systemrdl | |
#------------------------------------------------------------------------------- | |
build_wheels: | |
needs: | |
- test | |
- lint | |
- mypy | |
name: ${{ matrix.os }} ${{ matrix.name_suffix }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: | |
- windows-latest | |
- macos-latest | |
include: | |
# Only build CPython 3.x targets | |
- cibw_build: "cp3*" | |
cibw_skip: "" | |
name_suffix: "" | |
# Parallelize Linux builds because there are many! | |
- os: ubuntu-latest | |
name_suffix: "manylinux_x86_64" | |
cibw_build: "cp3*-manylinux_x86_64" | |
cibw_skip: "" | |
- os: ubuntu-latest | |
name_suffix: "manylinux_i686" | |
cibw_build: "cp3*-manylinux_i686" | |
cibw_skip: "" | |
- os: ubuntu-latest | |
name_suffix: "musllinux_x86_64" | |
cibw_build: "cp3*-musllinux_x86_64" | |
cibw_skip: "" | |
- os: ubuntu-latest | |
name_suffix: "others" | |
cibw_build: "cp3*" | |
cibw_skip: "cp3*-{manylinux_x86_64,manylinux_i686,musllinux_x86_64}" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Build wheels | |
uses: pypa/cibuildwheel@v2.16.5 | |
env: | |
CIBW_BUILD: ${{ matrix.cibw_build }} | |
CIBW_SKIP: ${{ matrix.cibw_skip }} | |
# Ensure full C++17 availability on macOS builds | |
MACOSX_DEPLOYMENT_TARGET: "10.13" | |
# Signal setup.py to fail if binary build fails | |
SYSTEMRDL_REQUIRE_BINARY_BUILD: ~ | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: whl-${{ matrix.os }}${{ matrix.name_suffix }} | |
path: ./wheelhouse/*.whl | |
#------------------------------------------------------------------------------- | |
build_sdist: | |
needs: | |
- test | |
- lint | |
- mypy | |
name: Build source distribution | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
name: Install Python | |
with: | |
python-version: "3.10" | |
- name: Build sdist | |
run: python setup.py sdist | |
- uses: actions/upload-artifact@v4 | |
name: sdist | |
with: | |
path: dist/*.tar.gz | |
#------------------------------------------------------------------------------- | |
deploy: | |
needs: | |
- build_wheels | |
- build_sdist | |
runs-on: ubuntu-latest | |
# Only publish when a GitHub Release is created. | |
if: github.event_name == 'release' | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
path: dist | |
- uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.pypi_password }} |