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

Remove -SNAPSHOT from the version number to set the release version. This change needs to be made in the following files:

  • MegaMek:

    • src/megamek/SuiteConstants.java
    • docs/history.txt
    • MegaMekRoot/build.gradle
  • MegaMekLab:

    • docs/history.txt
    • MegaMekLabRoot/build.gradle
  • MekHQ:

    • docs/history.txt
    • MekHQRoot/build.gradle

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.

November 2024 - The build packages are adding the local preferences to the package and need to be deleted before uploading.

Delete the following from each zip if present.

  • 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

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.

Add -SNAPSHOT to the end of the version number for the development version. Update the same files as in Step 3, and add a new section to the docs/history.txt files. Commit and push with the message:
Ready to Develop <v0.XX.X>

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** ⚠️