3.2. MET Bugfix Release

Create a new vX.Y.Z bugfix release from the main_vX.Y branch.

3.2.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 corresponding MET development project.

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

  • Select the target milestone.

3.2.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

3.2.3. Checkout the Main Branch

Checkout the main branch for the X.Y release. If you are creating the MET-X.Y.Z official or bugfix release, checkout main_vX.Y.

git checkout main_vX.Y

3.2.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

3.2.5. Update Version Number

  • Update the version in the code and documentation:

    • Update the ‘met_version’ variable in ‘src/basic/vx_util/util_constants.h’ which defines the version number written to the MET output files.

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

    • DO NOT update the version number listed in the MET configuration files, add a new table file, or add a new test header file.

3.2.6. Update Release Notes

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

https://github.com/orgs/dtcenter/projects
  • Click on the project that corresponds to support for the release, i.e. METplus Version X.Y Support

  • Navigate to the “Closed Issues” tab. If this tab does not exist, see GitHub Projects to Manage Support to create it.

  • Find the closed issues with dtcenter/MET in the Repository column that have been added since the last bugfix release for MET.

  • Open the following URL in a browser:

https://github.com/dtcenter/MET/issues
  • Navigate to the MET X.Y.Z Milestone to check for any issues that may not appear in the METplus Version X.Y Support project board.

  • 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.

  • When creating a bugfix release, leave the “Version X.Y.0 release notes (YYYYMMDD)” in place, along with any other bugfix release notes and add a section above for the latest bugfix release (i.e. “Version X.Y.Z release notes (YYYYMMDD)”).

  • Commit changes and push to GitHub.

3.2.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.

3.2.8. Create Release on GitHub

  • Ensure that any and all dependent releases for MET have been created according to Release Dependencies.

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

  • For ‘Choose a tag’, create a new tag based on the version, starting with ‘v’ (i.e. vX.Y.Z-betaN, vX.Y.Z-rcN, or vX.Y.Z)

  • Define the ‘Target’ branch as:

    • ‘develop’ for a beta development release

    • ‘main_vX.Y’ for a release candidate, bugfix, or official release

  • Define the ‘Release title’ based on the repository name and version, without a leading ‘v’ (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) Refer to a previous release to easily copy and modify this information.

  • Add links to the HTML and PDF versions of the MET User’s Guide on ReadTheDocs. https://MET.readthedocs.io/_/downloads/en/vX.Y.Z-betaN/pdf/ (Note: the URL will not be active until the release is created) Refer to a previous release to easily copy and modify this information.

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

  • Click on “Publish release”.

3.2.9. Update DTC Website

METplus software releases are announced on the DTC website. Add or update information about software releases on the website.

Instructions
  • Navigate to https://dtcenter.org and sign in to the Drupal interface.

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

  • Click on the Edit button to 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:

    • In the Release Notes text box 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, ensure the “Release Type” is set to Development and 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.

    • Edit the “Coordinated METplus Version X.Y” software release.

      • For a bugfix release, update the existing link and text in the “Coordinated METplus-X.Y” release section with the X.Y.Z+1 information.

    • 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 at the bottom of the page.

3.2.10. Update Version Lookup Table

Modify the version lookup table in the METplus repository to include the correct version.

Instructions
  • Clone the METplus repository.

    Using SSH:

    git clone git@github.com:dtcenter/METplus
    

    Using HTTP:

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

cd METplus
  • Checkout the develop branch

git checkout develop
  • Create a branch off of develop to update. Include the name of the repository and version in the name.

git checkout -b update_version_vX.Y.Z_repo
  • Open metplus/component_versions.py and increment the version for the appropriate MET entry.

  • Commit change, push to GitHub, and create a pull request to merge change into the develop branch.

3.2.11. Finalize Release on GitHub

Return to GitHub to finalize the details of this release.

Instructions
  • Close the GitHub issue for creating this bugfix release.

  • Edit the milestone for the current release by updating the Due date with the actual release date.

  • Create a new milestone for the next bugfix release (e.g. ‘MET X.Y.{Z+1} (bugfix)’).

  • If necessary, reassign any remaining issues for the current bugfix milestone to the next one.

  • Close the current bugfix milestone.