Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bf release #16

Merged
merged 16 commits into from
Aug 24, 2024
257 changes: 257 additions & 0 deletions docs/bioformats-release-process.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,257 @@
BioFormats release
==================

.. _Bio-Formats: https://github.com/ome/bioformats
.. _Bio-Formats Documentation: https://github.com/ome/bio-formats-documentation
.. _Bio-Formats Downloads: https://downloads.openmicroscopy.org/bio-formats/
.. _Octave Docker: https://github.com/ome/bio-formats-octave-docker
.. _Read The Docs: https://readthedocs.org/projects/bio-formats/builds/
.. _Data Repository: https://github.com/openmicroscopy/data_repo_config
.. _Bio-Formats homebrew: https://github.com/ome/homebrew-alt

This document describes the release process of the `Bio-Formats`_ Java library.
The release process uses GitHub actions, make sure that the actions are active before pushing any tag.

Before starting the release process,
open a Pull Request with a new release entry in the `whats-new <https://github.com/ome/bio-formats-documentation/blob/master/sphinx/about/whats-new.rst>`_ page. When approved by both the OME team and the Glencoe Software team, merge and start the release process.


Release process
^^^^^^^^^^^^^^^

Source code release
-------------------

Before making a new release, merge all contributions on the ``develop`` branch of `Bio-Formats`_.

The first operation to perform a Maven release is to bump the version out of
``SNAPSHOT`` using the Maven versions plugin, add and commit::

$ mvn versions:set -DnewVersion=x.y.z -DgenerateBackupPoms=false
$ mvn versions:set-property -Dproperty=release.version -DnewVersion=x.y.z -DgenerateBackupPoms=false
$ git add -u .
$ git commit -m "Bump release version to x.y.z"


A signed tag must be created for the released version using :command:`git tag -s`::

$ git tag -s -m "Tag version x.y.z" vx.y.z


Revert to ``SNAPSHOT``, add and commit::

$ mvn versions:set -DnewVersion=x.y.t-SNAPSHOT -DgenerateBackupPoms=false
$ mvn versions:set-property -Dproperty=release.version -DnewVersion=x.y.z-SNAPSHOT -DgenerateBackupPoms=false
$ git add -u .
jburel marked this conversation as resolved.
Show resolved Hide resolved
$ git commit -m "Revert to snapshot"

Both the ``develop`` branch as well as the tag must be pushed upstream::

$ git push origin develop vx.y.z

This will trigger GitHub action builds, generate artifacts, create a GitHub release and upload
jburel marked this conversation as resolved.
Show resolved Hide resolved
the artifacts to the release on GitHub and to the `OME artifactory`_.
An hourly cron job runs on our virtual machine and copy the artifacts published on Github under `Bio-Formats Downloads`_.

Close the milestone if any and add new one if needed.


Testing the artifacts
---------------------

To test the artifacts published,
- Test the `bio-formats-command-line-tools <https://docs.openmicroscopy.org/internal/testing_scenarios/GeneralRelease.html#bio-formats-command-line-tools>`_.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As these hyperlinks require (UoD?) authentication, I suspect a follow-up action might be to extract these testing scenarios to a public page?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it is.
This is something that we need to extract. we faced the same issue during the Django upgrade testing

- Test `MATLAB (only) <https://docs.openmicroscopy.org/internal/testing_scenarios/GeneralRelease.html#bio-formats-matlab-octave>`_.
- Test `Fiji Plugin <https://docs.openmicroscopy.org/internal/testing_scenarios/GeneralRelease.html#bio-formats-imagej-fiji-testing>`_
- Check the schema version using the command line tools::
$ ./bfconvert B.ome.tiff
$ ./tiffcomment B.ome.tiff
Check that the schema version in OME-XML be ``2016-06``


If an error occurs during the testing:
- Delete the release and the tag on GitHub.
- Delete the artifacts on `OME artifactory`_.
- Delete the folder corresponding to the latest release under `Bio-Formats Downloads`_, if it has already been created.

Bio-Formats examples release
----------------------------

Before making a release, merge all contributions on the ``master`` branch of `Bio-Formats Examples <https://github.com/ome/bio-formats-examples>`_.

