diff --git a/Jenkinsfile b/Jenkinsfile index d356ca2..f20a910 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,16 +1,4 @@ -import groovy.json.JsonSlurper -import groovy.io.FileType - -//locate where this jenkinsfile is -String releaseURL = "https://code-repo.d4science.org/gCubeCI/gCubeRelease/raw/branch/feature/17273/releases/gcube-${params.gCube_release_number}.json" -//check and parse the release file -println "Querying ${releaseURL}" -def text = releaseURL.toURL().getText() -def gcubeJSON = new JsonSlurper().parseText(text) -assert gcubeJSON instanceof Map -//check that the release number parameter is the one expected -assert gcubeJSON["gCube.version"] == params.gCube_release_number : "Release versions do not match!" - +import org.yaml.snakeyaml.Yaml // set the build options according to the Type of build def (options,maven_local_repo_path,maven_settings_file) = ['','',''] @@ -53,28 +41,44 @@ echo "Use settings file at ${maven_settings_file}" echo "Use local repo at ${maven_local_repo_path}" echo "Release number: ${params.gCube_release_number}" -def components = gcubeJSON['Components'] + +//locate where this jenkinsfile is +String releaseURL = "https://code-repo.d4science.org/gCubeCI/gCubeRelease/raw/branch/feature/17273/releases/gcube-${gCube_release_version}.yaml" +//load the release file +println "Querying ${releaseURL}" +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!" +echo "BUilding gCube v. ${jsonConfig.gCube_release.Version}" +echo "Found components:" +jsonConfig.gCube_release.Components.each{ println it.key } pipeline { - // see https://jenkins.io/doc/book/pipeline/syntax/#agent - agent any - // see https://jenkins.io/doc/book/pipeline/syntax/#environment - environment { + + // see https://jenkins.io/doc/book/pipeline/syntax/#agent + 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_number}" + GCUBE_RELEASE_NUMBER = "${params.gCube_release_version}" + } - } - - // see https://jenkins.io/doc/book/pipeline/syntax/#parameters - parameters { + // see https://jenkins.io/doc/book/pipeline/syntax/#parameters + parameters { choice(name: 'Type', choices: ['SNAPSHOT-DRY-RUN', 'SNAPSHOT', 'RELEASE-DRY-RUN', 'RELEASE-STAGING', 'RELEASE'], description: 'The type of artifacts the build is expected to generate') - string(name: 'gCube_release_number', + string(name: 'gCube_release_version', defaultValue: 'invalid', - description: 'The number of the gCube release to build. Ignored by the SNAPSHOT builds. Sample values: 4.14, 4.15, etc.') + description: 'The number of the gCube release to build. Sample values: 4.14, 4.15, etc.') } //see https://jenkins.io/doc/book/pipeline/syntax/#stages @@ -90,40 +94,27 @@ pipeline { } } - stage('Build Components') { - stages { - stage('Build SmartGears components') { - steps { - script { - for(int job=0; i < components['SmartGears'].size(); job++) { - build "${components['SmartGears'][$job]}" - - } - } - } - } - stage('Build Enabling components') { - steps { - script { - for(int job=0; i < components['Enabling'].size(); job++) { - build "${components['Enabling'][$job]}" - - } - } - } - } - stage('Build Data components') { - steps { - script { - for(int job=0; i < components['Data'].size(); job++) { - build "${components['Data'][$job]}" - - } - } - } - } - } + stage('build SmartGears components') { + steps { + buildComponents items: jsonConfig.gCube_release.Components.SmartGears.collect { "${it}" } + } } - } - + stage('build Enabling components') { + steps { + buildComponents items: jsonConfig.gCube_release.Components.Enabling.collect { "${it}" } + } + } + stage('build Data components') { + steps { + buildComponents items: jsonConfig.gCube_release.Components.Data.collect { "${it}" } + } + } + } } + +def buildComponents(args) { + parallel args.items.collectEntries { name -> [ "${name}": { + if (!"NONE".equalsIgnoreCase(name)) + build name + }]} +} \ No newline at end of file diff --git a/Jenkinsfile_static b/Jenkinsfile_static deleted file mode 100644 index 88da037..0000000 --- a/Jenkinsfile_static +++ /dev/null @@ -1,114 +0,0 @@ - -// set the build options according to the Type of build -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 = "${agent_root_folder}/.m2/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 = "${agent_root_folder}/.m2/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 = "${agent_root_folder}/.m2/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 = "${agent_root_folder}/.m2/jenkins-staging-settings.xml" - echo "This will fail. RELEASES are currently disabled until further testing." -} -if (params.Type == 'RELEASE') { - echo "Configure Maven for RELEASE artifacts" - options = '' - //maven_local_repo_path = "${agent_root_folder}/local-releases" - //maven_settings_file = "${agent_root_folder}/.m2/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}" -echo "Release number: ${params.gCube_release_number}" - -pipeline { - // see https://jenkins.io/doc/book/pipeline/syntax/#agent - 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_number}" - - } - - // see https://jenkins.io/doc/book/pipeline/syntax/#parameters - parameters { - choice(name: 'Type', - choices: ['SNAPSHOT-DRY-RUN', 'SNAPSHOT', 'RELEASE-DRY-RUN', 'RELEASE-STAGING', 'RELEASE'], - description: 'The type of artifacts the build is expected to generate') - - string(name: 'gCube_release_number', - defaultValue: 'invalid', - description: 'The number of the gCube release to build. Ignored by the SNAPSHOT builds. Sample values: 4.14, 4.15, etc.') - } - - //see https://jenkins.io/doc/book/pipeline/syntax/#stages - stages { - stage('clean up before starting') { - steps { - sh ''' - echo "Create a fresh local repository" - rm -rf $MAVEN_LOCAL_REPO - mkdir -p $MAVEN_LOCAL_REPO - echo "Done with local repository" - ''' - - } - } - stage('build core components') { - steps { - withMaven(jdk: "${maven_jdk}", mavenLocalRepo: "${maven_local_repo_path}", mavenSettingsFilePath: "${maven_settings_file}") { - build 'maven-parent' - build 'gcube-bom' - build 'authorization-common-library' - build 'gxRest' - } - echo "Done with core components" - } - } - } - - // post-build actions - post { - always { - echo 'This will always run' - } - success { - echo 'This will run only if successful' - } - failure { - echo 'This will run only if failed' - } - unstable { - echo 'This will run only if the run was marked as unstable' - } - changed { - echo 'This will run only if the state of the Pipeline has changed' - echo 'For example, if the Pipeline was previously failing but is now successful' - } - } - -} diff --git a/Jenkinsfile_withFunctions b/Jenkinsfile_withFunctions deleted file mode 100644 index 9cb18b1..0000000 --- a/Jenkinsfile_withFunctions +++ /dev/null @@ -1,58 +0,0 @@ -import groovy.json.JsonSlurper - -//locate where this jenkinsfile is -String releaseURL = "https://code-repo.d4science.org/gCubeCI/gCubeRelease/raw/branch/feature/17273/releases/gcube-4.14.5.json" -//check and parse the release file -println "Querying ${releaseURL}" -def text = releaseURL.toURL().getText() -echo text -def jsonText = readJSON text:text -print(jsonText) -def object = new JsonSlurper().parseText ''' - { - "gCube.version": "4.14.5", - "Components": { - "SmartGear": [ - "maven-parent", - "gcube-bom", - "maven-smartgears-bom", - "authorization-client", - "gxRest" - ], - "Enabling": [ - "information-system-bom", - "information-system-model", - "resource-registry-api", - "resource-registry-client" - ], - "Data": [ - "" - ] - } -}''' - -echo "gcube v. ${object['gCube.version']}" - -pipeline { - agent any - stages { - stage('build') { - steps { - buildComponents items: ("a".."f").collect { "Stage ${it}" } - } - } - stage('build2') { - steps { - buildComponents items: ("g".."p").collect { "Stage ${it}" } - } - } - } -} - -def buildComponents(args) { - parallel args.items.collectEntries { name -> [ "${name}": { - stage("${name}") { - echo name - } - }]} -} \ No newline at end of file diff --git a/Jenkinsfile_yaml b/Jenkinsfile_yaml deleted file mode 100644 index f20a910..0000000 --- a/Jenkinsfile_yaml +++ /dev/null @@ -1,120 +0,0 @@ -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 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 = "${agent_root_folder}/.m2/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 = "${agent_root_folder}/.m2/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 = "${agent_root_folder}/.m2/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 = "${agent_root_folder}/.m2/jenkins-staging-settings.xml" - echo "This will fail. RELEASES are currently disabled until further testing." -} -if (params.Type == 'RELEASE') { - echo "Configure Maven for RELEASE artifacts" - options = '' - //maven_local_repo_path = "${agent_root_folder}/local-releases" - //maven_settings_file = "${agent_root_folder}/.m2/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}" -echo "Release number: ${params.gCube_release_number}" - - -//locate where this jenkinsfile is -String releaseURL = "https://code-repo.d4science.org/gCubeCI/gCubeRelease/raw/branch/feature/17273/releases/gcube-${gCube_release_version}.yaml" -//load the release file -println "Querying ${releaseURL}" -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!" -echo "BUilding gCube v. ${jsonConfig.gCube_release.Version}" -echo "Found components:" -jsonConfig.gCube_release.Components.each{ println it.key } - -pipeline { - - // see https://jenkins.io/doc/book/pipeline/syntax/#agent - 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}" - } - - // see https://jenkins.io/doc/book/pipeline/syntax/#parameters - parameters { - choice(name: 'Type', - choices: ['SNAPSHOT-DRY-RUN', 'SNAPSHOT', 'RELEASE-DRY-RUN', 'RELEASE-STAGING', 'RELEASE'], - description: 'The type of artifacts the build is expected to generate') - - string(name: 'gCube_release_version', - defaultValue: 'invalid', - description: 'The number of the gCube release to build. Sample values: 4.14, 4.15, etc.') - } - - //see https://jenkins.io/doc/book/pipeline/syntax/#stages - stages { - stage('clean up before starting') { - steps { - sh ''' - echo "Create a fresh local repository" - rm -rf $MAVEN_LOCAL_REPO - mkdir -p $MAVEN_LOCAL_REPO - echo "Done with local repository" - ''' - - } - } - stage('build SmartGears components') { - steps { - buildComponents items: jsonConfig.gCube_release.Components.SmartGears.collect { "${it}" } - } - } - stage('build Enabling components') { - steps { - buildComponents items: jsonConfig.gCube_release.Components.Enabling.collect { "${it}" } - } - } - stage('build Data components') { - steps { - buildComponents items: jsonConfig.gCube_release.Components.Data.collect { "${it}" } - } - } - } -} - -def buildComponents(args) { - parallel args.items.collectEntries { name -> [ "${name}": { - if (!"NONE".equalsIgnoreCase(name)) - build name - }]} -} \ No newline at end of file diff --git a/releases/gcube-4.14.5.json b/releases/gcube-4.14.5.json deleted file mode 100644 index dcd4a30..0000000 --- a/releases/gcube-4.14.5.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "gCube.version": "4.14.5", - "Components": { - "SmartGear": [ - "maven-parent", - "gcube-bom", - "maven-smartgears-bom", - "authorization-client", - "gxRest" - ], - "Enabling": [ - "information-system-bom", - "information-system-model", - "resource-registry-api", - "resource-registry-client" - ], - "Data": [ - "" - ] - } -} \ No newline at end of file