Skip to content

Release strategy

Jonas Eschle edited this page Apr 16, 2024 · 14 revisions

zfit follows the major.minor.patch strategy. 1.0 should be considered stable, larger breaks should occur in the 'major' version only. (the instructions are equivalent for zfit-physics etc)

Release steps:

  • update contributers and authors
  • adjust changelog titles
  • check that docs build in readthedocs or local
  • create a new github release with a tag of the exact release version, i.e. "major.minor.patch" such as "0.5.1". This triggers the CD.
  • check if the Github Action build succeeded and the cd sucessfully runs the deploy stage
  • update conda-forge recipe if needed, a PR will automatically be created (usually within a day of the GH release). Just change things there
  • create a Spack update (for instructions, see below)

Spack update

To update the spack version, fork & clone the spack repository. Edit the zfit, called py-zfit, file and add the new version. To do this:

  • activate spack with source spack/shape/spack/setup-env.sh
  • run spack checksum py-zfit This will print out something like
    ==> Selected 58 versions. 51 new versions
      0.20.1   https://files.pythonhosted.org/packages/source/z/zfit/zfit-0.20.1.tar.gz
      0.20     https://files.pythonhosted.org/packages/source/z/zfit/zfit-0.20.tar.gz
      0.18.2   https://files.pythonhosted.org/packages/source/z/zfit/zfit-0.18.2.tar.gz
      0.18.1   https://files.pythonhosted.org/packages/source/z/zfit/zfit-0.18.1.tar.gz
      0.18.0   https://files.pythonhosted.org/packages/source/z/zfit/zfit-0.18.0.tar.gz
      0.17.0   https://files.pythonhosted.org/packages/source/z/zfit/zfit-0.17.0.tar.gz
      0.16.0   https://files.pythonhosted.org/packages/source/z/zfit/zfit-0.16.0.tar.gz
      0.15.5   https://files.pythonhosted.org/packages/source/z/zfit/zfit-0.15.5.tar.gz
      0.15.2   https://files.pythonhosted.org/packages/source/z/zfit/zfit-0.15.2.tar.gz
      ...
      0.2.0    https://files.pythonhosted.org/packages/source/z/zfit/zfit-0.2.0.tar.gz
    
    ==> Enter number of versions to take, or use a command:
        [c]hecksum  [e]dit  [f]ilter  [a]sk each  [n]ew only  [r]estart  [q]uit
  • enter f (for filter), then enter a filter (i.e. to get all versions 0.20.0 and higher, do 0.20:, inclusive start). This should return
    ==> Selected 2 of 58 versions. 2 new versions. Filtered by @0.20:
    0.20.1   https://files.pythonhosted.org/packages/source/z/zfit/zfit-0.20.1.tar.gz
    0.20     https://files.pythonhosted.org/packages/source/z/zfit/zfit-0.20.tar.gz
  • press c; this will retrieve the checksum and return something like
    ==> Fetching https://files.pythonhosted.org/packages/source/z/zfit/zfit-0.20.1.tar.gz
    ==> Fetching https://files.pythonhosted.org/packages/source/z/zfit/zfit-0.20.tar.gz
    
      version("0.20.1", sha256="c834953548be6e1a69ce48eb561b63a6ca8c6cee3bad2d33b98fa5c16001fc27")
      version("0.20", sha256="ec39f0118fe8f918a488dacc633279321a06bb88fc0dc09207830516177ca4ff")
  • copy these lines into the package.py file
  • update other dependencies. In short, @when refers to the zfit version, with "0.20.1:0.20" meaning "from 0.20.1 (inclusive) to 0.20.x (inclusive), i.e. anything with 0.20.1 up to 0.20.ANY will have this requirement
  • run spack style --fix to invoke the formatter
  • push and make a PR. Maybe link to the changed requirements or release notes for a quicker review.