Files
ar9av__obsidian-wiki/.github/workflows/publish.yml
ar9av ab9cd84f63 ci: create GitHub Release on version tag push
Adds contents:write permission and a gh release create step to the
publish job so that each v* tag push produces a GitHub Release with
the built wheel and sdist attached, alongside the existing PyPI publish.
2026-06-08 21:03:58 +05:30

75 lines
2.3 KiB
YAML

name: publish
# Build and publish obsidian-wiki to PyPI when a version tag is pushed.
#
# Setup (one-time): on PyPI, add a Trusted Publisher for this repo with
# workflow `publish.yml` and environment `pypi`. No API token needed — the
# `id-token: write` permission below mints a short-lived OIDC credential.
#
# Release: bump `version` in pyproject.toml, commit, then
# git tag v0.1.0 && git push origin v0.1.0
on:
push:
tags:
- "v*"
# Allow a manual build (artifacts only, no publish) for verification.
workflow_dispatch:
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Build sdist and wheel
run: |
python -m pip install --upgrade build
python -m build
- name: Verify wheel bundles the skills
run: |
python -m pip install --upgrade twine
twine check dist/*
wheel=$(ls dist/*.whl)
echo "Inspecting $wheel"
if ! python -m zipfile -l "$wheel" | grep -q "obsidian_wiki/_data/skills/wiki-setup/SKILL.md"; then
echo "::error::wheel is missing bundled skills under obsidian_wiki/_data/skills/"
exit 1
fi
- uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
publish:
needs: build
runs-on: ubuntu-latest
# Only publish on a real tag push, not workflow_dispatch.
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
environment: pypi
permissions:
id-token: write # required for PyPI Trusted Publishing (OIDC)
contents: write # required for creating GitHub Releases
steps:
- uses: actions/download-artifact@v4
with:
name: dist
path: dist/
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
skip-existing: true
- name: Create GitHub Release
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release create "${{ github.ref_name }}" dist/* \
--repo "${{ github.repository }}" \
--title "${{ github.ref_name }}" \
--generate-notes