This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/sis-site.git
The following commit(s) were added to refs/heads/main by this push:
new e173b3eb Partial update of release management notes, with more
instruction about publishing.
e173b3eb is described below
commit e173b3ebe551eb99faeae83fce8232546226ce03
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Thu Oct 5 21:56:17 2023 +0200
Partial update of release management notes, with more instruction about
publishing.
---
content/release-management.md | 173 ++++++++++++++++++++++++++++--------------
1 file changed, 117 insertions(+), 56 deletions(-)
diff --git a/content/release-management.md b/content/release-management.md
index fefc147a..0e261a64 100644
--- a/content/release-management.md
+++ b/content/release-management.md
@@ -161,6 +161,18 @@ Then, the signed public key shall be appended to the
`KEYS` file on the [SIS sou
then copied to the [SIS distribution directory][dist].
+## Gradle configuration
+
+Edit the `~/.gradle/gradle.properties` file, making sure that the following
properties are present:
+
+{{< highlight text >}}
+org.gradle.java.home=<path to a Java installation>
+signing.gnupg.keyName=<your key ID>
+asfNexusUsername=<login for uploding to Maven Central>
+asfNexusPassword=<password for uploading to Maven Central>
+{{< / highlight >}}
+
+
# Configure {#configure}
For all instructions in this page, `$OLD_VERSION` and `$NEW_VERSION` stand for
the version
@@ -292,7 +304,7 @@ git commit --message "Release notes for Apache SIS
$NEW_VERSION."
{{< / highlight >}}
-# Create release branch {#branch}
+# Create release artifacts {#create-artifacts}
Execute the following commands.
It is okay to checkout the branch in a separated directory if desired.
@@ -340,48 +352,123 @@ gradle test
git commit --message="Set version number to $NEW_VERSION."
{{< / highlight >}}
+
+## Initialize the distribution directory {#dist}
+
+Create the directory for the new version and release candidate within the
distribution directory.
+The `$RELEASE_CANDIDATE` variable shall be the number of current release
attempt.
+
+{{< highlight bash >}}
+cd ../release/distribution
+svn update
+mkdir -p $NEW_VERSION/RC$RELEASE_CANDIDATE
+svn add $NEW_VERSION
+cd $NEW_VERSION/RC$RELEASE_CANDIDATE
+export DIST_DIR=`pwd`
+{{< / highlight >}}
+
+Copy the `HEADER.html` file from the previous release.
+Update the file content if necessary.
+
+{{< highlight bash >}}
+svn copy
https://dist.apache.org/repos/dist/release/sis/$OLD_VERSION/HEADER.html .
+{{< / highlight >}}
+
+
## Generate Javadoc {#javadoc}
-Execute the following commands. The first one (`gradle javadoc`) will fail.
-This is a known problem with the current build.
-Open `javadoc.options` file as below (`gedit` can be replaced by another
editor),
-and move all `-classpath` content to `--module-path`.
-Then launch Javadoc from the command-line:
+Execute `gradle javadoc`. That command will fail. This is a known problem with
the current Gradle build configuration.
+But it should have created a `javadoc.options` file that we will patch as
below (`gedit` can be replaced by another editor):
{{< highlight bash >}}
-gradle javadoc
+cd $SIS_RC_DIR
+gradle javadoc # Fail. See workaround below.
gedit endorsed/build/tmp/javadoc/javadoc.options
+{{< / highlight >}}
+
+Apply the following changes:
+
+* Move all `-classpath` content to `--module-path`.
+* Add the value of `$PATH_TO_FX` environment variable to the module-path.
+* Delete all Java source files listed after the options, everything until the
end of file.
+* Add the following line in-place of deleted lines (omit the
`org.opengis.geoapi` module if not desired):
+
+{{< highlight text >}}
+--module
org.opengis.geoapi,org.apache.sis.util,org.apache.sis.metadata,org.apache.sis.referencing,org.apache.sis.referencing.gazetteer,org.apache.sis.feature,org.apache.sis.storage,org.apache.sis.storage.sql,org.apache.sis.storage.xml,org.apache.sis.storage.netcdf,org.apache.sis.storage.geotiff,org.apache.sis.storage.earthobservation,org.apache.sis.cloud.aws,org.apache.sis.portrayal,org.apache.sis.profile.france,org.apache.sis.profile.japan,org.apache.sis.openoffice,org.apache.sis.conso
[...]
+{{< / highlight >}}
+
+The following commands temporarily create links to optional modules for
inclusion in the Javadoc.
+The GeoAPI interfaces may also be copied if they should be bundled with the
Javadoc.
+Then the Javadoc command is launched manually.
+
+{{< highlight bash >}}
+cd endorsed/src
+ln -s ../../optional/src/org.apache.sis.gui
+cd -
+
+# Replace "../../GeoAPI/3.0.2" by the path to a GeoAPI 3.0.2 checkout, or omit
those lines.
+mkdir endorsed/src/org.opengis.geoapi
+cp -r ../../GeoAPI/3.0.2/geoapi/src/main/java
endorsed/src/org.opengis.geoapi/main
+cp -r ../../GeoAPI/3.0.2/geoapi/src/pending/java/org
endorsed/src/org.opengis.geoapi/main/
+cp ../../GeoAPI/3.0.2/geoapi/src/main/java9/module-info.java
endorsed/src/org.opengis.geoapi/main/
+
javadoc @endorsed/build/tmp/javadoc/javadoc.options
+firefox endorsed/build/docs/javadoc/index.html # For
verifying the result.
+rm endorsed/src/org.apache.sis.gui
+rm -r endorsed/src/org.opengis.geoapi
{{< / highlight >}}
+Prepares the Javadoc ZIP file to be released.
+Then update the online Javadoc:
-## Test branch extensively {#test-branch}
+{{< highlight bash >}}
+cd endorsed/build/docs/
+mv javadoc apidocs
+zip -9 -r $DIST_DIR/apache-sis-$NEW_VERSION-doc.zip apidocs
+cd -
+cd ../site/javadoc/
+rm -r *
+mv $SIS_RC_DIR/endorsed/build/docs/apidocs/* .
+git checkout -- README.md
+git add --all
+git commit --message "Update javadoc for SIS $NEW_VERSION."
+{{< / highlight >}}
+
+
+## Publish Maven artifacts {#publish-artifacts}
-Build the project with the `apache-release` profile enabled.
-This profile performs the following actions:
+This section publish artifacts to the staging repository.
-* Enable extensive tests (i.e. it will set the `org.apache.sis.test.extensive`
property to `true`).
-* Generate Javadoc. This may fail if the source code contains invalid Javadoc
tags or broken HTML.
-* Generate additional binary artifacts (`*.zip` and `*.oxt` files).
- This will fail if duplicated class files or resources are found.
- Consequently building the `*.zip` file is an additional test worth to do
before deployment.
-* Sign the artifacts.
+### Stage the parent POM
-Each of those additional products may cause a failure that did not happen in
normal builds.
+Execute the following:
{{< highlight bash >}}
-mvn clean install --activate-profiles apache-release
-find . -name "sis-*.asc" -exec gpg --verify '{}' \; # Verify signatures.
+cd $SIS_RC_DIR/parent
+mvn install deploy
{{< / highlight >}}
-Move to the `target` directory and execute all examples documented in the
[command-line interface page](./command-line.html)
-with the `sis` command replaced by the following:
+
+### Stage the project arfifacts
+
+Build the project and publish in the Maven local repository.
+The `org.apache.sis.releaseVersion` property will cause Javadoc to be
generated for earch artifact
+(this step is normally skipped because a bit long) and sign the artifacts.
{{< highlight bash >}}
-java -classpath "binaries/*" -enableassertions org.apache.sis.console.Command
+cd $SIS_RC_DIR
+git status # Make sure that everything is clean.
+gradle clean
+gradle test --system-prop org.apache.sis.test.extensive=true
+gradle assemble
+gradle assemble --system-prop org.apache.sis.releaseVersion=$NEW_VERSION
--rerun
+gradle publishToMavenLocal --system-prop
org.apache.sis.releaseVersion=$NEW_VERSION
+
+ll ~/.m2/repository/org/apache/sis/core/sis-referencing/$NEW_VERSION
+find ~/.m2/repository/org/apache/sis -name "sis-*-$NEW_VERSION-*.asc" -exec
gpg --verify '{}' \;
{{< / highlight >}}
-## Prepare non-free resources {#maven-nonfree}
+### Stage the non-free resources {#maven-nonfree}
Go to the directory that contains a checkout of
`https://svn.apache.org/repos/asf/sis/data/non-free/sis-epsg`.
Those modules will not be part of the distribution (except on Maven), but we
nevertheless need to ensure that they work.
@@ -397,6 +484,13 @@ svn commit --message "Set version number and dependencies
to $NEW_VERSION."
## Integration test {#integration-tests}
+Execute all examples documented in the [command-line interface
page](./command-line.html).
+
+{{< highlight bash >}}
+JAVA_OPTS=-enableassertions
+{{< / highlight >}}
+
+
Open the root `pom.xml` file of integration tests.
Set version numbers to `$NEW_VERSION` without `-SNAPSHOT` suffix.
Verify the configuration and version of Maven plugins.
@@ -504,39 +598,6 @@ mvn clean
# Stage the source, binary and javadoc artifacts {#stage}
-Generate the Javadoc:
-
-{{< highlight bash >}}
-cd $SIS_RC_DIR
-git checkout . # Discard local changes, in particular the hack for
excluding test files.
-mvn clean install --activate-profiles apache-release
-mvn javadoc:aggregate --activate-profiles javafx
-cd target/site
-zip -9 -r apache-sis-$NEW_VERSION-doc.zip apidocs
-cd ../..
-{{< / highlight >}}
-
-## Initialize the distribution directory {#dist}
-
-Create the directory for the new version and release candidate within the
distribution directory.
-The `$RELEASE_CANDIDATE` variable shall be the number of current release
attempt.
-
-{{< highlight bash >}}
-cd ../releases/distribution
-svn update
-mkdir -p $NEW_VERSION/RC$RELEASE_CANDIDATE
-svn add $NEW_VERSION
-cd $NEW_VERSION/RC$RELEASE_CANDIDATE
-export DIST_DIR=`pwd`
-{{< / highlight >}}
-
-Copy the `HEADER.html` file from the previous release.
-Update the file content if necessary.
-
-{{< highlight bash >}}
-svn copy
https://dist.apache.org/repos/dist/release/sis/$OLD_VERSION/HEADER.html .
-{{< / highlight >}}
-
Move the files generated by Maven to the distribution directory:
{{< highlight bash >}}