Skip to content

chore(release): bump version to 6.1.25 (#408) #23

chore(release): bump version to 6.1.25 (#408)

chore(release): bump version to 6.1.25 (#408) #23

Workflow file for this run

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