diff --git a/Jenkinsfile b/Jenkinsfile index bf5a64c..ed4cc40 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,40 +1,40 @@ import org.yaml.snakeyaml.Yaml // set the build options according to the Type of build -def (options,maven_local_repo_path,maven_settings_file) = ['','',''] +def (options, maven_local_repo_path, maven_settings_file) = ['', '', ''] def maven_jdk = 'OpenJDK 8' def agent_root_folder = '/var/lib/jenkins' if (params.Type == 'SNAPSHOT-DRY-RUN') { - echo "Configure Maven for SNAPSHOT-DRY-RUN artifacts" - options = '' - maven_local_repo_path = "${agent_root_folder}/local-snapshots" - maven_settings_file = "jenkins-snapshots-dry-run-settings.xml" + echo "Configure Maven for SNAPSHOT-DRY-RUN artifacts" + options = '' + maven_local_repo_path = "${agent_root_folder}/local-snapshots" + maven_settings_file = "jenkins-snapshots-dry-run-settings.xml" } if (params.Type == 'SNAPSHOT') { - echo "Configure Maven for SNAPSHOT artifacts" - options = '' - maven_local_repo_path = "${agent_root_folder}/local-snapshots" - maven_settings_file = "jenkins-snapshots-settings.xml" + echo "Configure Maven for SNAPSHOT artifacts" + options = '' + maven_local_repo_path = "${agent_root_folder}/local-snapshots" + maven_settings_file = "jenkins-snapshots-settings.xml" } if (params.Type == 'RELEASE-DRY-RUN') { - echo "Configure Maven for RELEASE-DRY-RUN artifacts" - options = '' - maven_local_repo_path = "${agent_root_folder}/local-releases" - maven_settings_file = "jenkins-releases-dry-run-settings.xml" + echo "Configure Maven for RELEASE-DRY-RUN artifacts" + options = '' + maven_local_repo_path = "${agent_root_folder}/local-releases" + maven_settings_file = "jenkins-releases-dry-run-settings.xml" } if (params.Type == 'RELEASE-STAGING') { - echo "Configure Maven for RELEASE-STAGING artifacts" - options = '' - maven_local_repo_path = "${agent_root_folder}/local-staging" - maven_settings_file = "jenkins-staging-settings.xml" + echo "Configure Maven for RELEASE-STAGING artifacts" + options = '' + maven_local_repo_path = "${agent_root_folder}/local-staging" + maven_settings_file = "jenkins-staging-settings.xml" } if (params.Type == 'RELEASE') { - echo "Configure Maven for RELEASE artifacts" - options = '' - //maven_local_repo_path = "${agent_root_folder}/local-releases" - //maven_settings_file = "jenkins-releases-settings.xml" - echo "This will fail. RELEASES are currently disabled until further testing." + echo "Configure Maven for RELEASE artifacts" + options = '' + //maven_local_repo_path = "${agent_root_folder}/local-releases" + //maven_settings_file = "jenkins-releases-settings.xml" + echo "This will fail. RELEASES are currently disabled until further testing." } echo "Use settings file at ${maven_settings_file}" echo "Use local repo at ${maven_local_repo_path}" @@ -52,23 +52,23 @@ def text = releaseURL.toURL().getText() //parsing def jsonConfig = new Yaml().load(text) println jsonConfig.inspect() -assert jsonConfig.gCube_release.Version == params.gCube_release_version : "Release versions do not match!" +assert jsonConfig.gCube_release.Version == params.gCube_release_version: "Release versions do not match!" echo "Building gCube v. ${jsonConfig.gCube_release.Version}" echo "Found components:" -jsonConfig.gCube_release.Components.each{ println it.key } +jsonConfig.gCube_release.Components.each { println it.key } pipeline { // see https://jenkins.io/doc/book/pipeline/syntax/#agent agent { - label 'pipeline-agent' + label 'pipeline-agent' } // see https://jenkins.io/doc/book/pipeline/syntax/#environment environment { - JOB_OPTIONS = "${options}" - MAVEN_LOCAL_REPO = "${maven_local_repo_path}" - GCUBE_RELEASE_NUMBER = "${params.gCube_release_version}" + JOB_OPTIONS = "${options}" + MAVEN_LOCAL_REPO = "${maven_local_repo_path}" + GCUBE_RELEASE_NUMBER = "${params.gCube_release_version}" } tools { jdk 'OpenJDK 8' @@ -100,82 +100,87 @@ pipeline { } // the maven-parent needs to be built (once) at each execution stage('build maven-parent') { - steps { - build(job: 'maven-parent', - parameters: [[$class: 'StringParameterValue', name: 'gcube_settings', value: "${maven_settings_file}"], - [$class: 'StringParameterValue', name: 'local_repo', value: "${maven_local_repo_path}"], - [$class: 'LabelParameterValue', name: 'exec_label', label: "pipeline-agent", nodeEligibility: [$class: 'AllNodeEligibility']] - ]) - echo "Done with maven-parent" - } + steps { + build(job: 'maven-parent', + parameters: [[$class: 'StringParameterValue', name: 'gcube_settings', value: "${maven_settings_file}"], + [$class: 'StringParameterValue', name: 'local_repo', value: "${maven_local_repo_path}"], + [$class: 'LabelParameterValue', name: 'exec_label', label: "pipeline-agent", nodeEligibility: [$class: 'AllNodeEligibility']] + ]) + echo "Done with maven-parent" + } } stage('build Core components') { - steps { + steps { buildComponents items: jsonConfig.gCube_release.Components.Core?.collect { "${it.name}" } echo "Done with Core components" - } + } } stage('build PortalCore components') { - steps { + steps { buildComponents items: jsonConfig.gCube_release.Components.PortalCore?.collect { "${it.name}" } echo "Done with Portal-Core components" - } + } } - + stage('build Enabling components') { - steps { + steps { buildComponents items: jsonConfig.gCube_release.Components.Enabling?.collect { "${it.name}" } echo "Done with Enabling components" - } + } } stage('build ClientLibraries components') { - steps { + steps { buildComponents items: jsonConfig.gCube_release.Components.ClientLibraries?.collect { "${it?.name}" } echo "Done with ClientLibraries components" - } + } } stage('build Libraries components') { - steps { + steps { buildComponents items: jsonConfig.gCube_release.Components.Libraries?.collect { "${it?.name}" } echo "Done with Libraries components" - } + } } stage('build Plugins components') { - steps { + steps { buildComponents items: jsonConfig.gCube_release.Components.Plugins?.collect { "${it?.name}" } echo "Done with Plugins components" - } + } } stage('build Services components') { - steps { + steps { buildComponents items: jsonConfig.gCube_release.Components.Services?.collect { "${it?.name}" } echo "Done with Services components" - } + } } stage('build Widgets components') { - steps { + steps { buildComponents items: jsonConfig.gCube_release.Components.Widgets?.collect { "${it?.name}" } echo "Done with Widgets components" - } - } + } + } stage('build Portlets components') { - steps { + steps { buildComponents items: jsonConfig.gCube_release.Components.Portlets?.collect { "${it?.name}" } echo "Done with Portlets components" - } + } } - - } + + } } def buildComponents(args) { if (args.items) { - parallel args.items?.collectEntries { name -> [ "${name}": { - if (name && !"NONE".equalsIgnoreCase(name)) - build(job: 'maven-parent', - parameters: [[$class: 'StringParameterValue', name: 'gcube_settings', value: "${maven_settings_file}"], - [$class: 'StringParameterValue', name: 'local_repo', value: "${maven_local_repo_path}"], - [$class: 'LabelParameterValue', name: 'exec_label', label: "pipeline-agent", nodeEligibility: [$class: 'AllNodeEligibility']] - ]) - } + parallel args.items?.collectEntries { name -> + ["${name}": { + if (name && !"NONE".equalsIgnoreCase(name)) + build(job: 'maven-parent', + parameters: [[$class: 'StringParameterValue', name: 'gcube_settings', value: "${maven_settings_file}"], + [$class: 'StringParameterValue', name: 'local_repo', value: "${maven_local_repo_path}"], + [$class: 'LabelParameterValue', name: 'exec_label', label: "pipeline-agent", nodeEligibility: [$class: 'AllNodeEligibility']] + ]) + } + ] + + } + } } \ No newline at end of file