Skip to content

Updated Pipeline To Support Multi-OS & Added Support for PyPI Release #55

Updated Pipeline To Support Multi-OS & Added Support for PyPI Release

Updated Pipeline To Support Multi-OS & Added Support for PyPI Release #55

Workflow file for this run

name: Build & Test
on:
push:
branches:
- '*'
jobs:
lint:
name: Lint
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
os: [ ubuntu-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=default --output-file=flake8-report
- name: Upload Report
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: lint-report-${{ matrix.python-version }}-${{ matrix.os }}
path: flake8-report
test:
name: Test
timeout-minutes: 20
strategy:
fail-fast: false
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: Install Dependencies (Ubuntu)
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get install -y python3-tk
sudo apt-get install -y xvfb
- name: Start Virtual Display (Ubuntu)
if: matrix.os == 'ubuntu-latest'
run: |
# Xvfb :99 -screen 0 1024x768x16 &
# export DISPLAY=:99
ps aux | grep xvfb
xvfb-run --auto-servernum --server-args='-screen 0 1024x768x24' pytest tests
- 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: false
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]
python-version: [ '3.10' ]
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 (Windows)
if: matrix.os == 'windows-latest'
run: |
$path_separator = "\\"
$latestFile = Get-ChildItem -Path "dist\\" | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Write-Host "Latest file: $latestFile"
Write-Output "PACKAGE_NAME=dist$path_separator$($latestFile.Name)" | Out-File -FilePath $env:GITHUB_ENV -Append
- name: Get Package Name (Ubuntu and macOS)
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'
run: |
path_separator="/"
latestFile=$(ls -t dist/ | head -n 1)
echo "Latest file: $latestFile"
echo "PACKAGE_NAME=dist$path_separator$latestFile" >> $GITHUB_ENV
- name: Install Package
run: |
pip install ${{ env.PACKAGE_NAME }}
release_check:
name: Release Check
timeout-minutes: 20
strategy:
fail-fast: true
matrix:
os: [ ubuntu-latest ]
python-version: [ '3.10' ]
runs-on: ${{ matrix.os }}
needs: build
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 twine
- name: Build Package
run: |
python setup.py sdist bdist_wheel
- name: Get Package Name (Windows)
if: matrix.os == 'windows-latest'
run: |
$path_separator = "\\"
$latestFile = Get-ChildItem -Path "dist\\" | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Write-Host "Latest file: $latestFile"
Write-Output "PACKAGE_NAME=dist$path_separator$($latestFile.Name)" | Out-File -FilePath $env:GITHUB_ENV -Append
- name: Get Package Name (Ubuntu and macOS)
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'
run: |
path_separator="/"
latestFile=$(ls -t dist/ | head -n 1)
echo "Latest file: $latestFile"
echo "PACKAGE_NAME=dist$path_separator$latestFile" >> $GITHUB_ENV
- name: Release Check
run: |
twine check ${{ env.PACKAGE_NAME }}