fix: Various bugs with runtime #162
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
# Do not edit! This file was generated via the /lib/py_monorepo_manager | |
# Any manual changes to this file will eventually be overwritten by CI | |
# | |
# This CI workflow will run on every push to a branch that has an open pull request | |
# not in draft mode. | |
name: "test-services/device" | |
# cancel previous runs if the branch is updated. | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened, ready_for_review, review_requested] | |
paths: | |
- .github/workflows/test-services-device.yml | |
- services/device/** | |
- lib/py_edge_device/** | |
- lib/py_dev_dependencies/** | |
workflow_dispatch: | |
inputs: | |
logLevel: | |
description: 'Log level' | |
required: true | |
default: 'warning' | |
type: choice | |
options: | |
- info | |
- warning | |
- debug | |
useCache: | |
description: 'Activate caching' | |
required: true | |
default: 'yes' | |
type: choice | |
options: | |
- yes | |
- no | |
jobs: | |
test: | |
timeout-minutes: 8 | |
if: github.event.pull_request.draft == false | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
name: Set up - Checkout services/device | |
with: | |
ref: ${{ github.head_ref }} | |
- name: Set up - Set git credentials | |
run: | | |
git config --local user.email "github-actions[bot]@users.noreply.github.com" | |
git config --local user.name "github-actions[bot]" | |
# Cache the installation of Poetry itself, e.g. the next step. This prevents the workflow | |
# from installing Poetry every time, which can be slow. Note the use of the Poetry version | |
# number in the cache key, and the "-0" suffix: this allows you to invalidate the cache | |
# manually if/when you want to upgrade Poetry, or if something goes wrong. This could be | |
# mildly cleaner by using an environment variable, but I don't really care. | |
- name: Set up - Cache Poetry 1.7.1 | |
uses: actions/cache@v4 | |
with: | |
path: ~/.local | |
key: python-3.11-poetry-1.7.1 | |
# If you wanted to use multiple Python versions, you'd have specify a matrix in the job and | |
# reference the matrix python version here. | |
- uses: actions/setup-python@v5 | |
name: Set up - Install Python 3.11 | |
with: | |
python-version: 3.11 | |
# Install Poetry. You could do this manually, or there are several actions that do this. | |
# `snok/install-poetry` seems to be minimal yet complete, and really just calls out to | |
# Poetry's default install script, which feels correct. I pin the Poetry version here | |
# because Poetry does occasionally change APIs between versions and I don't want my | |
# actions to break if it does. | |
# | |
# The key configuration value here is `virtualenvs-in-project: true`: this creates the | |
# venv as a `.venv` in your testing directory, which allows the next step to easily | |
# cache it. | |
- name: Set up - Install Poetry 1.7.1 | |
uses: snok/install-poetry@v1 | |
with: | |
version: 1.7.1 | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
# Cache your dependencies (i.e. all the stuff in your `pyproject.toml`). Note the cache | |
# key: if you're using multiple Python versions, or multiple OSes, you'd need to include | |
# them in the cache key. I'm not, so it can be simple and just depend on the poetry.lock. | |
- name: Set up - Cache services/device dependencies | |
id: cache-deps | |
uses: actions/cache@v4 | |
with: | |
path: ./services/device/.venv | |
key: device-${{ hashFiles('./services/device/poetry.lock', './lib/py_edge_device/**/*.py', './lib/py_dev_dependencies/**/*.py', './lib/py_edge_device/**/*.sql', './lib/py_dev_dependencies/**/*.sql', './lib/py_edge_device/poetry.lock', './lib/py_dev_dependencies/poetry.lock')}}-3.11-1.7.1 | |
# Install dependencies. `--no-root` means "install all dependencies but not the project | |
# itself", which is what you want to avoid caching _your_ code. The `if` statement | |
# ensures this only runs on a cache miss. | |
- name: Set up - Install services/device dependencies | |
run: poetry install --no-interaction --no-root --all-extras | |
working-directory: ./services/device | |
- name: Set up - Get changed files | |
if: ${{ !cancelled() }} | |
id: detect-changed-files | |
uses: tj-actions/changed-files@v42 | |
with: | |
files_yaml: | | |
pyproject_toml: | |
- services/device/pyproject.toml | |
poetry_lock: | |
- services/device/poetry.lock | |
python_files: | |
- services/device/device/**/*.py | |
# installing the repository is required to register any pytest plugins | |
# that are defined by the repository | |
- name: Set up - Install project | |
run: poetry install --no-interaction --all-extras | |
working-directory: ./services/device | |
- name: Auto - format | |
run: make format | |
working-directory: ./services/device | |
- name: Lint - ruff | |
if: ${{ !cancelled() }} | |
run: make ruff | |
working-directory: ./services/device | |
- name: Type checking - mypy | |
if: ${{ !cancelled() }} | |
run: make mypy | |
working-directory: ./services/device | |
- name: Test - pytest | |
if: ${{ !cancelled() }} | |
run: make pytest | |
working-directory: ./services/device | |
- name: Test - coverage | |
if: ${{ !cancelled() }} | |
run: make coverage | |
working-directory: ./services/device | |
- name: Auto - commit pending changes | |
if: ${{ !cancelled() }} | |
run: | | |
git add -A | |
git commit -m "update services/device" $_EMPTY || exit 0 | |
- name: Auto - push changes | |
if: ${{ !cancelled() }} | |
run: | | |
git pull --rebase | |
git push origin HEAD:refs/heads/${{ github.head_ref }} || exit 01 |