Files
kaya/.gitea/workflows/build.yaml
T
woggioni ec056a15b9 Migrate dependency management from pip to uv
- Add a uv workspace at the repository root covering all packages/kaya-* members
- Replace pip-compile requirements files with a committed uv.lock
- Remove redundant per-package dev extras
- Build and publish artifacts with uv build and uv publish in CI
- Update the README with uv sync/run/build commands
2026-10-21 21:56:08 +08:00

149 lines
6.7 KiB
YAML

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