From 4205384bff11051637fd5024a3aca2d5258fc374 Mon Sep 17 00:00:00 2001 From: chucoding Date: Sun, 15 Mar 2026 02:26:35 +0900 Subject: [PATCH] release : v0.1.5 --- .github/workflows/release-py.yml | 89 ++++++++++++++++++++++++++++++++ packages/cli-js/package.json | 2 +- packages/cli-py/pyproject.toml | 2 +- packages/core/package.json | 2 +- packages/core/pyproject.toml | 2 +- 5 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/release-py.yml diff --git a/.github/workflows/release-py.yml b/.github/workflows/release-py.yml new file mode 100644 index 0000000..1797c33 --- /dev/null +++ b/.github/workflows/release-py.yml @@ -0,0 +1,89 @@ +# PyPI 배포: Repository Settings → Secrets and variables → Actions 에서 PYPI_TOKEN (PyPI API token) 등록 필요. +name: Release Python packages + +on: + push: + tags: + - "v*" + workflow_dispatch: + +permissions: + contents: read + +jobs: + publish-planforge-core: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.10" + + - name: Install build tools + run: pip install build twine + + - name: Verify tag version matches planforge-core version + if: github.event_name == 'push' + working-directory: packages/core + run: | + TAG_VERSION="${GITHUB_REF_NAME#v}" + CORE_VERSION=$(grep -E '^version\s*=' pyproject.toml | sed 's/.*=\s*"\(.*\)".*/\1/') + echo "Tag version: ${TAG_VERSION}" + echo "planforge-core version: ${CORE_VERSION}" + if [[ "${TAG_VERSION}" != "${CORE_VERSION}" ]]; then + echo "Tag version and planforge-core version must match." + exit 1 + fi + + - name: Build planforge-core + working-directory: packages/core + run: python -m build + + - name: Publish planforge-core to PyPI + working-directory: packages/core + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} + run: twine upload dist/* + + publish-planforge-cli: + runs-on: ubuntu-latest + needs: publish-planforge-core + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.10" + + - name: Install build tools + run: pip install build twine + + - name: Verify tag version matches planforge (CLI) version + if: github.event_name == 'push' + working-directory: packages/cli-py + run: | + TAG_VERSION="${GITHUB_REF_NAME#v}" + CLI_VERSION=$(grep -E '^version\s*=' pyproject.toml | sed 's/.*=\s*"\(.*\)".*/\1/') + echo "Tag version: ${TAG_VERSION}" + echo "planforge (CLI) version: ${CLI_VERSION}" + if [[ "${TAG_VERSION}" != "${CLI_VERSION}" ]]; then + echo "Tag version and planforge CLI version must match." + exit 1 + fi + + - name: Build planforge CLI + working-directory: packages/cli-py + run: python -m build + + - name: Publish planforge CLI to PyPI + working-directory: packages/cli-py + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} + run: twine upload dist/* diff --git a/packages/cli-js/package.json b/packages/cli-js/package.json index 9b40082..e449695 100644 --- a/packages/cli-js/package.json +++ b/packages/cli-js/package.json @@ -1,6 +1,6 @@ { "name": "planforge", - "version": "0.1.4", + "version": "0.1.5", "type": "module", "description": "PlanForge CLI - Bring your own AI to Cursor", "keywords": ["cursor", "claude", "codex", "ai", "cli", "planning", "planforge"], diff --git a/packages/cli-py/pyproject.toml b/packages/cli-py/pyproject.toml index ec3541f..cdfc137 100644 --- a/packages/cli-py/pyproject.toml +++ b/packages/cli-py/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "planforge" -version = "0.1.0" +version = "0.1.5" description = "PlanForge CLI - Bring your own AI to Cursor" requires-python = ">=3.10" dependencies = [ diff --git a/packages/core/package.json b/packages/core/package.json index 639d21f..f44b315 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@planforge/core", - "version": "0.1.4", + "version": "0.1.5", "description": "PlanForge shared prompts", "license": "MIT", "files": ["prompts", "models.json"] diff --git a/packages/core/pyproject.toml b/packages/core/pyproject.toml index 63cf43b..0ec5cb7 100644 --- a/packages/core/pyproject.toml +++ b/packages/core/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "planforge-core" -version = "0.1.4" +version = "0.1.5" description = "PlanForge shared prompts" requires-python = ">=3.10"