-
Notifications
You must be signed in to change notification settings - Fork 18
1.0.x release instructions
- Accept PR to merge change into 1.0.x
- Create new branch just for Maven work
The point is to use a separate commit than the code change
Note at the time of this writing, for the last couple releases, the 1.0.x branch didn't bother resetting versions back to 1.0.N-SNAPSHOT between releases, since we weren't too active in between releases.
TODO: write some more instructions to cover this case next time we go through it.
- We will always increment parent POM version.
- For each of API, impl (SPI+container), we will only increment the version if there has been a change
- To release you must use a concrete, (non-snapshot) version of all modules, whether you are releasing a change in them, or not.
- If an "interim" version is needed in Maven central for testing purposes (e.g. from within Glassfish), then past convention was to use something like 1.0.3-b01 (i.e. "beta 01 for planned release of next version 1.0.3")
Note: The batch.impl.version
applies to both com.ibm.jbatch.container and com.ibm.jbatch.spi child modules, which is why they should be updated together.
-
In the parent pom.xml
- increment the
<version>1.0.3</version>
at the top (always) - update only the changed versions in the
<properties>
section: <batch.api.version>1.0.1</batch.api.version> <batch.impl.version>1.0.3</batch.impl.version> <batch.spec.version>1.0</batch.spec.version>
- increment the
-
In each child pom.xml
- update the parent
<version>1.0.3</version>
to reflect the incremented update above - update the child's own
<version>1.0.3</version>
only when it has changed
- update the parent
-
Now do a
mvn clean install
from the top-level to run through the tests and install locally.
The module to execute the TCK against the RI from maven is the com.ibm.jbatch.tck.exec submodule, as explained here.
-
Edit the top-level pom.xml (in the parent dir of com.ibm.jbatch.tck.exec) to match the updates above.
<!-- EDIT ME WHEN BUILDING A NEW VERSION --> <!-- Run against latest version of RI --> <batch.api.version>1.0.1</batch.api.version> <batch.impl.version>1.0.3</batch.impl.version>
-
Run the 1.0.1 TCK
$ git checkout 1.0.x
-
$ mvn clean install
- Expecting to see: Tests run: 155, Failures: 0, Errors: 0, Skipped: 3
-
Run the master TCK
$ git checkout master
- Redo/merge changes to top-level pom.xml: <batch.api.version>1.0.1</batch.api.version> <batch.impl.version>1.0.3</batch.impl.version>
-
$ mvn clean install
- Expecting to see: Tests run: 167, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 131.891 sec <<< FAILURE! -in TestSuite testDeciderReceivesCorrectStepExecutionsAfterSplit(com.ibm.jbatch.tck.tests.jslxml.DeciderTests) Time elapsed: 0.354 sec <<< FAILURE!
- You can fix this by modifying DeciderTests.java, and get to 166/166
@Test(enabled=false) // DISABLE!
@org.junit.Test
public void testDeciderReceivesCorrectStepExecutionsAfterSplit() throws Exception {
- To do this you only need to rebuild child modules com.ibm.jbatch.tck and com.ibm.jbatch.tck.exec, and don't need to worry about the com.ibm.jbatch.tck.dist.* modules
Currently we use the Maven deploy plugin.
TODO: Look here since the Nexus Staging plugin seems to have some advantages, and there's other useful info here.
Note: since some of the tests have signing sensitivities, we skip tests from now on, assuming they have already passed.
- Verify - especially useful for verifying our GPG setup (so we can sign artifacts).
$ mvn clean verify -P release-sign-artifacts -DskipTests
- Enter GPG Passphrase at prompt
- Deploy
$ mvn clean deploy -DperformRelease=true
After additional required testing (not covered here), close staging repo then release. See here if reference needed.
- tag/push tag
- release in GitHub (just follow earlier examples), incl. updating with fix list
- if 1.0.x was using SNAPSHOT, then update POMS back to snapshot
- cherry-pick back to master
- look for latest changes decompile
- run TCK
- look at javadoc quick
- test by deleting new version in local repo, pointing tck to remote coordinates in parent version:
- Oracle (not IBM JDK) might be required
- TODO: API change not really covered here.
(before https://github.com/WASdev/standards.jsr352.jbatch/commit/329a56d55236ddc818e15d8965deb08e7f847dce it was:) mvn clean verify -P '!JavaSE,JavaEE,release-sign-artifacts' -DskipTests