2.3. MET Development Release

Create a new vX.Y.Z-betaN or vX.Y.Z-rcN development release from the develop branch while working toward an official vX.Y.Z release.

2.3.1. Open Release Issue

  • Define a new issue in the MET repository to create the new release.

    • “Create the MET vX.Y.Z release” for an official or bugfix release.

    • “Create the MET vX.Y.Z-betaN (or -rcN) release” for a development release.

  • For an official or development release, assign the issue to the current MET development project.

  • For a bugfix release, assign the issue to the organization level support project.

  • Select the target milestone.

2.3.2. Clone the Project Repository

  • Create and work in a new directory to ensure a fresh environment:

mkdir release-X.Y.Z
cd release-X.Y.Z
  • Run the clone command to obtain the repository.

Using SSH:

git clone git@github.com:dtcenter/MET

Using HTTP:

git clone https://github.com/dtcenter/MET
  • Enter the project repository directory:

cd MET

2.3.3. Checkout the Develop Branch

  • Checkout the develop branch:

git checkout develop

2.3.4. Create Release Feature Branch

  • Create a feature branch in which to update the version number and add release notes being sure to include the GitHub issue number for the new release.

git checkout -b feature_NNNN_vX.Y.Z       # for an official or bugfix release
git checkout -b feature_NNNN_vX.Y.Z-betaN # for a development release
git checkout -b feature_NNNN_vX.Y.Z-rcN   # for a development release

2.3.5. Update Version Number

  • Prior to creating the first development release (e.g. beta1) for a new version, the official release version number should have already been updated.

  • If the official release version has not yet been updated (e.g. beta1), follow the official release instructions to do so.

  • If the official release version has already been updated (e.g. beta2 and beyond), do the following:

    • In met/docs/conf.py, update the version, release_year, and release_date variables for the documentation.

2.3.6. Update Release Notes

You can refer to the GitHub Issues page to see what has changed for this release. Open the following URL in a browser:

https://github.com/dtcenter/MET/issues
  • Click on the Projects tab and select the project (under Repository) that corresponds to the release you are creating.

  • Update the release-notes.rst file found in the User’s Guide directory.

  • Consider organizing release notes into logical groups (e.g. Enhancements, Bugfixes, Documentation, etc.) and modifying GitHub issue titles for consistency. The release notes should match the GitHub issue titles, when possible.

  • Use your best judgement to apply bold formatting for any major or important changes.

  • If you are creating a beta1 release, remove the previous version’s release notes, i.e. for 3.0.0-beta1, remove all 2.Y.Z notes and start a 3.0.0 section with the format “Version X.Y.Z release notes (YYYYMMDD)”.

  • If you are creating a betaX release, add a new betaX section above the betaX-1 release.

  • Commit changes and push to GitHub.

2.3.7. Merge Release Issue

  • After updating the release-specific content on a release feature branch, submit a pull request to merge those changes back into the source branch.

2.3.8. Create Release on GitHub

  • Go to Releases on GitHub and click ‘Draft a new release’

  • Set the tag based on the version, starting with ‘v’, i.e. vX.Y.Z-betaN, vX.Y.Z-rcN, or vX.Y.Z

  • Set the branch value to ‘develop’ for a development release or ‘main_vX.Y’ for a bugfix or official release

  • Choose a release name (i.e. MET-X.Y.Z-betaN, MET-X.Y.Z-rcN, or MET-X.Y.Z)

  • Add a link to the release notes from the MET User’s Guide, i.e. https://MET.readthedocs.io/en/vX.Y.Z-betaN/Users_Guide/release-notes.html (Note: the URL will not be active until the release is created)

  • Add a link to the PDF of the MET User’s Guide, if available. The PDF can be downloaded from ReadTheDocs if it is available, i.e. https://MET.readthedocs.io/_/downloads/en/vX.Y.Z-betaN/pdf/ (Note: the URL will not be active until the release is created)

  • If this is a development release, check the box that says “This is a pre-release”

  • Click on “Publish release”.

2.3.9. Attach Release Tarfile

  • The MET software is distributed as a tarfile, but not the one created by GitHub. On a project machine (e.g. kiowa), clone the MET repository and run a script to build the tarfile for the newly tagged release.

git clone https://github.com/dtcenter/MET
MET/scripts/build/met_checkout_and_build.sh tag vX.Y.Z
  • Edit the vX.Y.Z release on GitHub by uploading the resulting tar file (met-X.Y.Z.YYYYMMDD.tar.gz) as a release asset.

2.3.10. Update DTC Website

  • Navigate to the downloads page for the MET repository at https://dtcenter.org/community-code/metplus/download

  • Sign in to the Drupal interface and edit the Downloads page.

  • Create a new Software Release for the newly released version by clicking on Add New Release.

    • For Full Title of Release type “MET Version X.Y.Z”.

    • For Related Community Code select both the METplus and the MET options (For Macs, hold the Command key to select both).

    • For Version Label type “MET X.Y.Z betaN”.

    • Select the release type (Recommended for official or bugfix releases or Development for development versions).

    • Enter the release date.

    • Click on Add Code Download then click Add Link to add links for each of the following:

      • Add Link: Link text should be the file name of the tar file and the URL should be the .tar.gz file created in the “Attach Release Tarfile” step.

      • Add Link: Link text should be “User’s Guide” and the URL should be the top level directory of the User’s Guide hosted on the web. Beta releases can use “develop” in the URL, but for official releases, please ensure the link uses the branch name (e.g. main_vX.Y) as opposed to the tag name (e.g. vX.Y.Z). For example, use “https://metplus.readthedocs.io/en/main_vX.Y/Users_Guide/” and NOT “https://metplus.readthedocs.io/en/vX.Y.Z/Users_Guide/

      • Add Link: Link text should be “Existing Builds and Docker” and the URL should be the latest Existing Builds page, i.e. https://dtcenter.org/community-code/metplus/metplus-X-Y-existing-builds (If creating a new official release, be sure to add a new Existing Builds and Docker page, if one was not already created.)

    • Inside the text box in the “Release Notes” section provide a direct link to the release-notes.html file in the User’s Guide.

    • Click on “Create Release”.

    • Update the existing releases, as needed.

      • For a development release, change any previous Development versions to Other.

      • For a bugfix or official release, change any previous Recommended versions to Other.

      • For an official release, remove the corresponding development releases.

    • Make any other necessary website updates. For example, the flowchart at https://dtcenter.org/community-code/model-evaluation-tools-met/system-architecture.

    • Click on “Save”.

2.3.11. Finalize Release on GitHub

  • Close the GitHub issue for creating this development release.

  • Edit the development project name for the current release to indicate the actual release date.

  • Review the remaining development projects, and if neccessary, add new ones.

  • If necessary, reassign any remaining issues from the current development project to the next one.

  • Close the development project for the current release.