- Created
generate-changeset.js
for generating changeset files from PR metadata - Created
generate-release-notes.js
for formatting release notes from changesets - Created
analyze-changesets.js
for determining version bump type based on changesets - Created
bump-version.js
for updating version numbers in plugin files - Created
update-changelog.js
for updating CHANGELOG.md with new entries - Created
update-readme.js
for updating readme.txt with new entries - Created
update-changelogs.js
for updating both changelog files at once - Created
update-upgrade-notice.js
for updating the upgrade notice section in readme.txt - Created
build.js
for building the plugin for release - Created utility modules in the
utils
directory:env.js
for consistent environment variable handling across all scripts
- generate-changeset.yml: Automatically generates a changeset file when a PR is merged to develop.
- release-management.yml: Handles version bumping, changelog updates, and release creation when changes are merged to main.
- Now includes improved sync between main and develop branches after releases
- Uses a non-fast-forward merge strategy with a descriptive commit message
- Includes [skip ci] in the commit message to prevent triggering additional workflows
- Ensures version bumps and changelog updates are reflected in both branches
- Uses temporary directory for release notes to avoid Git tracking issues
- Implements robust error handling for external service interactions
- Detects and reports GitHub API rate limiting issues
- Provides fallback mechanisms when primary methods fail
- Ensures proper cleanup of temporary resources in all scenarios
- Now includes improved sync between main and develop branches after releases
- Updated
deploy.yml
for handling deployments:- Deploy to WordPress.org SVN
- Create GitHub release with assets
- Add release notes to GitHub release
- Updated README.md with comprehensive overview of the project
- Created detailed workflow documentation:
- Changeset generation process with temporary file handling
- Release management workflow
- Deployment process
- Added examples and usage instructions for all scripts
- Documented breaking change detection and handling
- Added information about the new
generate-release-notes.js
script and how to use it locally
- Implemented local testing for all scripts
- Created test fixtures for changesets
- Added validation for script inputs
- Ensured scripts can be run both in CI and locally
- Testability: All automation logic is in Node.js scripts that can be tested locally
- Reusability: Scripts can be used both in CI/CD and by developers locally
- Maintainability: Logic is centralized in scripts rather than duplicated in workflow files
- Flexibility: Workflows can be customized without changing the core logic
- Consistency: Ensures standardized processes for versioning and releases
- Efficiency: Combined operations reduce duplication and potential for inconsistencies
- Cleanliness: Use of temporary files keeps the repository clean
- Test scripts with various scenarios to ensure robustness
- Refine based on team feedback
- Migrate to production repositories
- Extend with additional automation scripts
- Improve documentation with examples
- Environment Variables Support: Added support for environment variables (
REPO_URL
andGITHUB_TOKEN
) to simplify configuration and usage of the release notes script. - Contributor Recognition: Enhanced release notes to include a contributors section with special recognition for first-time contributors.
- GitHub Workflow Improvements: Updated the GitHub workflow to use environment variables instead of command-line arguments, making it cleaner and more maintainable.
- Temporary File Handling: Improved the workflow to use temporary files for release notes, keeping the repository clean.
- Changeset Cleanup: Changed from archiving changesets to deleting them after a release to prevent duplicate changelog entries.
- Release Notes Formatting: Removed unnecessary "Found X changesets" line from release notes.
- Upgrade Notice Enhancement: Automatically add breaking changes to the upgrade notice section in readme.txt.
- The
update-upgrade-notice.js
script checks for breaking changes in the release notes - If breaking changes are found, they are added to the upgrade notice section in readme.txt
- This ensures users are properly warned about potential compatibility issues
- The
- Documentation Updates: Comprehensive documentation updates to reflect new features and options.