The first operation to perform a Maven release is to bump the version out of
``SNAPSHOT`` using the Maven versions plugin::

$ mvn versions:set -DnewVersion=x.y.z -DgenerateBackupPoms=false
$ mvn versions:set-property -Dproperty=formats-gpl.version -DnewVersion=x.y.z -DgenerateBackupPoms=false

Bump the ``version`` and ``formats-gpl`` in :file:`build.gradle`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note with ome/bio-formats-examples#128 the proposal is to only have formats-bsd as a depedency

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will have to be adjusted accordingly when the example PR is merged


Add and commit::

$ git add -u .
$ git commit -m "Bump release version to x.y.z"


A signed tag must be created for the released version using :command:`git tag -s`::

$ git tag -s -m "Tag version x.y.z" vx.y.z

Revert to ``SNAPSHOT`` in :file:`pom.xml`::

$ mvn versions:set -DnewVersion=x.y.t-SNAPSHOT -DgenerateBackupPoms=false

Revert the ``version`` to ``SNAPSHOT`` in :file:`build.gradle`.

Both the ``master`` branch as well as the tag must be pushed upstream::

$ git push origin master vx.y.z

This will trigger GitHub action builds, generate artifacts and upload
the artifacts to the `OME artifactory`_.


Documentation release
---------------------

Before making a new release, merge all contributions on the ``master`` branch of `Bio-Formats Documentation`_.

The first operation to perform a Maven release is to bump the version out of
``SNAPSHOT`` using the Maven versions plugin, add and commit::

$ mvn versions:set -DnewVersion=x.y.z -DgenerateBackupPoms=false
$ mvn versions:set-property -Dproperty=bioformats.version -DnewVersion=x.y.z -DgenerateBackupPoms=false
$ mvn versions:set-property -Dproperty=bio-formats-examples.version -DnewVersion=x.y.z -DgenerateBackupPoms=false
$ git add -u .
$ git commit -m "Bump release version to x.y.z"

A signed tag must be created for the released version using :command:`git tag -s`::

$ git tag -s -m "Tag version x.y.z" vx.y.z

Revert to ``SNAPSHOT``, add and commit::

$ mvn versions:set -DnewVersion=x.y.t-SNAPSHOT -DgenerateBackupPoms=false
$ git add -u .
$ git commit -m "Revert to snapshot"

Both the ``master`` branch as well as the tag must be pushed upstream::

$ git push origin master vx.y.z


The documentation is built and published on `Read The Docs`_.

An hourly cron job runs on our virtual machine and adds redirect from for example `docs.openmicroscopy.org/bio-formats/7.3.1 <https://docs.openmicroscopy.org/bio-formats/7.3.1>`_ to `bio-formats.readthedocs.io/en/v7.3.1/ <https://bio-formats.readthedocs.io/en/v7.3.1/>`_.

Close the milestone if any and add new one if needed.

Fiji Update site
----------------

Before making a release, merge all contributions on the ``master`` branch of `Bio-Formats Fiji <https://github.com/ome/bio-formats-fiji>`_.

The first operation to perform a Maven release is to bump the version out of
``SNAPSHOT`` using the Maven versions plugin, add and commit::

$ mvn versions:set -DnewVersion=x.y.z -DgenerateBackupPoms=false
$ mvn versions:set-property -Dproperty=bioformats.version -DnewVersion=x.y.z -DgenerateBackupPoms=false
$ git add -u .
$ git commit -m "Bump release version to x.y.z"
$ git push origin master
$ mvn clean package -Dfiji.home=x.y.z

`Upload <https://imagej.net/update-sites/setup#Uploading_files_to_your_update_site>`_ the generated jars to the update site.


Revert to ``SNAPSHOT``, add, commit and push to origin::

$ mvn versions:set -DnewVersion=x.y.t-SNAPSHOT -DgenerateBackupPoms=false
$ git add -u .
$ git commit -m "Revert to snapshot"
$ git push origin master

Homebrew
--------

Before making a new release, merge all contributions on the `master` branch (rare) of `Bio-Formats homebrew`_.

