Skip to content

Pipeline

Three GitHub Actions workflows. All workflows are in .github/workflows/.


app-test.yml

Runs on every push and pull request. Installs test dependencies, runs pytest.

trigger: push (all branches), pull_request (all branches)
python: 3.11
install: pip install -r .github/requirements/test.txt
run: pytest tests/ -v

Test requirements (.github/requirements/test.txt): pytest>=8.0, pytest-asyncio>=0.23, httpx>=0.27.

112 tests. All must pass. No test should take more than 1 second — all OTel tests use InMemorySpanExporter, no network calls.


python-build.yml

Runs on push to production only. Builds the wheel and sdist, publishes to PyPI.

trigger: push to production
steps:
  - hatch build          # produces dist/*.whl + dist/*.tar.gz
  - pypa/gh-action-pypi-publish  # publishes to PyPI
options:
  skip-existing: true    # re-runs don't fail on already-uploaded files

Warning

Currently uses PYPI_API_TOKEN secret. Migrate to Trusted Publishing — OIDC removes the secret entirely. Setup: https://pypi.org/manage/project/openframe-core/settings/publishing/


auto-docs.yml

Runs on push to production (deploy) and PRs to dev/production (build only).

trigger: push to production → build + deploy
         PR to dev/production → build only (validate)
steps:
  - pip install -r .github/requirements/docs.txt
  - mkdocs build --strict    # --strict treats warnings as errors
  - mkdocs gh-deploy --force # production push only

Docs requirements (.github/requirements/docs.txt): mkdocs>=1.6, mkdocs-material>=9.5, mkdocs-swagger-ui-tag>=0.6.

Deploys to gh-pages branch → served at https://furious-meteors.github.io/openframe-core/.