Skip to content

Merge pull request #12 from actlab-fhy/dev #31

Merge pull request #12 from actlab-fhy/dev

Merge pull request #12 from actlab-fhy/dev #31

# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
name: FhY-core CI
on:
push:
branches: [ "main", "dev" ]
pull_request:
branches: [ "main", "dev" ]
env:
FORCE_COLOR: "1" # Tox output is colorless by default
PIP_DISABLE_PIP_VERSION_CHECK: "1"
jobs:
build:
runs-on: "ubuntu-latest"
strategy:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version-file: .python-version-default
- name: Install Dependencies
run: |
python -m pip install -U pip
python -m pip install setuptools wheel
style:
runs-on: "ubuntu-latest"
needs: [build]
strategy:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version-file: .python-version-default
- name: Install tox
run: |
python -m pip install -U pip
python -m pip install setuptools wheel
pip install tox
- name: Code Linting & Formatting
if: always()
run: tox -e lint
- name: Static Type Safety Check
if: always()
run: tox -e type
tests:
runs-on: ${{ matrix.os }}
needs: [build]
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
os: [ubuntu-latest, macOS-latest, windows-latest]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install tox
run: |
python -m pip install -U pip
python -m pip install setuptools wheel
pip install tox
- name: Setup Tox Python Version (${{ matrix.os }})
if: matrix.os != 'windows-latest'
run: |
echo "TOX_VERSION=py$(echo ${{ matrix.python-version }} | tr -d .)-tests" >> $GITHUB_ENV
- name: Setup Tox Python Version (${{ matrix.os }})
if: matrix.os == 'windows-latest'
run: |
"TOX_VERSION=py$(echo ${{ matrix.python-version }} | tr -d .)-tests" >> $env:GITHUB_ENV
- name: Unit & Integration Testing
run: |
echo ${{ env.TOX_VERSION }}
tox -e ${{ env.TOX_VERSION }}
- name: Save Coverage Data
uses: actions/upload-artifact@v4
with:
name: coverage-data-${{ matrix.os }}-${{ matrix.python-version }}
path: .coverage.*
retention-days: 1
if-no-files-found: ignore
coverage:
runs-on: "ubuntu-latest"
needs: [build, tests]
strategy:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download coverage data
uses: actions/download-artifact@v4
with:
pattern: coverage-data-*
merge-multiple: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version-file: .python-version-default
- name: Install tox
run: |
python -m pip install -U pip
python -m pip install setuptools wheel
pip install tox
- name: Report Testing Coverage
run: |
tox -e coverage | tee $GITHUB_STEP_SUMMARY