Difference between revisions of "Continuous Integration: Releases"

From Gcube Wiki
Jump to: navigation, search
Line 65: Line 65:
 
     Installed on: slave node
 
     Installed on: slave node
  
 
+
= Build Configurations =
 +
[[File:CI_Maven_Repos.png|800px]]
 
= Jenkins Pipeline =
 
= Jenkins Pipeline =
  

Revision as of 15:31, 29 May 2019

Releases in gCube are managed with Jenkins.

Single Jenkins jobs are triggered at each commit in the master branch for the Continuous Integration. Their outcomes are deployed on the Maven Snapshot Repository.

A dedicate Jenkins pipeline has been created to manage full builds of all the Jenkins jobs and to release the artifacts (i.e. deploy them on the Maven Release Repository) when successful. The pipeline is configured with a set of Maven build profiles to accommodate the different build scenarios.

Maven Build Profiles

A gCube artifact can be built in 3 different situations:

  1. on a personal (development) machine, likely after new code has been developed, by a gCube developer
  2. on a Jenkins slave, likely triggered by a new commit in the Git repository
  3. 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

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

CI Maven Repos.png

Jenkins Pipeline

Jenkins Pipeline Definition

Activities of Release Manager

Back to the CI guide.