Skip to content

feat: Device autoupdate test and device service #47

feat: Device autoupdate test and device service

feat: Device autoupdate test and device service #47

# 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-lib/py_carlos_database"
# 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-lib-py_carlos_database.yml
- lib/py_carlos_database/**
- lib/py_dev_dependencies/**
- lib/py_edge_interface/**
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 lib/py_carlos_database
with:
ref: ${{ github.head_ref }}
# 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 lib/py_carlos_database dependencies
id: cache-deps
uses: actions/cache@v4
with:
path: ./lib/py_carlos_database/.venv
key: py_carlos_database-${{ hashFiles('./lib/py_carlos_database/poetry.lock', './lib/py_dev_dependencies/**/*.py', './lib/py_edge_interface/**/*.py', './lib/py_dev_dependencies/**/*.sql', './lib/py_edge_interface/**/*.sql', './lib/py_dev_dependencies/poetry.lock', './lib/py_edge_interface/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 lib/py_carlos_database dependencies
run: poetry install --no-interaction --no-root --all-extras
working-directory: ./lib/py_carlos_database
# 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: ./lib/py_carlos_database
- name: Auto - format
run: make format
working-directory: ./lib/py_carlos_database
- name: Lint - ruff
if: ${{ !cancelled() }}
run: make ruff
working-directory: ./lib/py_carlos_database
- name: Type checking - mypy
if: ${{ !cancelled() }}
run: make mypy
working-directory: ./lib/py_carlos_database
- name: Test - pytest
if: ${{ !cancelled() }}
run: make pytest
working-directory: ./lib/py_carlos_database
- name: Test - coverage
if: ${{ !cancelled() }}
run: make coverage
working-directory: ./lib/py_carlos_database
- uses: actions-js/push@master
if: ${{ !cancelled() }}
name: Push changes
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.head_ref }}
message: "update lib/py_carlos_database"
coauthor_email: ${{ github.event.pull_request.user.login }}@users.noreply.github.com
coauthor_name: ${{ github.event.pull_request.user.login }}
- name: Set up - Get changed files for CHANGELOG.md
if: ${{ !cancelled() }}
id: detect-changed-files
uses: tj-actions/changed-files@v42
with:
files_yaml: |
pyproject_toml:
- lib/py_carlos_database/pyproject.toml
python_files:
- lib/py_carlos_database/carlos/**/*.py
- name: Test - Version bump
# This step will fail if there are python files changed but the version in pyproject.toml is not updated
if: (steps.detect-changed-files.outputs.python_files_any_changed == 'true') && (steps.detect-changed-files.outputs.pyproject_toml_any_changed == 'false') && !cancelled()
run: |
echo "No changes in pyproject.toml but there are changes in python files. Please update the version in pyproject.toml if the code changes. Otherwise the automatic update of the carlos device may fail."
exit 1