Fix off-by-one pump speed encoding and expose pump configuration #2
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Build and publish pycaldera to PyPI on tag push. | |
| # | |
| # Triggered when a tag matching v* is pushed (e.g. v0.1.1, v1.0.0). The | |
| # workflow runs the test suite, builds an sdist + wheel, and publishes the | |
| # artifacts to PyPI using trusted publishing (OpenID Connect) — no API | |
| # tokens are stored in the repository. | |
| # | |
| # To enable this workflow on the PyPI side, add a "trusted publisher" for | |
| # the pycaldera project at https://pypi.org/manage/project/pycaldera/settings/publishing/ | |
| # with: | |
| # Owner: mwatson2 | |
| # Repository: pycaldera | |
| # Workflow name: release.yaml | |
| # Environment: pypi | |
| # | |
| # Once configured, releasing is: | |
| # 1. Bump version in pycaldera/__meta__.py | |
| # 2. Update CHANGELOG.rst | |
| # 3. Commit, then `git tag v0.1.1 && git push --tags` | |
| name: release | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| jobs: | |
| test: | |
| name: Test on Python ${{ matrix.python-version }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.8", "3.12"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: pip | |
| - name: Install package and test extras | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install --editable .[test] | |
| - name: Run pytest | |
| run: python -m pytest tests/ | |
| build: | |
| name: Build distribution | |
| needs: test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Verify tag matches package version | |
| run: | | |
| # Read the version straight out of __meta__.py without importing | |
| # the package (avoids needing runtime deps installed here). | |
| PKG_VERSION=$(python -c "ns={}; exec(open('pycaldera/__meta__.py').read(), ns); print(ns['version'])") | |
| TAG_VERSION="${GITHUB_REF_NAME#v}" | |
| echo "Package version: $PKG_VERSION" | |
| echo "Tag version: $TAG_VERSION" | |
| if [ "$PKG_VERSION" != "$TAG_VERSION" ]; then | |
| echo "::error::Tag $GITHUB_REF_NAME does not match package version $PKG_VERSION" | |
| exit 1 | |
| fi | |
| - name: Install build tooling | |
| run: python -m pip install --upgrade build twine | |
| - name: Build sdist and wheel | |
| run: python -m build | |
| - name: Verify metadata | |
| run: python -m twine check dist/* | |
| - name: Upload distribution artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: dist | |
| path: dist/ | |
| publish: | |
| name: Publish to PyPI | |
| needs: build | |
| runs-on: ubuntu-latest | |
| environment: | |
| name: pypi | |
| url: https://pypi.org/p/pycaldera | |
| permissions: | |
| # Required for trusted publishing — exchanged for a short-lived | |
| # PyPI upload token via OIDC. No password / API token needed. | |
| id-token: write | |
| steps: | |
| - name: Download distribution artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: dist | |
| path: dist/ | |
| - name: Publish to PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 |