From f90d28abd3704e0372d32d1600d41daa6a4ca97b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Apr 2026 10:07:29 +0000 Subject: [PATCH 1/2] Initial plan From be77e76ccdb10a7fb545f1c57c4dfad1257db912 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Apr 2026 10:10:40 +0000 Subject: [PATCH 2/2] fix: add deploy job to create-release.yml to publish to PyPI after release creation Agent-Logs-Url: https://github.com/LFPy/LFPykit/sessions/d9b292e6-eb74-46de-87fb-6c74e97b3ddd Co-authored-by: espenhgn <2492641+espenhgn@users.noreply.github.com> --- .github/workflows/create-release.yml | 47 ++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 9cae670..ea65b1c 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -2,8 +2,9 @@ # changes the version in lfpykit/version.py (e.g., when a PR is merged). # The release tag follows the convention v{version} (e.g., v0.6.0) and the # release name follows the convention LFPykit-{version}. -# Once a release is created, the Upload Python Package workflow is triggered -# automatically to publish the new version to PyPI. +# After a new release is created, the deploy job publishes the package to PyPI. +# Note: releases created via GITHUB_TOKEN do not trigger the separate +# python-publish.yml workflow, so the publish steps are included here directly. name: Create GitHub Release @@ -18,6 +19,9 @@ jobs: permissions: contents: write + outputs: + released: ${{ steps.set_released.outputs.released }} + steps: - uses: actions/checkout@v4 with: @@ -46,3 +50,42 @@ jobs: gh release create "v${{ steps.get_version.outputs.version }}" \ --title "LFPykit-${{ steps.get_version.outputs.version }}" \ --generate-notes + + - name: Set released output + id: set_released + run: | + echo "released=${{ steps.check_tag.outputs.exists == 'false' }}" >> $GITHUB_OUTPUT + + deploy: + + needs: release + if: needs.release.outputs.released == 'true' + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install poetry twine + - name: Build package + run: | + poetry build + - name: Build and publish to Test PyPI + env: + TWINE_USERNAME: ${{ secrets.TEST_PYPI_USERNAME }} + TWINE_PASSWORD: ${{ secrets.TEST_PYPI_PASSWORD }} + run: | + twine upload --repository-url https://test.pypi.org/legacy/ dist/* --verbose + - name: Publish to PyPI + env: + TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: | + twine upload dist/* --verbose