Skip to content

Latest commit

 

History

History
72 lines (53 loc) · 2.41 KB

File metadata and controls

72 lines (53 loc) · 2.41 KB

Release Process

PyPI Trusted Publishing Setup

To enable automatic publishing to PyPI, you need to configure trusted publishing on PyPI:

  1. Go to https://pypi.org/manage/project/pytest-language-server/settings/publishing/
  2. Click "Add a new publisher"
  3. Configure the following:
    • PyPI Project Name: pytest-language-server
    • Owner: bellini666
    • Repository name: pytest-language-server
    • Workflow name: release.yml
    • Environment name: (leave empty)

This allows the GitHub Actions workflow to publish to PyPI without requiring an API token.

Creating a Release

  1. Ensure all changes are committed and pushed to master
  2. Run tests locally: cargo test
  3. Create and push a version tag:
    git tag v0.X.Y
    git push origin v0.X.Y
  4. The GitHub Actions workflow will automatically:
    • Build wheels for all platforms (Linux, macOS, Windows)
    • Build for multiple Python versions (3.10-3.14, 3.14t, PyPy)
    • Generate artifact attestations for supply chain security
    • Create a GitHub release with all wheels
    • Publish to PyPI
    • Publish to crates.io (requires CARGO_REGISTRY_TOKEN secret)

Crates.io Publishing

The workflow also publishes to crates.io. Ensure the CARGO_REGISTRY_TOKEN secret is set:

  1. Generate a token at https://crates.io/me/tokens
  2. Add it to GitHub repository secrets as CARGO_REGISTRY_TOKEN

Homebrew Formula

After a release, update the Homebrew formula SHA256 hashes:

  1. Download the wheels from the GitHub release
  2. Calculate SHA256 for each platform:
    shasum -a 256 pytest_language_server-X.Y.Z-*.whl
  3. Update Formula/pytest-language-server.rb with the actual hashes
  4. Commit and push the updated formula

Troubleshooting

PyPI Upload Fails

  • Verify trusted publishing is configured correctly on PyPI
  • Check that the workflow has id-token: write permission
  • Ensure package version doesn't already exist on PyPI

GitHub Release Upload Issues

  • The workflow uses softprops/action-gh-release which may show "Not Found" errors when trying to delete non-existent assets
  • These errors are usually harmless if the upload succeeds afterward
  • The workflow now flattens the directory structure to avoid glob pattern issues

Wheels Missing

  • Check that all build jobs completed successfully
  • Verify artifact upload/download worked correctly
  • Look for build errors in the CI logs for specific platforms