Skip to content

Release glasskit.ai v0.1.1 #2

Release glasskit.ai v0.1.1

Release glasskit.ai v0.1.1 #2

Workflow file for this run

name: Release
env:
UV_PYTHON: "3.12"
on:
push:
tags:
- "pypi-glasskit-ai-v*"
concurrency:
group: release-${{ github.ref }}
cancel-in-progress: false
jobs:
release:
name: Test, build, publish
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/glasskit.ai
permissions:
contents: write
id-token: write
defaults:
run:
working-directory: cli
steps:
- name: Checkout
uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Install uv
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with:
enable-cache: true
cache-dependency-glob: uv.lock
working-directory: cli
- name: Install Python
run: uv python install 3.12
- name: Sync dependencies
run: uv sync --locked --dev
- name: Verify Python runtime
run: uv run python -c "import sys; assert sys.version_info[:2] == (3, 12), sys.version"
- name: Verify tag matches package version
shell: bash
run: |
PACKAGE_VERSION="$(uv version --short)"
TAG_VERSION="${GITHUB_REF_NAME#pypi-glasskit-ai-v}"
if [[ "${PACKAGE_VERSION}" != "${TAG_VERSION}" ]]; then
echo "::error::pyproject.toml version ${PACKAGE_VERSION} does not match tag ${TAG_VERSION}"
exit 1
fi
- name: Type check
run: uv run ty check
- name: Run tests
run: uv run pytest
- name: Lint
run: uv run ruff check
- name: Check formatting
run: uv run ruff format --check
- name: Smoke test CLI help
run: |
uv run glasskit --help
uv run glasskit eval --help
- name: Build distributions
run: uv build --no-sources --clear
- name: Smoke test wheel
run: uv run --isolated --no-project --with dist/*.whl glasskit --help
- name: Smoke test source distribution
run: uv run --isolated --no-project --with dist/*.tar.gz glasskit --help
- name: Publish to PyPI
run: uv publish --trusted-publishing always
- name: Create GitHub Release
env:
GH_TOKEN: ${{ github.token }}
RELEASE_TAG_PREFIX: pypi-glasskit-ai-v
run: |
VERSION="${GITHUB_REF_NAME#${RELEASE_TAG_PREFIX}}"
PREVIOUS_TAG="$(
git tag --list "${RELEASE_TAG_PREFIX}*" --sort=-v:refname \
| grep -Fxv "${GITHUB_REF_NAME}" \
| head -n 1 \
|| true
)"
{
echo "PyPI package: glasskit.ai"
echo "Version: ${VERSION}"
if [[ -n "${PREVIOUS_TAG}" ]]; then
echo
echo "CLI changes since ${PREVIOUS_TAG}:"
git log --format='- %s (%h)' "${PREVIOUS_TAG}..${GITHUB_REF_NAME}" -- cli > /tmp/cli-release-changes.txt
if [[ -s /tmp/cli-release-changes.txt ]]; then
cat /tmp/cli-release-changes.txt
else
echo "- No changes under cli/."
fi
else
echo
echo "Initial PyPI release for glasskit.ai."
fi
} > release-notes.md
gh release create "${GITHUB_REF_NAME}" dist/* \
--repo "${GITHUB_REPOSITORY}" \
--verify-tag \
--title "PyPI: glasskit.ai v${VERSION}" \
--notes-file release-notes.md