Skip to content

Separate CLI and and main flow (#70) #53

Separate CLI and and main flow (#70)

Separate CLI and and main flow (#70) #53

Workflow file for this run

name: Ubuntu CI
on: [push, pull_request]
env:
POETRY_VERSION: 1.8.3
jobs:
check_skip:
runs-on: ubuntu-latest
if: |
!contains(format('{0} {1} {2}', github.event.head_commit.message, github.event.pull_request.title, github.event.pull_request.body), '[skip ci]')
steps:
- run: |
cat <<'MESSAGE'
github.event_name: ${{ toJson(github.event_name) }}
github.event:
${{ toJson(github.event) }}
MESSAGE
test:
needs: check_skip
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[skip ci]')"
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12"]
steps:
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install poetry
uses: abatilo/actions-poetry@v3
with:
poetry-version: ${{ env.POETRY_VERSION }}
- name: Checkout source
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install crystalball with testing utilities
run: poetry install -E testing
- name: Run complete test suite
run: poetry run py.test -s -vvv tests/
deploy:
needs: [test]
runs-on: ubuntu-latest
# Run on a push to a tag or master
if: >
github.event_name == 'push' &&
(startsWith(github.event.ref, 'refs/tags') ||
github.event.ref == 'refs/heads/master')
steps:
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Install latest setuptools, wheel, pip, build
run: python3 -m pip install -U pip setuptools wheel build twine
- name: Checkout source
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Build source distribution
run: python -m build --sdist
- name: Check distributions
run: twine check dist/*
- name: Check source distribution install runs
run: pip install dist/*
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
with:
user: __token__
password: ${{ secrets.pypi_token }}