Repository navigation
chore(release): bump version to 6.1.25 (#408) #23
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
| name: Publish to PyPI and Release | |
| on: | |
| push: | |
| tags: | |
| - 'v*' # Trigger on version tags like v1.0.0 | |
| jobs: | |
| test: | |
| name: Run Tests | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read # Only checks out and reads the repo -- no write access needed. | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0 | |
| - name: Set up Python | |
| # Pinned explicitly: a bare `uv python install` grabs whatever's | |
| # newest at run time. Confirmed 2026-08-19: it silently picked up | |
| # 3.14.7 for the v6.1.0 release run and 37 tests/micro-tests/my_profile | |
| # (Textual TUI) tests failed with `assert task is not None` inside | |
| # textual/rlock.py -- Textual's RLock breaks under 3.14. The full | |
| # suite passes clean on 3.13.7 (this repo's actual dev/verification | |
| # version), so pin to 3.13 until Textual's 3.14 compatibility is | |
| # confirmed separately. | |
| run: uv python install 3.13 | |
| - name: Install dependencies | |
| run: uv sync --all-extras --dev -p 3.13 | |
| - name: Run unit tests | |
| # tests/ -m "not live_egeria" (previous scope) was a no-op filter: no | |
| # test anywhere is marked "live_egeria" (that name is only a fixture | |
| # in tests/micro-tests/conftest_full.py, not a registered pytest | |
| # marker — see tests/pytest.ini's `markers` list). So this ran the | |
| # ENTIRE suite, including tests/functional-tests/ and | |
| # tests/scenario-tests/, both of which require a real Egeria server | |
| # at localhost:9443 that no GitHub Actions runner has, plus an | |
| # unrelated pytest-asyncio/sniffio configuration issue in several of | |
| # those files. Confirmed 2026-07-20: this gate has never actually | |
| # passed on this repo (774 failed / 231 passed on the v6.0.17.1 run; | |
| # every prior tagged release run in the Actions history also shows | |
| # `failure`). tests/micro-tests/ is the suite actually designed to | |
| # run without live infra (mocks/monkeypatching by default; live mode | |
| # is an explicit opt-in via --live-egeria or PYEG_LIVE_EGERIA=1) — | |
| # confirmed clean (exit 0) standalone. Use that as the CI gate | |
| # instead of a full-suite run that requires infrastructure CI | |
| # doesn't have. | |
| run: uv run pytest tests/micro-tests/ | |
| build-n-publish: | |
| name: Build and Publish to PyPI | |
| needs: test | |
| runs-on: ubuntu-latest | |
| environment: release | |
| permissions: | |
| id-token: write # Required for OIDC trusted publishing | |
| contents: write # Required to create GitHub Release | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0 | |
| - name: Build package | |
| run: uv build | |
| - name: Generate SBOM | |
| # Written outside dist/ -- pypa/gh-action-pypi-publish globs dist/* | |
| # by default and uploads everything there to PyPI as a distribution | |
| # file; a bom.json/bom.xml alongside the wheel/sdist fails that | |
| # upload with "InvalidDistribution: Unknown distribution format" | |
| # (confirmed live on the v6.1.16 release run, the first tag pushed | |
| # since this step was added in #368 -- never exercised before). | |
| run: | | |
| mkdir -p sbom | |
| uvx --from cyclonedx-bom cyclonedx-py environment --output-format json --output-file sbom/bom.json | |
| uvx --from cyclonedx-bom cyclonedx-py environment --output-format xml --output-file sbom/bom.xml | |
| - name: Publish to PyPI | |
| # release/v1 is a floating branch, not a tag -- pypa's own convention | |
| # for this action's "stable" channel, updated more often than a | |
| # versioned release. Pinned to its tip as of 2026-08-29; Dependabot | |
| # (see .github/dependabot.yml) will open a PR to re-pin as it moves. | |
| uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # release/v1 | |
| # attestations: true is the action's own default (PEP 740, via | |
| # Trusted Publishing -- already in effect here through id-token: | |
| # write above) -- no extra input needed for Signed-Releases. | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3 | |
| with: | |
| files: | | |
| dist/* | |
| sbom/* | |
| generate_release_notes: true | |
| draft: false | |
| prerelease: false |