ImageJ2 uses several major components, each of which is released on its own development cycle.
Component releases are done using the SciJava release-version.sh script, which uses the maven-release-plugin to do some of the work. All releases are tagged in their respective Git repositories, with binary builds deployed to the ImageJ Maven repository.
SciJava Common provides the core plugin framework and application container.
cd scijava-common
release-version.sh 1.0.0
- Where
1.0.0is the new release version.
Optionally, after performing the release, tell Jenkins to update
scijava-common.version in
pom-scijava.
ImgLib2 provides the core data model and image processing.
cd imglib
release-version.sh --tag=imglib2-2.0.0-beta-7 --dev-version=2.0.0-SNAPSHOT 2.0.0-beta-7
- Where
2.0.0-beta-7is the new release version. - The
--tagargument is necessary since the default SCM release tag would bepom-imglib-2.0.0-beta-7. - The
--dev-versionargument is required to set the new development version back to2.0.0-SNAPSHOTafterwards. Once ImgLib2 is out of beta, it will no longer be necessary.
Optionally, after performing the release, tell Jenkins to update
imglib2.version in
pom-scijava.
SCIFIO provides core I/O functionality.
cd scifio/scifio
release-version.sh 0.1.0
- Where
0.1.0is the new release version.
Optionally, after performing the release, tell Jenkins to update
scifio.version in
pom-scijava.
CppTasks Parallel is used by the NAR plugin. We deploy unofficial release builds for use with the ImageJ launcher.
cd cpptasks-parellel
release-version.sh --thirdparty=imagej 1.1.1-scijava-1
git push scijava cpptasks-parallel-1.1.1-scijava-1
- Where
1.1.1-scijava-1is the new release version. - The
-scijava-Xqualifier indicates an unofficial release. - Note that due to the
--thirdpartyargument,release:preparewill be called in interactive mode.
The NAR plugin is used to build the ImageJ launcher. We deploy unofficial release builds.
cd maven-nar-plugin
release-version.sh --thirdparty=imagej 3.0.0-scijava-1
git push scijava nar-maven-plugin-3.0.0-scijava-1
- Where
3.0.0-scijava-1is the new release version. - The
-scijava-Xqualifier indicates an unofficial release. - Note that due to the
--thirdpartyargument,release:preparewill be called in interactive mode.
Optionally, after performing the release, tell Jenkins to update
nar.version in
pom-scijava.
The ImageJ launcher is a native launcher for ImageJ.
cd imagej-launcher
release-version.sh --skip-deploy 2.0.0
- Where
2.0.0is the new release version.
Then, to deploy:
open http://jenkins.imagej.net/job/ImageJ-launcher/build
And build the newly pushed release tag; e.g., ij-launcher-2.0.0.
Optionally, after performing the release, tell Jenkins to update
imagej-launcher.version in
pom-scijava.
First, make sure that the pom-scijava version references the latest minor version of ImageJ 1.x! Otherwise, uploading a new release to the update site will downgrade all ImageJ2 and Fiji users to an obsolete ImageJ 1.x version.
The following steps perform a release of ImageJ itself:
cd imagej
release-version.sh --skip-push --skip-deploy --tag=temp --dev-version=2.0.0-SNAPSHOT 2.0.0-beta-7
git push origin temp
- Where
2.0.0-beta-7is the new release version. - The
--tag=tempargument creates a temporary tag namedtemp, from which we will build the release candidate in the next step. - The
--dev-versionargument is required to set the new development version back to2.0.0-SNAPSHOTafterwards. Once ImageJ2 is out of beta, it will no longer be necessary.
open http://jenkins.imagej.net/job/ImageJ-release-build/build
And specify the newly pushed temp tag.
- Download the resultant application ZIP from Jenkins and perform desired tests.
- Fix any critical bugs found on
master - Delete the
temptag locally and remotely - Start the release process over again
cd imagej
release-version.sh --tag=imagej-2.0.0-beta-7 --dev-version=2.0.0-SNAPSHOT 2.0.0-beta-7
- Where
2.0.0-beta-7is the new release version. - The
--tagargument is necessary since the default SCM release tag would bepom-ij-base-2.0.0-beta-7. - The
--dev-versionargument is required to set the new development version back to2.0.0-SNAPSHOTafterwards. Once ImageJ2 is out of beta, it will no longer be necessary.
Optionally, after performing the release, tell Jenkins to update
imagej.version in
pom-scijava.
-
Unpack the application ZIP
-
Add upload information for the ''ImageJ'' update site:
./ImageJ-linux64 --update edit-update-site ImageJ http://update.imagej.net/ \ <user>@update.imagej.net /home/imagej/update-site/ -
Simulate an upload (to make sure everything is correct):
./ImageJ-linux64 --update upload-complete-site --simulate ImageJ -
When everything is alright, upload it for real:
./ImageJ-linux64 --update upload-complete-site ImageJ
-
Create a blog post on the ImageJ web site. It should be modeled after a previous blog entry.
-
Rename the artifact
app/target/imagej-XYZ-application.zipto delete the-applicationsuffix. Add it as an attachment to the post. -
Update the Downloads page.
-
Send a release announcement to the mailing lists (ImageJ and imagej-devel). It should be an abbreviated version of the blog post, modeled after a previous release announcement.