Check examples #2
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: Check examples | |
on: | |
workflow_call: | |
workflow_dispatch: | |
env: | |
POETRY_VERSION: 1.2.2 | |
PYTHON_VERSION: 3.9 | |
jobs: | |
check_examples: | |
name: Check examples | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
id: setup-python | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: Set up Poetry | |
uses: Gr1N/setup-poetry@v8 | |
with: | |
poetry-version: ${{ env.POETRY_VERSION }} | |
# Updating poetry.lock for all of the examples takes over 6 minutes, so it's worth caching. | |
- name: Cache poetry.lock | |
uses: actions/cache@v3 | |
id: cache-poetry-lock | |
with: | |
path: 'examples/**/poetry.lock' | |
# Include the main project's poetry.lock in the hash to detect upstream dependency updates. | |
key: examples-poetry-lock-${{ runner.os }}-py${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('examples/**/pyproject.toml', 'poetry.lock') }} | |
- name: Lock examples | |
if: steps.cache-poetry-lock.outputs.cache-hit != 'true' | |
run: | | |
for example in examples/*/; do | |
echo "::group::$example" | |
pushd $example | |
poetry lock | |
popd | |
echo "::endgroup::" | |
done | |
- name: Cache virtualenvs | |
uses: actions/cache@v3 | |
id: cache-venv | |
with: | |
path: 'examples/**/.venv' | |
key: examples-venv-${{ runner.os }}-py${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('examples/**/poetry.lock') }} | |
- name: Install examples | |
run: | | |
for example in examples/*/; do | |
echo "::group::$example" | |
pushd $example | |
poetry install -v | |
popd | |
echo "::endgroup::" | |
done | |
- name: Lint examples | |
run: | | |
for example in examples/*/; do | |
echo "::group::$example" | |
pushd $example | |
poetry run ni-python-styleguide lint | |
popd | |
echo "::endgroup::" | |
done | |
- name: Mypy static analysis (examples, Linux) | |
run: | | |
for example in examples/*/; do | |
echo "::group::$example" | |
pushd $example | |
poetry run mypy . | |
popd | |
echo "::endgroup::" | |
done | |
- name: Mypy static analysis (examples, Windows) | |
run: | | |
for example in examples/*/; do | |
echo "::group::$example" | |
pushd $example | |
poetry run mypy . --platform win32 | |
popd | |
echo "::endgroup::" | |
done |