ci(release): skip [Unreleased] changelog section for tag-based releases#39
Merged
Merged
Conversation
The release workflow matched the first '## [...]' heading in CHANGELOG.md, which tripped on the conventional keep-a-changelog [Unreleased] section and forced maintainers to choose between (a) deleting the Unreleased block before every tag push, or (b) keeping collected unreleased notes only after all tags shipped, neither of which matches how keep-a-changelog is meant to work. Skip the Unreleased heading explicitly in both validation and the release-notes extraction step so the first actual version heading (e.g. '## [2.9.1] - 2026-04-27') drives both the tag/version check and the release body.
airmang
added a commit
to airmang/hwpx-mcp-server
that referenced
this pull request
Apr 27, 2026
…g fix (#65) * refactor(compat): drop id-generator shim now superseded by python-hwpx 2.9.1 python-hwpx 2.9.1 masks _paragraph_id / _object_id / _memo_id with 0x7FFFFFFF upstream (airmang/python-hwpx#34). The local compat shim introduced in #64 is therefore redundant for anyone on 2.9.1+, which is what pyproject.toml now requires. Remove: - _patch_upstream_id_generators_to_signed_int32 in compat.py - tests/test_compat_id_sanitizer.py (covered upstream by tests/test_id_generator_range.py and test_skeleton_template_ids.py) Keep _patch_sub_element_for_lxml_parent. Upstream 2.9.1 only fixed the cell-text and run-style paths (airmang/python-hwpx#30); the other 26 stdlib ET.SubElement call sites in hwpx/oxml/document.py can still trip the lxml dispatch mismatch until a follow-up upstream PR closes them out. Thanks to @seonghoony for the original shim (#64). * chore(release): bump to 2.2.6, require python-hwpx>=2.9.1, drop legacy classifier - Bump version to 2.2.6. - Require python-hwpx >= 2.9.1 so the interop fixes merged upstream (ET.SubElement dispatch #30, id-range #34/#35) are always present. - Drop the legacy 'License :: OSI Approved :: Apache Software License' classifier that collided with the PEP 639 'license' expression under setuptools>=77 (same source-install breakage that python-hwpx 2.9.1 fixed). - Record the above plus the compat shim removal in CHANGELOG [2.2.6]. * ci(release): skip [Unreleased] section when resolving changelog version Mirror airmang/python-hwpx#39. The release workflow matched the first '## [...]' heading in CHANGELOG.md, so maintainers had to empty the conventional keep-a-changelog [Unreleased] block before every tag push. Skip the Unreleased heading explicitly in both validation and the release-notes extraction step so the first actual version heading (e.g. '## [2.2.6] - 2026-04-27') drives both the tag/version check and the release body.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
문제
릴리즈 워크플로가 CHANGELOG.md의 첫
## [...]헤더를 버전 섹션으로 해석합니다. 관용적인 keep-a-changelog 구조에서는[Unreleased]가 항상 맨 위에 있어, 태그를 밀면 validator가CHANGELOG_VERSION=Unreleased로 읽고 tag/version 일치 검증에서 실패합니다. 실제로 v2.9.1 태그 푸시를 준비하는 과정에서 부딪혔습니다.수정
두 곳 모두
[Unreleased]헤더를 명시적으로 건너뛰도록 정리했습니다.Validate tag/version consistency스텝의 CHANGELOG 파서Extract latest changelog section for release notes스텝로컬 검증
기대 효과
[Unreleased]블록을 비우지 않아도 릴리즈가 통과합니다.후속
머지 직후 v2.9.1 태그를 푸시해 실제 릴리즈 파이프라인이 새 로직으로 돌아가는지 확인합니다.