0afa75ee30
CI / Format (ruff format) (push) Successful in 1m43s
CI / Lint (ruff check) (push) Successful in 1m43s
CI / Sync project version with tag (push) Has been skipped
CI / Lint (ruff check) (pull_request) Successful in 1m53s
CI / Type check (ty) (push) Successful in 1m58s
CI / Format (ruff format) (pull_request) Successful in 1m47s
CI / Sync project version with tag (pull_request) Has been skipped
CI / Type check (ty) (pull_request) Successful in 1m52s
CI / Tests (push) Successful in 5m40s
CI / Tests (pull_request) Successful in 3m48s
The self-hosted act_runner doesn't support upload/download-artifact, so drop that plumbing and instead run jobs in an explicit container with a persistent host directory mounted at /uv-cache (UV_CACHE_DIR), backed by valid_volumes on the runner. uv sync still runs per job but hits a warm local cache instead of re-downloading/building packages every time.
94 lines
2.8 KiB
YAML
94 lines
2.8 KiB
YAML
name: CI
|
|
|
|
"on":
|
|
push:
|
|
branches: ["**"]
|
|
tags: ["**"]
|
|
pull_request:
|
|
branches: [master]
|
|
|
|
env:
|
|
UV_CACHE_DIR: /uv-cache
|
|
|
|
jobs:
|
|
ruff-check:
|
|
name: Lint (ruff check)
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: docker.gitea.com/runner-images:ubuntu-latest
|
|
volumes:
|
|
- /srv/act-runner-cache/uv:/uv-cache
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: astral-sh/setup-uv@v5
|
|
- run: uv sync --extra cpu --extra dev
|
|
- run: uv run ruff check .
|
|
|
|
ruff-format:
|
|
name: Format (ruff format)
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: docker.gitea.com/runner-images:ubuntu-latest
|
|
volumes:
|
|
- /srv/act-runner-cache/uv:/uv-cache
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: astral-sh/setup-uv@v5
|
|
- run: uv sync --extra cpu --extra dev
|
|
- run: uv run ruff format --check .
|
|
|
|
type-check:
|
|
name: Type check (ty)
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: docker.gitea.com/runner-images:ubuntu-latest
|
|
volumes:
|
|
- /srv/act-runner-cache/uv:/uv-cache
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: astral-sh/setup-uv@v5
|
|
- run: uv sync --extra cpu --extra dev
|
|
- run: uv run ty check .
|
|
|
|
test:
|
|
name: Tests
|
|
needs: [ruff-check, type-check]
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: docker.gitea.com/runner-images:ubuntu-latest
|
|
volumes:
|
|
- /srv/act-runner-cache/uv:/uv-cache
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: astral-sh/setup-uv@v5
|
|
- run: uv sync --extra cpu --extra dev
|
|
- run: uv run pytest
|
|
|
|
sync-version-on-tag:
|
|
name: Sync project version with tag
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
token: ${{ secrets.CI_TOKEN }}
|
|
- uses: astral-sh/setup-uv@v5
|
|
- name: Check tag against project version, update if they differ
|
|
run: |
|
|
TAG_VERSION="${GITHUB_REF_NAME#v}"
|
|
CURRENT_VERSION=$(uv version --short)
|
|
if [ "$TAG_VERSION" != "$CURRENT_VERSION" ]; then
|
|
echo "Tag version ($TAG_VERSION) != project version ($CURRENT_VERSION); updating pyproject.toml"
|
|
uv version "$TAG_VERSION" --no-sync
|
|
git config user.name "gitea-actions"
|
|
git config user.email "actions@git.larsbogner.de"
|
|
git add pyproject.toml uv.lock
|
|
git commit -m "chore: sync project version to tag ${GITHUB_REF_NAME} [skip ci]"
|
|
git push origin HEAD:master
|
|
git push origin ":refs/tags/${GITHUB_REF_NAME}"
|
|
git tag -f "${GITHUB_REF_NAME}" HEAD
|
|
git push origin "refs/tags/${GITHUB_REF_NAME}"
|
|
else
|
|
echo "Tag version matches project version ($CURRENT_VERSION)"
|
|
fi
|