From f691d69d44e1038819cd0df2c66ee102bf7f1827 Mon Sep 17 00:00:00 2001 From: Isaac Parenteau Date: Fri, 22 May 2020 20:09:19 +0100 Subject: [PATCH] Fixed Jenkinsfile and pom --- Jenkinsfile | 140 +++++++++++++++++++++++++++------------------------- pom.xml | 33 +++++++++++-- 2 files changed, 103 insertions(+), 70 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 155a059..3b19af3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,7 +1,18 @@ #!groovy +// Required Jenkins plugins: +// https://wiki.jenkins-ci.org/display/JENKINS/Timestamper +// https://wiki.jenkins-ci.org/display/JENKINS/Static+Code+Analysis+Plug-ins +// https://wiki.jenkins-ci.org/display/JENKINS/Checkstyle+Plugin ? +// https://wiki.jenkins-ci.org/display/JENKINS/FindBugs+Plugin +// https://wiki.jenkins-ci.org/display/JENKINS/PMD+Plugin ? +// https://wiki.jenkins-ci.org/display/JENKINS/DRY+Plugin ? +// https://wiki.jenkins-ci.org/display/JENKINS/Task+Scanner+Plugin +// https://wiki.jenkins-ci.org/display/JENKINS/Javadoc+Plugin +// https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin ? -init() + +init() def branch_name def branch_name_base @@ -23,7 +34,8 @@ def init() { build_url = env.BUILD_URL job_name = "${env.JOB_NAME}" branch_name = env.BRANCH_NAME - persist = branch_name + branch_name_docker = branch_name.replaceAll(/\//,'.') + persist = "/var/lib/jenkins/PERSIST/${branch_name_docker}" // execute the branch type specific pipeline code try { @@ -31,52 +43,44 @@ def init() { if (branch_name.indexOf('release/')==0) build_type='release' if (branch_name.indexOf('feature/')==0) build_type='feature' if (branch_name.indexOf('develop')==0) build_type='develop' + if (branch_name.indexOf('hotfix')==0) build_type='hotfix' + if (branch_name.indexOf('bugfix')==0) build_type='bugfix' if (branch_name.indexOf('master')==0) build_type='master' - if (branch_name.indexOf('hotfix/')==0) build_type='hotfix' - if (branch_name.indexOf('bugfix/')==0) build_type='bugfix' + + // common pipeline elements + node('master') { + Initialize() + SetVersion(build_type) + print_vars() // after SetVersion - all variables now defined + set_result('INPROGRESS') + Build() // builds database via flyway migration + } - switch(build_type) { - case ~/feature/: - case ~/hotfix/: - case ~/bugfix/: - case ~/master/: - case ~/develop/: - CommonBuild(); - break; - case ~/release/: - CommonBuild(); - Deploy(); - break; - default: - throw "unsupported branch type: ${branch_name}" + if (branch_name.indexOf('develop')==0) { + node('master') { + Deploy(); + } + } else if (branch_name.indexOf('release/')==0) { + node('master') { + Deploy(); + } } node('master') { - set_result('SUCCESS') + set_result('SUCCESS') } } catch (err) { node() { - set_result('FAILURE') + set_result('FAILURE') } throw err } } -def CommonBuild() { - // common pipeline elements - node('master') { - Initialize() - SetVersion(build_type) - print_vars() // after SetVersion - all variables now defined - set_result('INPROGRESS') - Build() - } -} - def Build() { stage ('build') { - mvn_alt("install -DskipTests=true -Dbuild.revision=${git_commit}") + mvn "install -DskipTests=true -Dbuild.revision=${git_commit}" step([$class: 'ArtifactArchiver', artifacts: '**/target/*.jar', fingerprint: true]) } } @@ -92,10 +96,8 @@ def Initialize() { } def Deploy() { - node('master') { - stage ('deploy') { - mvn_alt("deploy -DskipTests=true -Dbuild.number=${build_number} -Dbuild.revision=${git_commit}") - } + stage ('deploy') { + mvn "deploy -DskipTests=true -Dbuild.number=${build_number} -Dbuild.revision=${git_commit}" } } @@ -105,17 +107,19 @@ def getSha1() { return sha1 } -def mvn_initial(args) { - mvn_alt(args) +def mvn(args) { + withMaven( + maven: 'maven-3.6.1', + globalMavenSettingsConfig: 'locusworks-settings' + ) { + + sh "mvn ${args}" + + } } -def mvn_alt(args) { - // add maven tools to path before calling maven - withMaven(maven: 'maven-3.6.1', jdk: 'jdk1.8.0_221', mavenSettingsConfig: 'maven_settings') { - writeFile file: '.skip-task-scanner', text: '' - writeFile file: '.skip-publish-junit-results', text: '' - sh "mvn ${args}" - } +def mvn_initial(args) { + mvn(args) } def set_result(status) { @@ -130,10 +134,13 @@ def set_result(status) { } else { error ("unknown status") } + + // save in persistence file for access the status page + // make sure the directory exists first + sh "mkdir -p $persist && echo $status > $persist/build.result" } def notify_bitbucket(state) { - echo "notify bitbucket, state = $state, commit: ${git_commit}" } def print_vars() { @@ -146,35 +153,34 @@ def print_vars() { echo "display_name = ${currentBuild.displayName}" echo "version = ${version}" echo "git_commit = ${git_commit}" + } def SetVersion( v ) { stage ('set version') { echo "set version ${v}" branch_name_base = (branch_name =~ /([^\/]+$)/)[0][0] - - switch(build_type) { - case ~/develop/: - version = build_number + '-SNAPSHOT' - currentBuild.displayName = version - break; - case ~/release/: - // for release branches, where the branch is named "release/1.2.3", - // derive the version and display name derive from the numeric suffix and append the build number - // 3.2.1.100 - version = branch_name_base + '.' + build_number + '-RELEASE' - currentBuild.displayName = version - break; - default: - // for all other branches the version number is 0 with an appended build number - // and for the display name use the jenkins default #n and add the branch name - version = branch_name_base + "." + build_number - currentBuild.displayName = "#" + build_number + " - " + branch_name_base + if ( v == 'release' ) { + // for release branches, where the branch is named "release/1.2.3", + // derive the version and display name derive from the numeric suffix and append the build number + // 3.2.1.100 + version = branch_name_base + "." + build_number + "-RELEASE"; + //version = branch_name.substring('release/'.length()) + "." + build_number + currentBuild.displayName = version + } else if (v == 'develop') { + version = branch_name_base + "." + build_number + "-SNAPSHOT"; + currentBuild.displayName = version + } else { + // for all other branches the version number is 0 with an appended build number + // and for the display name use the jenkins default #n and add the branch name + // #101 - feature/user/foo + //version = '0.' + build_number + version = branch_name_base + "." + build_number + currentBuild.displayName = "#" + build_number + " - " + branch_name_base } - display_name = currentBuild.displayName - mvn_initial("versions:set -DnewVersion=${version}") + mvn_initial "versions:set -DnewVersion=${version}" } } -return this +return this \ No newline at end of file diff --git a/pom.xml b/pom.xml index 45391e4..dacb6de 100644 --- a/pom.xml +++ b/pom.xml @@ -15,14 +15,14 @@ - git@gitea.locusworks.net:Locusworks/pseudo-bot.git + git@bitbucket.org:locus2k/crypto.git 1.8 1.8 - http://nexus.locusworks.net 3.0 + https://nexus.locusworks.net @@ -108,7 +108,7 @@ commons-codec commons-codec - 1.13 + 1.14 @@ -139,5 +139,32 @@ + + + locusworks-public + locusworks-public + ${nexus.repo}/repository/locusworks-public/ + + true + + + true + + + + + + + locusworks-public + ${nexus.repo}/repository/locusworks-public/ + + true + + + true + + + + \ No newline at end of file