Continuous Integration: Releases Maven
Contents
Maven Build Profiles
A gCube artifact can be built in 3 different situations:
- on a personal (development) machine, likely after new code has been developed, by a gCube developer
- on a Jenkins slave, likely triggered by a new commit in the Git repository
- on a Jenkins slave, as part of the release pipeline
To support these scenarios, the following profiles are defined in the gCube maven-parent.
gcube-developer
- Dependencies resolved against gcube-snapshots and gcube-releases
- Snapshot artifacts deployed to gcube-snapshots
- Deployments of releases artifacts are not permitted
jenkins-snapshots
- Dependencies resolved against local-snapshots and gcube-releases
- Snapshot artifacts installed to local-snapshots
- Snapshot artifacts deployed to gcube-snapshots
- Deployments of release artifacts are not permitted
jenkins-releases
- Dependencies resolved against gcube-releases
- Deployments of snapshot artifacts are not permitted
- Release artifacts deployed to gcube-releases
dry-run
This profile disables all the deployments (regardless the maven commands) by skipping the deploy phase. It can be combined with the previous profiles
disable-java8-doclint
This profile sets an additional parameter for javadoc generation to disables the doclint. It avoids the build fails if formal/syntax errors are found in javadoc comments.
Maven Settings Files
The activation and switch among the build profiles is done through different settings.xml files available in the Configs project.
gcube-developer-settings.xml
Used by: gCube Developer Installed on: development machine
jenkins-snapshots-settings.xml
Used by: Jenkins jobs Installed on: slave node
jenkins-snapshots-dry-run-settings.xml
Used by: Jenkins pipeline jobs When: To test a complete snapshot without deploying on a remote repo Installed on: slave node
jenkins-release-settings.xml
Used by: Jenkins pipeline jobs Installed on: slave node
jenkins-release-dry-run-settings.xml
Used by: Jenkins pipeline jobs When: To test a complete release without deploying on a remote repo Installed on: slave node
Build Configurations
By combining the build profiles in the appropriate settings file, we support the following interactions with the Maven Repositories:
Back to the CI guide.