Skip to content

chore: bump version to 0.1.1 #2

chore: bump version to 0.1.1

chore: bump version to 0.1.1 #2

Workflow file for this run

name: Release
on:
push:
tags: ['v*']
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v4
with:
enable-cache: true
- uses: actions/setup-python@v5
with:
python-version: '3.13'
- run: uv sync
- run: uv run pytest -v
- run: uv run ruff check src/ tests/
- run: uv run python -m build
- uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
notify-monorepo:
runs-on: ubuntu-latest
needs: build
steps:
- name: Trigger integration tests in monorepo
run: |
gh api repos/devhelmhq/mono/dispatches \
-f event_type=surface_release \
-f "client_payload[repo]=${{ github.repository }}" \
-f "client_payload[tag]=${{ github.ref_name }}" \
-f "client_payload[sha]=${{ github.sha }}"
env:
GH_TOKEN: ${{ secrets.MONOREPO_DISPATCH_TOKEN }}
publish:
runs-on: ubuntu-latest
needs: [build, notify-monorepo]
environment: production
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v4
with:
enable-cache: true
- uses: actions/setup-python@v5
with:
python-version: '3.13'
- run: uv sync
- run: uv run python -m build
- name: Publish to PyPI
run: uv run twine upload dist/*
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
- name: Trigger publish verification in monorepo
run: |
gh api repos/devhelmhq/mono/dispatches \
-f event_type=surface_published \
-f "client_payload[repo]=${{ github.repository }}" \
-f "client_payload[tag]=${{ github.ref_name }}" \
-f "client_payload[sha]=${{ github.sha }}"
env:
GH_TOKEN: ${{ secrets.MONOREPO_DISPATCH_TOKEN }}
github-release:
runs-on: ubuntu-latest
needs: publish
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Create GitHub Release
run: |
gh release create "${{ github.ref_name }}" \
--title "${{ github.ref_name }}" \
--generate-notes
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
post-publish:
runs-on: ubuntu-latest
needs: [publish, github-release]
if: always() && needs.publish.result == 'success'
steps:
- name: Extract version info
id: version
run: |
TAG="${{ github.ref_name }}"
VERSION="${TAG#v}"
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION"
if [[ "$MINOR" != "0" || "$MAJOR" != "0" ]] && [[ "$PATCH" == "0" ]]; then
echo "is_minor_plus=true" >> "$GITHUB_OUTPUT"
else
echo "is_minor_plus=false" >> "$GITHUB_OUTPUT"
fi
- name: Create Linear release ticket
if: env.LINEAR_API_KEY != ''
run: |
curl -s -X POST https://api.linear.app/graphql \
-H "Content-Type: application/json" \
-H "Authorization: ${{ secrets.LINEAR_API_KEY }}" \
-d '{
"query": "mutation($input: IssueCreateInput!) { issueCreate(input: $input) { success issue { identifier url } } }",
"variables": {
"input": {
"teamId": "${{ vars.LINEAR_RELEASES_TEAM_ID }}",
"projectId": "${{ vars.LINEAR_RELEASES_PROJECT_ID }}",
"title": "Released: Python SDK v${{ steps.version.outputs.version }}",
"description": "**Release:** https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}\n**CI run:** https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}\n**Commit:** ${{ github.sha }}"
}
}
}'
env:
LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
- name: Create Linear changelog ticket (minor+ only)
if: steps.version.outputs.is_minor_plus == 'true' && env.LINEAR_API_KEY != ''
run: |
curl -s -X POST https://api.linear.app/graphql \
-H "Content-Type: application/json" \
-H "Authorization: ${{ secrets.LINEAR_API_KEY }}" \
-d '{
"query": "mutation($input: IssueCreateInput!) { issueCreate(input: $input) { success issue { identifier url } } }",
"variables": {
"input": {
"teamId": "${{ vars.LINEAR_CONTENT_TEAM_ID }}",
"title": "Changelog entry: Python SDK v${{ steps.version.outputs.version }}",
"description": "Write changelog entry for https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}"
}
}
}'
env:
LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}