diff --git a/.github/workflows/build-wheel.yaml b/.github/workflows/build-wheel.yaml new file mode 100644 index 0000000..3d4558c --- /dev/null +++ b/.github/workflows/build-wheel.yaml @@ -0,0 +1,54 @@ +name: Build wheel + +on: + - push + +jobs: + build-wheel: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + + - name: Set up Python + uses: actions/setup-python@v6 + with: + python-version: "3.12" + + - name: Set up uv + uses: astral-sh/setup-uv@v6 + + - name: Generate API client + run: make gen + + - name: Build wheel + run: make build-wheel + + - name: Upload wheel artifact + uses: actions/upload-artifact@v4 + with: + name: wheel + path: dist/*.whl + + test-wheel: + runs-on: ubuntu-latest + needs: build-wheel + steps: + - name: Set up Python + uses: actions/setup-python@v6 + with: + python-version: "3.12" + + - name: Set up uv + uses: astral-sh/setup-uv@v6 + + - name: Download wheel artifact + uses: actions/download-artifact@v5 + with: + name: wheel + path: dist + + - name: Install wheel as tool + run: uv tool install --from dist/*.whl "uploader" + + - name: Check CLI help + run: 'uploader --help' diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index a520f02..80377b0 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -17,9 +17,6 @@ jobs: - name: Install deps run: make install-dev - - name: Run codegen - run: make gen - - name: Set up Docker runtime uses: docker/setup-buildx-action@v3 diff --git a/.github/workflows/release-wheel.yaml b/.github/workflows/release-wheel.yaml new file mode 100644 index 0000000..fe075df --- /dev/null +++ b/.github/workflows/release-wheel.yaml @@ -0,0 +1,34 @@ +name: Release wheels + +on: + workflow_dispatch: + +jobs: + release-wheel: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-22.04 + - ubuntu-24.04 + - macos-latest + steps: + - uses: actions/checkout@v6 + + - name: Set up Python + uses: actions/setup-python@v6 + with: + python-version: "3.12" + + - name: Set up uv + uses: astral-sh/setup-uv@v6 + + - name: Build wheel + run: uv build --wheel + + - name: Upload wheel artifact + uses: actions/upload-artifact@v4 + with: + name: wheel-${{ matrix.os }} + path: dist/*.whl diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 076d80d..72a84d6 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -20,9 +20,6 @@ jobs: - name: Install deps run: make install-dev - - name: Run codegen - run: make gen - - name: Set up Docker runtime uses: docker/setup-buildx-action@v3 diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index ac6270f..b8607ab 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -17,8 +17,5 @@ jobs: - name: Install deps run: make install-dev - - name: Run codegen - run: make gen - - name: Run checks run: make check diff --git a/.template.yaml b/.template.yaml index 551d969..d9c18a1 100644 --- a/.template.yaml +++ b/.template.yaml @@ -1,6 +1,6 @@ # Autogenerated - DO NOT EDIT # Parameters of the project as generated from template -_commit: f510818 +_commit: 7d1c15b _src_path: gh:kraysent/python-template package_name: uploader project_name: uploader diff --git a/makefile b/makefile index 108f748..9bf4cff 100644 --- a/makefile +++ b/makefile @@ -4,7 +4,7 @@ install: install-frontend: cd frontend && yarn install --frozen-lockfile -install-dev: +install-dev: gen uv sync --all-extras install-dev-frontend: @@ -68,6 +68,9 @@ fix-frontend: @output=$$(cd frontend && yarn run --silent prettier --write src 2>&1) || { echo "$$output"; exit 1; } @output=$$(cd frontend && yarn run --silent eslint --fix src 2>&1) || { echo "$$output"; exit 1; } +build-wheel: gen + uv build --wheel + # only for mac as this is faster build: docker build . \ diff --git a/pyproject.toml b/pyproject.toml index d006c5b..a0f3ed4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,6 +26,10 @@ dependencies = [ requires = ["hatchling"] build-backend = "hatchling.build" +[tool.hatch.build.targets.wheel] +packages = ["uploader"] +force-include = { "uploader/clients/gen" = "uploader/clients/gen" } + [dependency-groups] dev = [ "ruff~=0.15.0",