mirror of
https://github.com/dtzp555-max/ocp.git
synced 2026-07-21 21:15:09 +00:00
Implements cc-rules v1.4's 第五律 5.5 project overlay requirement. - CLAUDE.md: declare release_kit: YAML block (version_source, changelog, release_channel, docs_source, resource_lists, new_feature_doc_expectations, bootstrap_quirk_policy) - .github/PULL_REQUEST_TEMPLATE.md: add 5.3 user-visible-change self-check section with reviewer gate instruction - .github/workflows/release.yml (NEW): auto-create GitHub Release from CHANGELOG.md section on v* tag push. Idempotent (checks if release already exists). Closes the gap that caused v3.9.0 / v3.10.0 / v3.11.0 to each miss their GH Release. Governance-only change. No code, no user-visible behavior change (the workflow only fires on future tags). No README update needed. Co-authored-by: Tao Deng <dtzp555@gmail.com> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
54 lines
1.8 KiB
YAML
54 lines
1.8 KiB
YAML
name: Auto Release on Tag
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
release:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Extract version from tag
|
|
id: ver
|
|
run: echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
|
|
- name: Extract CHANGELOG section
|
|
id: notes
|
|
run: |
|
|
VERSION="${{ steps.ver.outputs.version }}"
|
|
# Extract section for this version from CHANGELOG.md
|
|
# Pattern: "## v${VERSION}" through the next "## " or EOF
|
|
if [ ! -f CHANGELOG.md ]; then
|
|
echo "No CHANGELOG.md found; using minimal release notes"
|
|
echo "notes=Release v${VERSION}" >> $GITHUB_OUTPUT
|
|
exit 0
|
|
fi
|
|
awk -v ver="v${VERSION}" '
|
|
$0 ~ "^## " ver { found=1; print; next }
|
|
found && /^## v/ { exit }
|
|
found { print }
|
|
' CHANGELOG.md > /tmp/release-notes.md
|
|
if [ ! -s /tmp/release-notes.md ]; then
|
|
echo "No matching section in CHANGELOG for v${VERSION}; using minimal notes"
|
|
echo "Release v${VERSION}" > /tmp/release-notes.md
|
|
fi
|
|
echo "notes_file=/tmp/release-notes.md" >> $GITHUB_OUTPUT
|
|
- name: Create GitHub Release
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
if gh release view "v${{ steps.ver.outputs.version }}" >/dev/null 2>&1; then
|
|
echo "Release v${{ steps.ver.outputs.version }} already exists — skipping"
|
|
exit 0
|
|
fi
|
|
gh release create "v${{ steps.ver.outputs.version }}" \
|
|
--title "v${{ steps.ver.outputs.version }}" \
|
|
--notes-file /tmp/release-notes.md \
|
|
--latest
|