// 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') { 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'], 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' } } }