Creating an Xmipp Release

Step 1: Define the Version Name

  • The version name follows the format X.YY.ZZ: - X = 3 (this keeps the main version number consistent to sort releases and maintain xmipp3). - YY = Year of the release. - ZZ = Month of the release.

  • Additionally, name the release after a Greek god or goddess. Check out the list

  • Example: 3.24.06 - Boreas (for a June 2024 release).

Step 2: Update the CHANGELOG.md

  1. Go through the changes in CHANGELOG.md file: - xmipp (includes xmippcore). - scipion-em-xmipp. - xmippViz.

  2. Follow the tittle format used in previous releases. - This is crucial because the release automation uses these tags.

  3. Use pull requests as a reference to identify changes and describe them clearly.

Step 3: Schedule the Release

  • Announce at least two weeks in advance that no new changes will be merged into devel. This stabilization period helps identify potential bugs in the devel branch.

  • Prepare all steps in advance.

  • Post the release at the start of your workday to address any issues promptly.

Step 4: Check Tests

  • Verify that most tests pass, or at least confirm that failing tests are consistent with previous results.

  • Use tools like Buildbot and Hertz-Cinco for validation.

Step 5: Update Protocol Status

  • Review the _devStatus of each protocol: - Set to PROD, NEW, or UPDATED if applicable.

  • Consider deprecating protocols no longer in use or supported.

Step 6: Create Candidate Branches

  • Name the release branches according to the release version (e.g., release-3.24.06).

Step 7: Update Version Information

  1. In Xmipp: - Update the name, version, and release date in here

  2. In scipion-em-xmipp: - Change the devel variable to release in here - Update _current_xmipp_tag and _currentBinVersion accordingly.

Step 8: Validate Release Branches Locally

  • Check out the release branches locally or on a test machine.

  • Verify: - Installation with Scipion. Downolad the scipion-em-xmipp repo in the release branch and launch

    git clone git@github.com:I2PC/scipion-em-xmipp.git
    cd scipion-em-xmipp
    scipion3 installp -p . --devel
    

    Descargara en scipion/software/em los repositorios en xmippSrc-3…. e instalara xmipp - Execution of a few tests.

Step 9: Create Pull Requests

  • Open four pull requests: - Release to master for each relevant repository.

Step 10: Document Changes

  • Compile a list of changed files, lines added, and other details from the PRs. Document this in the Xmipp monitoring file.

Step 11: Merge the Pull Requests

  • Merge the four PRs. - This triggers the creation of release tags on GitHub. - In scipion-em-xmipp, it will also upload the package to PyPI. Note: This is the most critical step to revert if issues arise.

Step 12: Announce the Release

  • Share the release news via: - Email lists. - Discord. - Any other relevant platforms.

Step 13: Consider XmippTomo

  • Evaluate whether XmippTomo needs a corresponding release.

Step 14: PR from Release to Devel

  • Create a pull request from release back to devel.

  • Revert the tags for release and devel in: - Xmipp. - scipion-em-xmipp.

That’s it! Now sit back, grab a coffee, and enjoy your shiny new release. 🚀