name: CI on: push: tags: - 'release/*' jobs: build_pip_package: name: "Build and publish packages" runs-on: hostinger timeout-minutes: 30 container: image: gitea.woggioni.net/woggioni/gitea-runner/ubuntu:26.04 steps: - name: Checkout sources uses: actions/checkout@v6 with: fetch-depth: 0 fetch-tags: true - uses: actions/setup-python@v6 with: python-version-file: '.python-version' - name: Install uv uses: astral-sh/setup-uv@v10 with: version: '0.13.4' enable-cache: true - name: Install dependencies run: uv sync --locked - name: Check kaya-core run: | .venv/bin/python -m mypy -p kaya.core .venv/bin/python -m unittest discover -s packages/kaya-core/tests - name: Check kaya-rsgi run: | .venv/bin/python -m mypy -p kaya.rsgi .venv/bin/python -m unittest discover -s packages/kaya-rsgi/tests - name: Check kaya-session run: | .venv/bin/python -m mypy -p kaya.session .venv/bin/python -m unittest discover -s packages/kaya-session/tests - name: Check kaya-session-memcache run: | .venv/bin/python -m mypy -p kaya.session.memcache .venv/bin/python -m unittest discover -s packages/kaya-session-memcache/tests - name: Check kaya-session-redis run: | .venv/bin/python -m mypy -p kaya.session.redis .venv/bin/python -m unittest discover -s packages/kaya-session-redis/tests - name: Check kaya-oidc run: | .venv/bin/python -m mypy -p kaya.oidc .venv/bin/python -m unittest discover -s packages/kaya-oidc/tests - name: Check kaya-openapi run: | .venv/bin/python -m mypy -p kaya.openapi .venv/bin/python -m unittest discover -s packages/kaya-openapi/tests - name: Check kaya-cors run: | .venv/bin/python -m mypy -p kaya.cors .venv/bin/python -m unittest discover -s packages/kaya-cors/tests - name: Check kaya-forwarded run: | .venv/bin/python -m mypy -p kaya.forwarded .venv/bin/python -m unittest discover -s packages/kaya-forwarded/tests - name: Check kaya-otel run: | .venv/bin/python -m mypy -p kaya.otel .venv/bin/python -m unittest discover -s packages/kaya-otel/tests - name: Publish kaya-core artifacts env: UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }} UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }} UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }} run: | uv build --package kaya-core --out-dir packages/kaya-core/dist --no-sources uv publish packages/kaya-core/dist/*.whl packages/kaya-core/dist/*.tar.gz - name: Publish kaya-rsgi artifacts env: UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }} UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }} UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }} run: | uv build --package kaya-rsgi --out-dir packages/kaya-rsgi/dist --no-sources uv publish packages/kaya-rsgi/dist/*.whl packages/kaya-rsgi/dist/*.tar.gz - name: Publish kaya-session artifacts env: UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }} UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }} UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }} run: | uv build --package kaya-session --out-dir packages/kaya-session/dist --no-sources uv publish packages/kaya-session/dist/*.whl packages/kaya-session/dist/*.tar.gz - name: Publish kaya-session-memcache artifacts env: UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }} UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }} UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }} run: | uv build --package kaya-session-memcache --out-dir packages/kaya-session-memcache/dist --no-sources uv publish packages/kaya-session-memcache/dist/*.whl packages/kaya-session-memcache/dist/*.tar.gz - name: Publish kaya-session-redis artifacts env: UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }} UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }} UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }} run: | uv build --package kaya-session-redis --out-dir packages/kaya-session-redis/dist --no-sources uv publish packages/kaya-session-redis/dist/*.whl packages/kaya-session-redis/dist/*.tar.gz - name: Publish kaya-oidc artifacts env: UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }} UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }} UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }} run: | uv build --package kaya-oidc --out-dir packages/kaya-oidc/dist --no-sources uv publish packages/kaya-oidc/dist/*.whl packages/kaya-oidc/dist/*.tar.gz - name: Publish kaya-openapi artifacts env: UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }} UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }} UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }} run: | uv build --package kaya-openapi --out-dir packages/kaya-openapi/dist --no-sources uv publish packages/kaya-openapi/dist/*.whl packages/kaya-openapi/dist/*.tar.gz - name: Publish kaya-cors artifacts env: UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }} UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }} UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }} run: | uv build --package kaya-cors --out-dir packages/kaya-cors/dist --no-sources uv publish packages/kaya-cors/dist/*.whl packages/kaya-cors/dist/*.tar.gz - name: Publish kaya-forwarded artifacts env: UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }} UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }} UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }} run: | uv build --package kaya-forwarded --out-dir packages/kaya-forwarded/dist --no-sources uv publish packages/kaya-forwarded/dist/*.whl packages/kaya-forwarded/dist/*.tar.gz - name: Publish kaya-otel artifacts env: UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }} UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }} UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }} run: | uv build --package kaya-otel --out-dir packages/kaya-otel/dist --no-sources uv publish packages/kaya-otel/dist/*.whl packages/kaya-otel/dist/*.tar.gz