181 lines
4.9 KiB
Markdown
181 lines
4.9 KiB
Markdown
# Release Process
|
|
|
|
This document outlines the process for creating and publishing new releases of the plugin.
|
|
|
|
## Version Numbering
|
|
|
|
This plugin follows [Semantic Versioning](https://semver.org/) (SemVer):
|
|
|
|
- **MAJOR version** (x.0.0): Incompatible API changes
|
|
- **MINOR version** (0.x.0): Add functionality in a backward-compatible manner
|
|
- **PATCH version** (0.0.x): Backward-compatible bug fixes
|
|
|
|
## Pre-Release Checklist
|
|
|
|
Before creating a new release, complete the following checklist:
|
|
|
|
1. **Code Review**: Ensure all code has been reviewed and approved
|
|
2. **Testing**: Verify that all tests pass
|
|
- Unit tests
|
|
- End-to-end tests
|
|
- Manual testing in different environments
|
|
3. **Documentation**: Update all relevant documentation
|
|
- README.md
|
|
- readme.txt
|
|
- Wiki pages
|
|
- Code comments
|
|
4. **Changelog**: Update CHANGELOG.md with all changes since the last release
|
|
5. **Version Numbers**: Update version numbers in:
|
|
- Main plugin file header
|
|
- Plugin initialization
|
|
- readme.txt
|
|
- package.json (if applicable)
|
|
- composer.json (if applicable)
|
|
|
|
## Creating a Release
|
|
|
|
### Manual Release Process
|
|
|
|
1. **Create a Release Branch**:
|
|
```bash
|
|
git checkout -b release/x.y.z
|
|
```
|
|
|
|
2. **Update Version Numbers**:
|
|
- Update the version number in the main plugin file header
|
|
- Update the version number in the plugin initialization
|
|
- Update the "Stable tag" in readme.txt
|
|
- Update the version in package.json and composer.json (if applicable)
|
|
|
|
3. **Update Changelog**:
|
|
- Add a new section to CHANGELOG.md for the new version
|
|
- Add a new section to the Changelog in readme.txt
|
|
- Add a new section to the Upgrade Notice in readme.txt
|
|
|
|
4. **Commit Changes**:
|
|
```bash
|
|
git add .
|
|
git commit -m "Bump version to x.y.z"
|
|
```
|
|
|
|
5. **Create a Pull Request**:
|
|
- Push the release branch to GitHub
|
|
- Create a pull request against the main branch
|
|
- Have the pull request reviewed and approved
|
|
|
|
6. **Merge the Pull Request**:
|
|
- Merge the pull request into the main branch
|
|
|
|
7. **Create a Release Tag**:
|
|
```bash
|
|
git checkout main
|
|
git pull
|
|
git tag -a vx.y.z -m "Version x.y.z"
|
|
git push origin vx.y.z
|
|
```
|
|
|
|
8. **Create a GitHub Release**:
|
|
- Go to the GitHub repository
|
|
- Click on "Releases"
|
|
- Click "Draft a new release"
|
|
- Select the tag you just created
|
|
- Add a title and description
|
|
- Upload the built plugin ZIP file
|
|
- Publish the release
|
|
|
|
### Automated Release Process
|
|
|
|
This plugin uses GitHub Actions to automate the release process:
|
|
|
|
1. **Create a Release Branch**:
|
|
```bash
|
|
git checkout -b release/x.y.z
|
|
```
|
|
|
|
2. **Update Version Numbers and Changelog** (as described above)
|
|
|
|
3. **Commit Changes**:
|
|
```bash
|
|
git add .
|
|
git commit -m "Bump version to x.y.z"
|
|
```
|
|
|
|
4. **Create a Pull Request** (as described above)
|
|
|
|
5. **Merge the Pull Request** (as described above)
|
|
|
|
6. **Create a Release Tag**:
|
|
```bash
|
|
git checkout main
|
|
git pull
|
|
git tag -a vx.y.z -m "Version x.y.z"
|
|
git push origin vx.y.z
|
|
```
|
|
|
|
7. **Automated GitHub Release**:
|
|
- The GitHub Actions workflow will automatically:
|
|
- Build the plugin
|
|
- Create a GitHub release
|
|
- Upload the built plugin ZIP file
|
|
- Update the wiki (if configured)
|
|
|
|
## Post-Release Tasks
|
|
|
|
After creating a release, complete the following tasks:
|
|
|
|
1. **Verify the Release**:
|
|
- Check that the GitHub release was created successfully
|
|
- Download the ZIP file and verify its contents
|
|
- Test the plugin by installing it from the ZIP file
|
|
|
|
2. **Update Documentation**:
|
|
- Update any external documentation that references the plugin version
|
|
- Update the plugin's website (if applicable)
|
|
|
|
3. **Announce the Release**:
|
|
- Announce the release on relevant channels (blog, social media, etc.)
|
|
- Notify users who have reported issues that are fixed in this release
|
|
|
|
4. **Start Planning the Next Release**:
|
|
- Create issues for the next release
|
|
- Update the project roadmap
|
|
|
|
## Hotfix Process
|
|
|
|
For critical bugs that need to be fixed immediately:
|
|
|
|
1. **Create a Hotfix Branch**:
|
|
```bash
|
|
git checkout -b hotfix/x.y.z
|
|
```
|
|
|
|
2. **Fix the Bug**:
|
|
- Make the necessary changes to fix the bug
|
|
- Add tests to prevent regression
|
|
|
|
3. **Update Version Numbers and Changelog** (as described above)
|
|
|
|
4. **Commit Changes**:
|
|
```bash
|
|
git add .
|
|
git commit -m "Hotfix: description of the fix"
|
|
```
|
|
|
|
5. **Create a Pull Request** (as described above)
|
|
|
|
6. **Merge the Pull Request** (as described above)
|
|
|
|
7. **Create a Release Tag and GitHub Release** (as described above)
|
|
|
|
## Release Branches
|
|
|
|
This plugin uses the following branch strategy:
|
|
|
|
- **main**: The main development branch
|
|
- **release/x.y.z**: Temporary branches for preparing releases
|
|
- **hotfix/x.y.z**: Temporary branches for hotfixes
|
|
|
|
## Conclusion
|
|
|
|
Following this release process ensures that releases are consistent, well-documented, and properly tested. It also helps users understand what has changed between versions and how to upgrade safely.
|