name: Publish # Publica en PyPI cuando se publica un release de GitHub. # # No hay ningún token guardado: PyPI confía en este workflow por OIDC # (trusted publishing). Del lado de pypi.org hay que haber dado de alta un # "pending publisher" con exactamente estos cuatro datos: # # Owner ElvisClaros # Repository claude-logbook # Workflow publish.yml # Environment pypi # # Si alguno no coincide, PyPI rechaza el upload. on: release: types: [published] permissions: {} jobs: publish: runs-on: ubuntu-latest environment: name: pypi url: https://pypi.org/p/claude-logbook permissions: id-token: write # lo único que habilita el trusted publishing steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.13" # El número vive en claude_logbook/__init__.py y es fácil olvidarse de # subirlo. Mejor fallar acá que publicar algo mal rotulado: una versión # subida a PyPI no se puede reemplazar nunca, solo yankear. - name: El tag coincide con __version__ run: | tag="${GITHUB_REF_NAME#v}" ver="$(python -c 'import claude_logbook; print(claude_logbook.__version__)')" echo "tag=$tag __version__=$ver" test "$tag" = "$ver" - name: Build run: | python -m pip install --upgrade build python -m build - name: Los artefactos están sanos run: | python -m pip install --upgrade twine twine check dist/* - uses: pypa/gh-action-pypi-publish@release/v1