diff --git a/Release-Process.md b/Release-Process.md index 5843627..7ba1531 100644 --- a/Release-Process.md +++ b/Release-Process.md @@ -1,28 +1,26 @@ ## Introduction -Doing a Dolphin Release does require some steps, but if you know what to do it's fairly straightforward. +Creating a Dolphin Release does require some steps, but if you know what to do it's fairly straightforward. -Releases are supposed to be tagged on the "stable" branch. Whenever a major release is about to be released, the "master" branch needs to be merged into "stable". For hotfix releases, the important commits should be cherry-picked manually from master. +Releases are versioned as follows: `YYMM`, where `YY` is the current year, and `MM` is the current month. If creating a hotfix release, a letter is appended to the end of the version number. For example, `2407a` would be the first hotfix for a release made in July 2024. + +Releases can only be created by [core developers](https://github.com/orgs/dolphin-emu/teams/core-developers). ## Details -1. Merge master into the 'stable' branch such that after merge "stable == master". All following steps refer to that branch. -2. Switch the Dolphin i18n Bot to the 'stable' branch to make sure the stable release is being translated. -3. Push regression fixes to the 'stable' branch, these will be merged into master at the end, but may be merged to master during this process. -4. Update `PRODUCT_VERSION` in `Installer/Installer.nsi`. And update the `DOLPHIN_VERSION_MAJOR` and `DOLPHIN_VERSION_MINOR` lines in `CMakeLists.txt`. -5. Create an **annotated** tag named after the version number. -6. Perform a **clean** Windows build of the "Release x64" configuration. -7. Install NSIS if you haven't already; Create the Windows installers via the `Installer_win32.nsi` and `Installer_x64.nsi` files respectively (stored inside the `Installer` subdirectory). -8. XX I'm using this to compile for macOS, but it needs to be updated as post-4.0.1 has libusbx built in and LTO should be in the CMakeLists: `cmake . -DCMAKE_C_FLAGS="-O4 -DNDEBUG" -DCMAKE_CXX_FLAGS="-O4 -DNDEBUG -DLIBUSB_INCLUDE_DIR=/opt/usb/include/libusb-1.0 -DLIBUSB_LIBRARIES=/opt/usb/lib/libusb-1.0.0.dylib && make -j8` -9. For macOS, create a dmg as follows: `hdiutil create dolphin-4.0.1.dmg -volname "Dolphin 4.0.1" -fs HFS+ -srcfolder Binaries -ov` -10. TODO: Create Non-Windows installers. -11. Create a changes summary for broad consumption. -12. Write release announcement as a blog article on the homepage -13. Upload installers to homepage -14. Publish announcement blog article -15. Create a minimalistic forum thread about the release (cf. [the 4.0 announcement](https://forums.dolphin-emu.org/Thread-dolphin-4-0-release-announcement)) and update the blog article to link to this thread for discussion. -16. Forward announcement to social media (Facebook, …). -17. Update the forum header to say that a new release has happened (Admin CP, Templates&Style, Templates, Simpl Templates, Header Templates, header, Options, Full Edit, then update the html with the new version and links) -18. Update the wiki templates, [Sitenotice](https://wiki.dolphin-emu.org/index.php?title=MediaWiki:Sitenotice) and [Anonnotice](https://wiki.dolphin-emu.org/index.php?title=MediaWiki:Anonnotice), with the appropriate version and links. -19. Merge stable back to master to bump the version number. -20. Switch the Dolphin i18n Bot back to the 'master' branch and push the new translation strings. \ No newline at end of file +1. Perform a translation sync with Transifex if creating a major release. +2. Create a new branch named `release-prep-xxxx`, where `xxxx` is the version number: `git checkout -b release-prep-xxxx ` + * If creating a major release, use the commit that the release should be based on. + * If creating a hotfix release, use the tag of the last release. +3. Cherry pick any necessary commits. +4. Update `DOLPHIN_VERSION_MAJOR` and `DOLPHIN_VERSION_MINOR` in `CMake/ScmRevGen.cmake`, and commit the result. +5. Push the branch to GitHub: `git push -u origin release-prep-xxxx`. +6. Smoke test the produced builds. + * The builds can be downloaded at `https://dolphin-emu.org/download/list/release-prep-xxxx/1/`. + * Now is the time to fix any last-minute issues. Additional builds can be created by pushing new commits to GitHub. +7. Create an **annotated** tag: `git tag -a xxxx -m "Release for some date"` +8. Push the tag to GitHub: `git push origin xxxx`. +9. The release builds will automatically show up on the normal download page. +10. Publish the corresponding Progress Report, if any. + * After publishing, post the link to the Progress Report onto Twitter, Mastodon, Bluesky, etc. +11. Merge the release branch back into master: `git checkout master`, `git merge --no-ff xxxx` \ No newline at end of file