mirror of
https://github.com/Ar9av/obsidian-wiki.git
synced 2026-09-14 20:36:34 +08:00
ab9cd84f63
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.
75 lines
2.3 KiB
YAML
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
|