Skip to content

feat: Initial release #6

feat: Initial release

feat: Initial release #6

Workflow file for this run

name: Main
on:
push:
branches:
- "develop"
pull_request:
branches:
- "develop"
workflow_dispatch:
jobs:
static_analysis:
name: Linting and Type Checking
runs-on: ubuntu-22.04
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
python-version: [ "3.10" ]
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
id: setup-python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: 1.5.1
virtualenvs-create: true
virtualenvs-in-project: true
- name: Install dependencies
run: poetry install --no-interaction --only dev
- name: Black
uses: psf/black@stable
with:
options: "--line-length 120 --check --verbose"
version: "~= 23.0"
- name: flake8
run: poetry run flake8 src tests --count --max-line-length=120 --extend-ignore=E203,E266,E501,W503,F403 --statistics
- name: MyPy
run: poetry run mypy src --ignore-missing-imports
unit_tests:
name: Build Project and Unit Testing
runs-on: ubuntu-22.04
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
python-version: [ "3.10" ]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: '0'
- name: print ENV variables
run: printenv
- name: Set up Python ${{ matrix.python-version }}
id: setup-python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry
if: steps.cached-poetry.outputs.cache-hit != 'true'
uses: snok/install-poetry@v1
with:
version: 1.5.1
virtualenvs-create: true
virtualenvs-in-project: true
- name: Install OS packages
run: |
sudo apt-get update && \
sudo apt-get install -y \
lcov
- name: Install dependencies
run: poetry install --no-interaction --no-root
- name: Install project
run: poetry install --no-interaction
- name: Test with pytest
run: poetry run pytest tests/ --cov=src/ --cov-report=lcov
- name: Upload test coverage for all files
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: coverage.lcov
deploy:
needs:
- static_analysis
- unit_tests
# Only run this job if new work is pushed to "develop"
if: github.event_name == 'push' && github.ref == 'refs/heads/develop'
runs-on: ubuntu-22.04
concurrency: release
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
python-version: [ "3.10" ]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
# Print ENV Variables
- name: print ENV variables
run: printenv
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: 1.5.1
virtualenvs-create: true
virtualenvs-in-project: true
- name: Install dependencies
run: poetry install --no-interaction --no-root
- name: Install project
run: poetry install --no-interaction
- name: Use Python Semantic Release to prepare release
id: python-semantic-release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config user.name github-actions
git config user.email [email protected]
poetry run semantic-release publish
echo "VERSION=$(poetry run semantic-release print-version --current)" >> $GITHUB_OUTPUT
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}