Run a Versioned Release#
So the time has come and we would like to release a stable
version of our
data/code out into the world. By the end of this, we’d like for:
the release notes to have a fully dated release
the git tag
vYYYY.MM.DD
to identify a specific versionthe
stable
Git branch to refer to the same commit as that tagOur data outputs corresponding to that tag on Zenodo,
pudl.catalyst.coop/stable
buckets in GCS/AWS, and KaggleOur code corresponding to that tag on PyPI
The conda package to be updated with the newest code
Updated
stable
andvYYYY.MM.DD
documentation on ReadTheDocs
Here’s how to do it!
Tell the rest of the team you’re planning on releasing a new version of the code in #team. Remind them that any changes to the release notes after the next nightly build has passed need to go into a new version.
The night before you plan to release, update the release notes with a paragraph or two explaining what this new release is, and attach a specific date to the release.
Wait for the nightly build to pass with your release notes updates.
If the nightly build passes, push a git tag
vYYYY.MM.DD
that points at the commit which just passed the nightly build. This will kick off another build.If that build passes, verify the following:
GCS/AWS distribution buckets have the appropriate data
stable
andvYYYY.MM.DD
point at the same Git refReadTheDocs for
stable
andvYYYY.MM.DD
versions have the latest changes in the release notesPyPI has the most current version of our code
Verify that the Zenodo draft deposition has all the expected data (raw FERC databases, PUDL database, everything the right size).
Update the Zenodo metadata to include the description from the release notes, and update the various links.
Publish the Zenodo deposition! Wahoo! You’re now done!
Except… within 24 hours after the PyPI version is updated, we’ll get [a PR in the PUDL conda-forge feedstock repo](https://github.com/conda-forge/catalystcoop.pudl-feedstock/pulls) from the @regro-cf-autotick-bot updating our
conda
packaging. If PUDL’s direct dependencies have changed in this release, we need to update them in the conda packaging recipe in that PR.