Release Procedure ‐ Running the Packaging Scripts - MegaMek/megamek GitHub Wiki

Release Procedure

The procedure for generating a release is nearly the same for each project.

1. Create a New Release

  1. Go to the project's releases page: https://github.com/MegaMek/(projectname)/releases/new.
  2. Set the tag version to the version number (always use the format vX.XX.XX).
  3. Add the release name in the format: vX.XX.XX-Development.
  4. Click the 'Generate Release Notes' button to automatically generate the list of changes. Generate Release Notes

2. Clean All Build Artifacts

  1. From the Gradle menu in IntelliJ IDEA, navigate to MekHQ -> Tasks -> build -> CleanAll.

    CleanAll

3. Update Version Numbers for Release

Update the version number in the following file:

  • megamek/src/megamek/resources/Version.properties

Also update the following history files:

  • MegaMek: docs/history.txt
  • MegaMekLab: docs/history.txt
  • MekHQ: docs/history.txt

4. Commit Changes

Commit the changes with the message:
Development snapshot <v0.XX.XX>

5. Build All Packages

  1. To build releases for all packages at once, run the buildAllPackages task in the Gradle menu under Tasks -> Distribution -> MekHQ. Build All Packages
  2. The packages will be found in the build/distributions directory.

6. Test the Releases

Unzip all the releases and run each one to ensure they launch properly. Confirm none of these files or the mmconf folder for each project are in the archives. If they are, delete them and open an issue.

  • clientsettings.xml
  • gameoptions.xml
  • megameklab.properties
  • megameklab.properties.bak
  • mhq.preferences
  • mm.preferences
  • mml.preferences

7. Upload the Packages

If testing is successful, upload all packages to their appropriate repositories. Upload Packages

8. Increment Version Numbers for Development

Update the following file:

  • megamek/src/megamek/resources/Version.properties

Also update the history files:

  • MegaMek: docs/history.txt
  • MegaMekLab: docs/history.txt
  • MekHQ: docs/history.txt

This will automatically update the package version in Gradle as well.

Increment the version numbers using the following schema:

  • Format: X.AA.BB
    • X: Increments to 1 once a final version of MegaMek is released.
    • AA: Increments with a change in Java version.
    • BB: Increments by .01 for subversions. Use the plain version number without any suffix (e.g., 50.06 not 50.06-SNAPSHOT). Commit and push with the message:
      Ready to Develop <v0.XX.X>

Note that version information is automatically generated during PR and Nightly builds.

9. Finalize Release Notes

Complete all release notes and review them for accuracy. Prepare for distribution via social media and other channels.

10. Publish the Release

Ensure all tasks are complete before publishing. Once published, the release will be publicly available. Publish Release

11. Post Release Announcements

Share the release notes and announcements on the following platforms:

  • Official Website
  • MegaMek Subforum on the official forums
  • Discord (Post an @everyone announcement)
  • Share links to the release notes on:
    • Battletech channel on Reddit
    • Facebook MegaMek channels
⚠️ **GitHub.com Fallback** ⚠️