Skip to content

Release management for SOFA

Hugo edited this page Dec 27, 2024 · 18 revisions

Steps to follow for a bi-annual SOFA release (here v23.06):

  • Make sure all PR have milestones (backport-todo + no milestone)
  • Life cycle in the code
    • disable the deprecated features
      • SOFA_ATTRIBUTE_DEPRECATED.\n."."."v24.06" --> attributes (pour v24.06 et en plus vieux 23.12...)
      • SOFA_ATTRIBUTE_DEPRECATED.".".*"v24.06" (le meme sans saut de ligne)
      • SOFA_DEPRECATED_HEADER.".".*"v24.06" --> headers
      • DeprecatedData.\n."."."v24.06" --> (pour v23.12 et en plus vieux 23.06...) passer en DISABLED
      • DeprecatedData.".".*"v24.06" (le meme sans saut de ligne)
    • remove the features disabled in v23.06
      • SOFA_ATTRIBUTE_DISABLED.\n."."."v23.06" --> attributes (et plus vieux) remove (delta de 1 an)
      • SOFA_ATTRIBUTE_DISABLED.".".*"v23.06" (le meme sans saut de ligne)
      • SOFA_DISABLED_HEADER.".".*"v23.06" --> headers
      • RemovedData.\n."."."v23.06" --> (et plus vieux) remove (delta de 1 an)
      • RemovedData.".".*"v23.06" (le meme sans saut de ligne)
    • it's also the occasion to check for deprecated code / warnings in SOFA
  • Creation of the release branch
    • update ChangeLog using script "create-changelog"
    • update version of SOFA in CMakeLists.txt (root + applications/plugins)
  • Generate binaries
    • see below what to do when issues occur with SOFA
  • Test the release
  • Update SOFA master branch
    • cherry-pick the ChangeLog
    • bump version towards xx.xx.99
  • Make sure plugins are following
    • stable branch compatible with the release branch is created
    • possibly .git/workflows are updated (sofa-branch)
  • Web (sofa-framework.org) update
    • release page
    • download page
    • compute checksums
    • update tag on applications/plugins "Available in v23.12"
    • update list of supported plugins
    • update doc Linux / Win / MacOS
    • check validity of WinDepPack
    • update doc SofaPython3 (version of the Python library used for compilation)
  • Publish release

============== Issues detected in SOFA while creating the release ==============

  • fix with a PR
  • when fix is merged, cherry-pick the commit from master to the release branch
  • we update the Changelog on the release branch
  • in case of problems in external plugins :
    • if we have time : fix the plugins in their respective repository
    • if we don't have time : fix plugins in forks (to be proposed in PR later)