Merge pull request #320 from stucka/stucka-fixes #1001
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: Testing and distribution | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
lint-python: | |
name: Lint and format with pre-commit | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- id: install-python | |
name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
- id: pre-commit | |
name: Pre-commit | |
uses: pre-commit/[email protected] | |
test-python: | |
strategy: | |
matrix: | |
python: ["3.8", "3.9", "3.10",] | |
name: Test Python code | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- id: install-python | |
name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
cache: 'pipenv' | |
- id: install-pipenv | |
name: Install pipenv | |
run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python | |
- id: install-python-dependencies | |
name: Install Python dependencies | |
run: | | |
pipenv install --python `which python` pytest pytest-vcr bln marshmallow click jellyfish requests certifi importlib_metadata | |
pipenv run pip install certifi importlib_metadata | |
shell: bash | |
- id: run | |
name: Run tests | |
run: make test-on-ci | |
env: | |
BLN_API_TOKEN: ${{ secrets.BLN_API_TOKEN }} | |
build: | |
name: Build Python package | |
runs-on: ubuntu-latest | |
needs: [test-python] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- id: install-python | |
name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
cache: 'pipenv' | |
- id: install-pipenv | |
name: Install pipenv | |
run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python | |
- id: install-python-dependencies | |
name: Install Python dependencies | |
run: | | |
pipenv install --dev | |
pipenv run pip install certifi importlib_metadata | |
- id: build | |
name: Build release | |
run: make build-release | |
- id: check | |
name: Check release | |
run: make check-release | |
- id: save | |
name: Save artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: release-${{ github.run_number }} | |
path: ./dist | |
if-no-files-found: error | |
tag-release: | |
name: PyPI release | |
runs-on: ubuntu-latest | |
needs: [build] | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') | |
permissions: | |
contents: 'read' | |
id-token: 'write' | |
steps: | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
- id: fetch | |
name: Fetch artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: release-${{ github.run_number }} | |
path: ./dist | |
- id: publish | |
name: Publish release | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
verbose: true | |
verify_metadata: false |