Release checklist#
Every release#
[ ]
version— update incodemeta.json,CITATION.cff, and your packaging file (pyproject.toml,package.json,DESCRIPTION).[ ]
identifier/doi— a DOI identifies one release. Update it after the new DOI is minted, in bothcodemeta.jsonandCITATION.cff.[ ]
datePublished/date-released— the new release date,YYYY-MM-DD.[ ]
releaseNotes— if it points at a specific release rather than a changelog file.[ ] Run the validator before tagging:
rs-metadata validate.
Ordering with Zenodo. Zenodo mints the DOI when you publish the release, so the DOI for release N does not exist until after you tag. Either use the DOI from the previous release until you can amend, or use Zenodo’s concept DOI, which resolves to the latest version and does not change (recommended). State whichever convention you pick in your contributing guide so it is applied consistently.
When something structural changes#
What changed |
Update |
|---|---|
The license |
|
The repository moved |
|
The software’s primary function |
|
A new dependency you had listed |
|
Support status |
|
You registered in bio.tools |
Add the bio.tools ID as an extra |
Once, at the start#
[ ] Add the validation workflow so all of the above is checked automatically on every push, see getting started.
Automating the version bump#
If you use a release tool, teach it about the metadata files so this checklist mostly runs itself.
bump-my-version — add the metadata files to the ones it rewrites:
# .bumpversion.toml
[[tool.bumpversion.files]]
filename = "codemeta.json"
search = '"version": "{current_version}"'
replace = '"version": "{new_version}"'
[[tool.bumpversion.files]]
filename = "CITATION.cff"
search = 'version: "{current_version}"'
replace = 'version: "{new_version}"'
Anything else — whatever rewrites your packaging version should rewrite these two as well. The validator will catch it if it does not, which is the point: you do not have to remember, you only have to not ignore a red build.