Skip to content

Some potential improvements to the workflow #472

Some potential improvements to the workflow

Some potential improvements to the workflow #472

Workflow file for this run

name: CI-CD
on:
push: {}
pull_request:
types: [opened, edited, synchronize, reopened]
workflow_dispatch:
inputs:
allowDeploy:
description: "Whether to deploy."
required: true
default: false
type: boolean
# push:
# inputs:
# allowDeploy:
# description: "Whether to deploy."
# required: true
# default: true
# type: boolean
# pull_request:
# types: [opened, edited, synchronize, reopened]
# inputs:
# allowDeploy:
# description: "Whether to deploy."
# required: true
# default: true
# type: boolean
# workflow_dispatch:
# inputs:
# allowDeploy:
# description: "Whether to deploy."
# required: true
# default: false
# type: boolean
jobs:
matrix_prep:
name: Prepare Matrix
runs-on: ubuntu-latest
outputs:
# matrix: ${{ steps.set-matrix.outputs.matrix }}
matrix: ${{ steps.set-matrix.outputs.matrix || '{"os":["ubuntu-latest"],"cibw_build":"cp39-manylinux_x86_64"}' }}
steps:
- uses: actions/checkout@v4.2.2
- id: set-matrix
uses: JoshuaTheMiller/conditional-build-matrix@main
env:
BRANCH_NAME: ${GITHUB_REF#refs/heads/}
with:
inputFile: '.github/workflows/matrix_includes.json'
filter: '[?starts_with(`${{ env.BRANCH_NAME }}`, runOn)] || [?runOn == `always`]'
syntax_check:
name: Check for syntax errors
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.2.2
- name: Flake8 - Error on syntax errors or undefined names
uses: py-actions/flake8@v2.3.0
with:
args: --count --select=E9,F63,F7,F82 --show-source --statistics
update-pip: "true"
- name: Flake8 - Warn on everything else
uses: py-actions/flake8@v2.3.0
with:
args: --count --exit-zero --max-complexity=10 --statistics
max-line-length: 127
update-pip: "true"
pytest:
name: Pytest
needs: syntax_check
strategy:
matrix:
python-version: [3.9]
os: [ubuntu-latest, macos-latest]
# os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4.2.2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5.4.0
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
pip install --upgrade pip
pip install -r requirements.txt
- name: Build and install
run: pip install --verbose .
# Exclude beam_width specification for macOS as it has different results.
- name: Test with pytest
run: |
if [ "$RUNNER_OS" == "Linux" ] || [ "$RUNNER_OS" == "Windows" ]; then
pytest
elif [ "$RUNNER_OS" == "macOS" ]; then
pytest -k 'not TestBeamSearch'; \
pytest -k '_no_bw or _bw_m1'
fi
# shell: bash
build_wheels:
name: Build wheels
needs: [pytest, matrix_prep]
strategy:
matrix: ${{ fromJson(needs.matrix_prep.outputs.matrix) }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4.2.2
- name: Set up Python
uses: actions/setup-python@v5.4.0
with:
python-version: "3.9"
- name: Build wheels
uses: pypa/cibuildwheel@v2.22.0
env:
CIBW_BUILD: ${{ matrix.cibw_build }}
CIBW_SKIP: ${{ matrix.cibw_skip }}
CIBW_PROJECT_REQUIRES_PYTHON: ">=3.9"
- uses: actions/upload-artifact@v4
with:
path: ./wheelhouse/*.whl
build_sdist:
name: Build source distribution
needs: pytest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.2.2
- name: Setup Python
uses: actions/setup-python@v5.4.0
with:
python-version: "3.9"
- name: Install dependencies
run: python -m pip install twine build
- name: Build sdist
run: python -m build -s
- name: Check metadata
run: twine check dist/*
- uses: actions/upload-artifact@v4
with:
path: dist/*.tar.gz
deploy:
# if: github.ref == 'refs/heads/master' && ${{ inputs.allowDeploy }} == 'true'
if: github.ref == 'refs/heads/master' && (github.event_name != 'workflow_dispatch' || inputs.allowDeploy == 'true')
needs: [build_wheels, build_sdist]
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v5.4.0
with:
python-version: "3.9"
- uses: actions/download-artifact@v4
with:
path: dist
- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}