The Wisdom Project
The Wisdom Framework is an open source project licensed under the Apache License 2.0.
All contributions are welcome !
Source Code
The source code is hosted on GitHub: https://github.com/wisdom-framework/wisdom/.
Bug Tracker
The Wisdom Project is using the GitHub Issue Tracker: https://github.com/wisdom-framework/wisdom/issues.
Continuous Integration
The main continuous integration server is provided by Cloudbees (Wisdom adheres to the FOSS program): https://wisdom-framework.ci.cloudbees.com/
Building Wisdom
To build Wisdom you need Apache Maven 3.2.1+. The Wisdom build is divided in several profiles:
mvn clean install -Pcore => Wisdom Core modules mvn clean install -Pframework => Wisdom Server mvn clean install -Pextensions => A couple of extensions mvn clean install -Pdocumentation => Documentation and Samples
To skip the tests, append the -DskipTests option to the command line.
As tests are being executed in a Wisdom server, you may experience some timing issues. If it’s
the case,
try setting the TIME_FACTOR to extend the wait durations:
mvn clean install -Pfull-runtime -DTIME_FACTOR=2
|
Tip
|
Time Factor: The time factor extends the time waited to determine whether a service is published or not. It is also used to detect the Stability of the platform, i.e. when all services and bundles are started. |
Releasing Wisdom
As Wisdom contains a Maven Plugin used by other projects and extending the lifecycle (so called extension), the maven-release-plugin cannot be used. This Maven limitation makes the release process a bit cumbersome.
First, check that your ~/.m2/settings.xml contains you GPG password when the release profile is activated:
<profile>
<id>release</id>
<properties>
<gpg.passphrase>YOUR_PASSPHRASE</gpg.passphrase>
</properties>
</profile>
Then check that your credential to Sonatype OSS are written in your ~/.m2/settings.xml:
<server> <id>sonatype-nexus-staging</id> <username>YOUR_USERNAME</username> <password>SECRET</password> </server>
You also need to be sure you have the permission to push to the Wisdom Git repository.
-
Check that you have the latest version, and declare the code freeze on wisdom-discuss.
-
Use the maven-versions-plugin to update to the release version:
# We will use this version everywhere: export VERSION=enter the released version here mvn clean mvn versions:set -DnewVersion=$VERSION -DgenerateBackupPoms=false
-
Be sure that you don’t have any
-SNAPSHOT<anymore.
egrep --exclude="**/target*" -ir "(-SNAPSHOT)<" .
Notice that you will have matches, and that’s normal. You need to verify by yourself.
-
Let’s now check that everything is fine:
mvn install -Prelease,core,\!framework,\!extensions,\!documentation -Dmaven.repo.local=$HOME/tmp/repo-for-$VERSION mvn install -Prelease,\!core,framework,extensions,documentation -Dmaven.repo.local=$HOME/tmp/repo-for-$VERSION mvn clean -Prelease -Dmaven.repo.local=$HOME/tmp/repo-for-$VERSION
If everything is fine, continue, else rollback. It’s generally recommended to check that the artifact are correctly signed with GPG.
-
Commit the updated pom files, create a tag, and push.
git commit **/pom.xml pom.xml -m "[RELEASE] update to release version: $VERSION" git push origin master git tag -a wisdom-framework-$VERSION -m "[RELEASE] Create tag for $VERSION" git push origin wisdom-framework-$VERSION
-
The tag is created, we are going to bump to the version to the next development version:
|
Important
|
The new version must ends with -SNAPSHOT
|
export NEW_VERSION=enter the new version here mvn versions:set -DnewVersion=$NEW_VERSION -Pcore,\!framework,\!extensions,\!documentation -DgenerateBackupPoms=false mvn clean install -DskipTests -Pcore,\!framework,\!extensions,\!documentation -DgenerateBackupPoms=false mvn versions:set -DnewVersion=$NEW_VERSION -P\!core,framework,extensions,documentation -DgenerateBackupPoms=false mvn clean install -P\!core,framework,extensions,documentation -DgenerateBackupPoms=false git commit **/pom.xml pom.xml -m "[RELEASE] update to development version: $NEW_VERSION" git push origin master
What you did so far is the equivalent to the mvn release:prepare. It’s now time to perform the release, so building the released artifacts.
-
Checkout the tag we created
git fetch git tag -l git checkout tags/wisdom-framework-$VERSION
-
Let’s build and deploy the release, as everything has been checked before we can safely skip the tests:
mvn deploy -Prelease,core,\!extensions,\!framework,\!documentation -DskipTests mvn deploy -Prelease,framework,extensions,documentation,\!core -DskipTests
-
When done, open a browser to https://oss.sonatype.org/, and log in.
-
On the left sidebar, go to Staging Repositories, and find the created repository.
-
Select it, and click on the
closebutton. A couple of checks are performed, such as checking that all the expected artifacts are available, and that all artifacts are correctly signed. -
Once done, re-check the repository and click on the release button.
-
Wait until the artifacts lands in Maven Central.
-
Announce the release on the
wisdom-discussmailing list. Don’t forget to integrate the release notes. These releases notes can be computed from the Github Issue Tracker. -
On the Github Issue Tracker, don’t forget to create a new milestone for the next release, and decide which issues are going to be fixed in this new release.
-
Almost done, now we have to generate the documentation artifacts
mkdir ~/Desktop/Wisdom-$VERSION # Copy the source code archive cp target/*-source-release.zip ~/Desktop/Wisdom-$VERSION # Copy the documentation jar cp documentation/documentation/target/documentation-$VERSION.jar ~/Desktop/Wisdom-$VERSION # Generate and copy the javadoc mvn javadoc:aggregate-jar -Pcore,framework,extensions,documentation cp target/*$VERSION-javadoc.jar ~/Desktop/Wisdom-$VERSION # Generate the wisdom-maven-plugin site cd core/wisdom-maven-plugin mvn site site:jar cp target/*$VERSION-site.jar ~/Desktop/Wisdom-$VERSION
-
On Github, go to the release section (https://github.com/wisdom-framework/wisdom/releases). A new release should have been created. Edit its name to be Wisdom Framework $VERSION (replace $VERSION) and add a link to the release notes. In addition upload the
-source-release.zipartifacts as binaries. -
Send the 3 others artifacts to wisdom-commit so they can be uploaded on the web site. The upload need to wait until the artifact reach Maven Central.
-
Send a mail to wisdom-discuss to announce the release
If you reach this point, you made it ! Congratulations !