-
Notifications
You must be signed in to change notification settings - Fork 0
🔄 Sync CHANGELOG Validation from API Repo #39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
SPDX-FileCopyrightText: 2025 SecPal SPDX-License-Identifier: MIT Syncs CHANGELOG validation logic from api repo (PR #77) to contracts. Changes: - Validates [Unreleased] section exists on feature/fix/refactor branches - Checks for minimum content (MIN_CHANGELOG_LINES=3) - Exempts docs/*, chore/*, ci/*, test/* branches - Robust parsing handles [Unreleased] as last section (edge case fix) - Uses configurable variables for maintainability Context: Multi-repo script synchronization initiative. Ensures consistent CHANGELOG policy enforcement across all SecPal repos. Benefits: - ✅ Prevents "forgot to update CHANGELOG" PR comments - ✅ Catches empty [Unreleased] sections (copy-paste artifacts) - ✅ Smart exemptions for docs-only branches - ✅ Early feedback (local preflight vs CI failure) Related: - api #77: Original CHANGELOG validation implementation - frontend #55: Parallel sync to frontend repo - .github #168: Template documentation
💡 Tip: Consider Using Draft PRsBenefits of opening PRs as drafts initially:
How to convert:
This is just a friendly reminder - feel free to continue as is! 😊 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This pull request adds CHANGELOG.md validation to the preflight script to ensure developers document their changes before pushing code. The validation checks for the presence and content of the [Unreleased] section in non-exempt branches.
Key changes:
- Adds automatic validation that CHANGELOG.md contains an [Unreleased] section with meaningful content
- Exempts documentation-only branches (docs/, chore/, ci/, test/) from CHANGELOG requirements
- Provides helpful error messages when validation fails
…s, MIN_CHANGELOG_LINES) - Replace bash-specific [[ =~ ]] with POSIX case statement for portability - Use grep -nE for robust [Unreleased] matching (supports Keep a Changelog links) - Extract duplicated grep chains to filter_changelog_content() with whitespace tolerance - Clarify MIN_CHANGELOG_LINES comment about what is counted (substantive content only) Addresses all 4 Copilot review comments on PR #39
💡 Tip: Consider Using Draft PRsBenefits of opening PRs as drafts initially:
How to convert:
This is just a friendly reminder - feel free to continue as is! 😊 |
* feat: add CHANGELOG validation to preflight script SPDX-FileCopyrightText: 2025 SecPal SPDX-License-Identifier: MIT Syncs CHANGELOG validation logic from api repo (PR #77) to contracts. Changes: - Validates [Unreleased] section exists on feature/fix/refactor branches - Checks for minimum content (MIN_CHANGELOG_LINES=3) - Exempts docs/*, chore/*, ci/*, test/* branches - Robust parsing handles [Unreleased] as last section (edge case fix) - Uses configurable variables for maintainability Context: Multi-repo script synchronization initiative. Ensures consistent CHANGELOG policy enforcement across all SecPal repos. Benefits: - ✅ Prevents "forgot to update CHANGELOG" PR comments - ✅ Catches empty [Unreleased] sections (copy-paste artifacts) - ✅ Smart exemptions for docs-only branches - ✅ Early feedback (local preflight vs CI failure) Related: - api #77: Original CHANGELOG validation implementation - frontend #55: Parallel sync to frontend repo - .github #168: Template documentation * fix: address Copilot feedback (case statement, grep -nE, HTML patterns, MIN_CHANGELOG_LINES) - Replace bash-specific [[ =~ ]] with POSIX case statement for portability - Use grep -nE for robust [Unreleased] matching (supports Keep a Changelog links) - Extract duplicated grep chains to filter_changelog_content() with whitespace tolerance - Clarify MIN_CHANGELOG_LINES comment about what is counted (substantive content only) Addresses all 4 Copilot review comments on PR #39 * fix: improve pre-push error message for PR size violations Same fix as SecPal/api#81 - enhanced error message clarity with: - Visual separators for attention - Exact breakdown (insertions + deletions) - Numbered options for bypass - Clear "Push aborted" message See SecPal/api#80 for problem description * fix: remove --no-verify suggestion per Copilot review * refactor: optimize CHANGELOG validation per Copilot review - Combine multiple grep -Ev calls into single grep with pattern group - Use grep -m 1 for early termination (performance improvement) - Fix sed range calculation (UNRELEASED_END is relative, not absolute) - Add clarifying comments about CHANGELOG_EXEMPT_PREFIXES and case sync - Improve warning message with specific line count and non-blocking note Addresses Copilot review comments in PR #40
🔄 Sync: CHANGELOG Validation from API Repo
Context: Multi-repo script synchronization initiative. Brings CHANGELOG validation improvements from api #77 to contracts.
🎯 Problem Solved
Before: Contracts had no automated CHANGELOG validation
After: Automated validation matches api repo behavior
📝 Changes
File:
scripts/preflight.shAdded Section (after Node.js/npm checks, before PR size check):
Key Features:
CHANGELOG_EXEMPT_PREFIXES,MIN_CHANGELOG_LINES)✅ Benefits
Consistency:
Developer Experience:
Maintainability:
🔗 Related
Original Implementation:
Copilot Feedback Integration:
Multi-Repo Sync:
🧪 Testing
Syntax validation:
Expected behavior:
OpenAPI-specific note: Since contracts repo primarily contains OpenAPI specifications (not source code), most changes will still benefit from CHANGELOG documentation for API version tracking and client notifications.
Review Focus: Verify CHANGELOG validation logic matches api repo exactly. Confirm error messages are contracts-appropriate.