Skip to content

Updated Pipeline To Support Multi-OS #18

Updated Pipeline To Support Multi-OS

Updated Pipeline To Support Multi-OS #18

Workflow file for this run

name: Test & Build
on:
push:
branches:
- '*'
jobs:
lint:
name: Lint
timeout-minutes: 20
strategy:
fail-fast: true
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]
python-version: [ '3.10' ]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install flake8
- name: Run Lint
run: flake8 --verbose --color auto --count --statistics --format=json --output-file=flake8-report.json || echo "::set-output name=flake8_failed::true"
continue-on-error: true
- name: Upload Report
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: lint-report-${{ matrix.python-version }}-${{ matrix.os }}
path: flake8-report.json
test:
name: Test
timeout-minutes: 20
strategy:
fail-fast: true
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]
python-version: [ '3.10', '3.11', '3.12' ]
runs-on: ${{ matrix.os }}
needs: lint
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install pytest
pip install -r requirements.txt
- name: Run Tests
run: |
pytest tests -vv -rEPW -o pytest_collection_order=alphabetical --cache-clear --color=yes
build:
name: Build
timeout-minutes: 20
strategy:
fail-fast: true
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]
python-version: [ '3.10', '3.11', '3.12' ]
runs-on: ${{ matrix.os }}
needs: test
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel
- name: Build Package
run: |
python setup.py sdist
- name: Get Package Name
run: |
if [ "$(uname)" == "Darwin" ]; then
path_separator="/"
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
path_separator="/"
elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then
path_separator="\\"
elif [ "$(expr substr $(uname -s) 1 9)" == "CYGWIN_NT" ]; then
path_separator="\\"
fi
latestFile=$(ls -t dist/ | head -n 1)
echo "Latest file: $latestFile"
echo "PACKAGE_NAME=dist/$latestFile" >> $GITHUB_ENV
- name: Install Package
run: |
pip install ${{ env.PACKAGE_NAME }}