diff --git a/.github/workflows/docker-test.yml b/.github/workflows/docker-test.yml new file mode 100644 index 00000000..fc1ff77d --- /dev/null +++ b/.github/workflows/docker-test.yml @@ -0,0 +1,49 @@ +name: Plugin Test Contain Builder + +on: + push: + paths: + - './docker/**' + +job: + plugin-test-docker: + name: Docker + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.9', '3.10', '3.11', '3.12'] + + # needs: test + if: ${{ github.event_name != 'pull_request' }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Docker + uses: docker/setup-buildx-action@v3 + + - name: Login to Github Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Generate Tags + uses: docker/metadata-action@v5 + id: metadata + with: + images: ghcr.io/bigorangeqwq/nonetest + tags: | + type=semver,pattern={{version}} + type=raw,value=${{ matrix.python-version }}-{{branch}} + + - name: Build and Publish + uses: docker/build-push-action@v5 + with: + file: ./docker/Dockerfile + context: . + push: true + tags: ${{ steps.metadata.outputs.tags }} + labels: ${{ steps.metadata.outputs.labels }} + build-args: PYTHON_VERSION=${{ matrix.python-version }} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fe373872..c25f9bb4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -68,48 +68,6 @@ jobs: push: true tags: ${{ steps.metadata.outputs.tags }} labels: ${{ steps.metadata.outputs.labels }} - - plugin-test-docker: - name: Docker - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ['3.9', '3.10', '3.11', '3.12'] - - # needs: test - if: ${{ github.event_name != 'pull_request' }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Docker - uses: docker/setup-buildx-action@v3 - - - name: Login to Github Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Generate Tags - uses: docker/metadata-action@v5 - id: metadata - with: - images: ghcr.io/bigorangeqwq/nonetest - tags: | - type=semver,pattern={{version}} - type=raw,value=${{ matrix.python-version }}-{{branch}} - - - name: Build and Publish - uses: docker/build-push-action@v5 - with: - file: ./docker/Dockerfile - context: . - push: true - tags: ${{ steps.metadata.outputs.tags }} - labels: ${{ steps.metadata.outputs.labels }} - build-args: PYTHON_VERSION=${{ matrix.python-version }} github-relase: name: GitHub release diff --git a/src/utils/store_test/models.py b/src/utils/store_test/models.py index 241c2560..567ed234 100644 --- a/src/utils/store_test/models.py +++ b/src/utils/store_test/models.py @@ -1,4 +1,3 @@ -import abc from datetime import datetime from typing import Any, Literal from zoneinfo import ZoneInfo diff --git a/src/utils/store_test/utils.py b/src/utils/store_test/utils.py index c59dec74..22e070a1 100644 --- a/src/utils/store_test/utils.py +++ b/src/utils/store_test/utils.py @@ -2,11 +2,14 @@ from functools import cache from pathlib import Path from typing import Any +from collections.abc import Mapping import httpx +from pydantic import BaseModel +from pydantic_core import to_jsonable_python -def load_json(url: str): +def load_json(url: str) -> Any: """从网络加载 JSON 文件""" r = httpx.get(url) if r.status_code != 200: @@ -14,13 +17,15 @@ def load_json(url: str): return r.json() -def dump_json(path: Path, data: dict | list): +def dump_json(path: Path, data: Mapping[str, BaseModel] | list[BaseModel]): """保存 JSON 文件 为减少文件大小,还需手动设置 separators """ with open(path, "w", encoding="utf8") as f: - json.dump(data, f, ensure_ascii=False, separators=(",", ":")) + json.dump( + to_jsonable_python(data), f, ensure_ascii=False, separators=(",", ":") + ) @cache diff --git a/src/utils/validation/models.py b/src/utils/validation/models.py index d07a0f59..b233b05d 100644 --- a/src/utils/validation/models.py +++ b/src/utils/validation/models.py @@ -8,11 +8,9 @@ Field, ValidationInfo, ValidatorFunctionWrapHandler, - field_serializer, field_validator, model_validator, ) -from pydantic_extra_types.color import Color from pydantic_core import PydanticCustomError from src.utils.store_test.models import Metadata, Tag