- Update the `Bio-Formats formula <https://github.com/ome/homebrew-alt/blob/master/Formula/bioformats>`_
by pointing to the ``bioformats-RELEASE.zip`` and update the ``sha256`` value. The ``sha256`` can be found in the ``SHASUM`` file under https://downloads.openmicroscopy.org/bio-formats/RELEASE/artifacts/.
- Update the version and sha256 in the ``.rb`` file corresponding to the current release.


Add, commit the changes and push to origin::

$ git add -u .
$ git commit -m "Bump release version to x.y.z"
$ git push origin master


Docker container release
------------------------

Before making a new release, merge all contributions on the `master` branch (rare) of `Octave Docker`_.

When the artifacts are available under `Bio-Formats Downloads`_, you can release the `Octave Docker`_.
Bump the version in `Dockerfile <https://github.com/ome/bio-formats-octave-docker/blob/master/Dockerfile>`_ to the latest release version.

Add, commit the changes and push to origin::

$ git add -u .
$ git commit -m "Bump release version to x.y.z"
$ git push origin master

Close the milestone if any and add new one if needed.


Data repository release
-----------------------

Before making a new release, merge all contributions on the `master` branch of `Data Repository`_.

A signed tag must be created for the released version using :command:`git tag -s`::

$ git tag -s -m "Tag version x.y.z" vx.y.z
$ git push origin master


Website release
---------------

When the documentation is deployed, you can make a release of the `Open Microscopy Environment`_ website.

To make a release:
- Update the version in `_config.yml <https://github.com/ome/www.openmicroscopy.org/tree/master/_config.yml>`_
- Add a new entry under `_posts <https://github.com/ome/www.openmicroscopy.org/tree/master/_posts>`_. The name of the post should be ``YYYY-MM-DD-omero-MAJOR-MINOR-PATCH.md`` e.g. ``2024-08-15-omero-5-6-13.md``
- Point to the post announcing the release in `bio-formats/downloads/index.html <https://github.com/ome/www.openmicroscopy.org/tree/master/bio-formats/downloads/index.html>`_.
- Add, in alphabetical order, new contributors to `_data/bio-formats.json <https://github.com/ome/www.openmicroscopy.org/tree/master/_data/bio-formats.json>`_ and `_data/contributors.json <https://github.com/ome/www.openmicroscopy.org/tree/master/_data/contributors.json>`_.

A signed tag must be created using :command:`git tag -s`::

$ git tag -s -m "Message" YYYY.MM.DD

Before pushing, make sure that the documentation has been built and published on `Read The Docs`_.
Both the `master` branch as well as the tag must be pushed upstream::

$ git push origin master YYYY.MM.DD

An hourly cron job runs on our virtual machine and deploys the website.


Announcement
------------

- Announce the release on `image.sc`_ using the ``Announcements`` category after checking that the website has been deployed.
- Announce on the Confocal email
- Announce on X and linkedin


Post Release
------------

- Add an entry in `Web Server Stats`_.
- Bump Bio-Formats version in `omero-model <https://github.com/ome/omero-model/blob/master/build.gradle>`_.
- Bump Bio-Formats version in `OMEZarrReader <https://github.com/ome/ZarrReader/blob/main/pom.xml>`_.
- Bump Bio-Formats version in `pom-scijava <https://github.com/scijava/pom-scijava/blob/master/pom.xml>`_.

1 change: 1 addition & 0 deletions docs/components-release.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ Note this is not an exhaustive list of all tools release process.
.. toctree::
:maxdepth: 1

bioformats-release-process
cpp-development
gradle-development
java-development
Expand Down
1 change: 1 addition & 0 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@
.. _Conda: https://docs.conda.io/en/latest/
.. _PyTables: http://pytables.org
.. _image.sc: https://forum.image.sc/
.. _Web Server Stats: https://docs.google.com/spreadsheets/d/1K7ab1UpuiE3FmAq3et7OpyxFwumrT7z8tGrDDBSDxsk/edit#gid=908994883

.. |SSH| replace:: :abbr:`SSH (Secure Shell)`
.. |VM| replace:: :abbr:`VM (Virtual Machine)`
Expand Down