refactor: update dependencies and dev status #130
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Python package | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ["3.10"] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install Poetry | |
run: pipx install poetry | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: "poetry" | |
- name: Install dependencies | |
run: poetry install | |
- name: Lint checking | |
run: poetry run ruff check -v --output-format=github --exclude=poc . | |
- name: Type checking | |
run: poetry run mypy -v --exclude='^poc/' . | |
- name: Test with Pytest | |
run: poetry run pytest -v -s --cov=supabase_pydantic --cov-report=term-missing | |
- name: Coverage check | |
id: coverage | |
run: | | |
COVERAGE=$(poetry run pytest --cov=supabase_pydantic --cov-report=term-missing | grep TOTAL | awk '{print $4}' | tr -d '%') | |
echo "Coverage percentage is $COVERAGE%" | |
echo "::set-output name=coverage::$COVERAGE" | |
if (( $(echo "$COVERAGE < 90" | bc -l) )); then | |
echo "Coverage is below 90% threshold" | |
exit 1 | |
fi | |
- name: Build package | |
run: poetry build | |
release: | |
needs: build | |
if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing | |
contents: write | |
strategy: | |
matrix: | |
python-version: ["3.10"] | |
steps: | |
#---------------------------------------------- | |
# Create GitHub App Token | |
#---------------------------------------------- | |
- name: Create GitHub App Token | |
uses: actions/create-github-app-token@v1 | |
id: app-token | |
with: | |
app-id: ${{ vars.VERSION_BUMPER_APPID }} | |
private-key: ${{ secrets.VERSION_BUMPER_SECRET }} | |
#---------------------------------------------- | |
# Checkout Code and Setup Python | |
#---------------------------------------------- | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # pulls all history and tags for Lerna to detect which packages changed | |
token: ${{ steps.app-token.outputs.token }} # https://python-semantic-release.readthedocs.io/en/latest/automatic-releases/github-actions.html; necessary to set from previous step | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
#---------------------------------------------- | |
# Install Poetry | |
#---------------------------------------------- | |
- name: Install Poetry | |
uses: snok/install-poetry@v1 | |
with: | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
installer-parallel: true | |
#---------------------------------------------- | |
# Install Dependencies | |
#---------------------------------------------- | |
- name: Install dependencies | |
run: poetry install | |
#---------------------------------------------- | |
# Run Tests & Upload Coverage | |
#---------------------------------------------- | |
- name: Run tests and collect coverage | |
run: poetry run pytest -v -s --cov=supabase_pydantic --cov-report=xml | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
verbose: true | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
#---------------------------------------------- | |
# Python Semantic Release | |
#---------------------------------------------- | |
- name: Python Semantic Release (Version) | |
id: release | |
uses: python-semantic-release/python-semantic-release@v8.3.0 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
#---------------------------------------------- | |
# Publish to PyPI & GitHub Release | |
#---------------------------------------------- | |
- name: Publish package distributions to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
- name: Publish package to GitHub Release | |
uses: python-semantic-release/upload-to-gh-release@v9.8.5 | |
if: steps.release.outputs.released == 'true' | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
tag: ${{ steps.release.outputs.tag }} |