Fixed Jenkinsfile and pom
All checks were successful
Locusworks Team/crypto/pipeline/head This commit looks good

This commit is contained in:
Isaac Parenteau
2020-05-22 20:09:19 +01:00
parent 48f07b1c00
commit f691d69d44
2 changed files with 103 additions and 70 deletions

136
Jenkinsfile vendored
View File

@ -1,5 +1,16 @@
#!groovy #!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()
@ -23,7 +34,8 @@ def init() {
build_url = env.BUILD_URL build_url = env.BUILD_URL
job_name = "${env.JOB_NAME}" job_name = "${env.JOB_NAME}"
branch_name = env.BRANCH_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 // execute the branch type specific pipeline code
try { try {
@ -31,52 +43,44 @@ def init() {
if (branch_name.indexOf('release/')==0) build_type='release' if (branch_name.indexOf('release/')==0) build_type='release'
if (branch_name.indexOf('feature/')==0) build_type='feature' if (branch_name.indexOf('feature/')==0) build_type='feature'
if (branch_name.indexOf('develop')==0) build_type='develop' 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('master')==0) build_type='master'
if (branch_name.indexOf('hotfix/')==0) build_type='hotfix'
if (branch_name.indexOf('bugfix/')==0) build_type='bugfix'
switch(build_type) { // common pipeline elements
case ~/feature/: node('master') {
case ~/hotfix/: Initialize()
case ~/bugfix/: SetVersion(build_type)
case ~/master/: print_vars() // after SetVersion - all variables now defined
case ~/develop/: set_result('INPROGRESS')
CommonBuild(); Build() // builds database via flyway migration
break; }
case ~/release/:
CommonBuild(); if (branch_name.indexOf('develop')==0) {
Deploy(); node('master') {
break; Deploy();
default: }
throw "unsupported branch type: ${branch_name}" } else if (branch_name.indexOf('release/')==0) {
node('master') {
Deploy();
}
} }
node('master') { node('master') {
set_result('SUCCESS') set_result('SUCCESS')
} }
} catch (err) { } catch (err) {
node() { node() {
set_result('FAILURE') set_result('FAILURE')
} }
throw err 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() { def Build() {
stage ('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]) step([$class: 'ArtifactArchiver', artifacts: '**/target/*.jar', fingerprint: true])
} }
} }
@ -92,10 +96,8 @@ def Initialize() {
} }
def Deploy() { def Deploy() {
node('master') { stage ('deploy') {
stage ('deploy') { mvn "deploy -DskipTests=true -Dbuild.number=${build_number} -Dbuild.revision=${git_commit}"
mvn_alt("deploy -DskipTests=true -Dbuild.number=${build_number} -Dbuild.revision=${git_commit}")
}
} }
} }
@ -105,17 +107,19 @@ def getSha1() {
return sha1 return sha1
} }
def mvn_initial(args) { def mvn(args) {
mvn_alt(args) withMaven(
maven: 'maven-3.6.1',
globalMavenSettingsConfig: 'locusworks-settings'
) {
sh "mvn ${args}"
}
} }
def mvn_alt(args) { def mvn_initial(args) {
// add maven tools to path before calling maven mvn(args)
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 set_result(status) { def set_result(status) {
@ -130,10 +134,13 @@ def set_result(status) {
} else { } else {
error ("unknown status") 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) { def notify_bitbucket(state) {
echo "notify bitbucket, state = $state, commit: ${git_commit}"
} }
def print_vars() { def print_vars() {
@ -146,34 +153,33 @@ def print_vars() {
echo "display_name = ${currentBuild.displayName}" echo "display_name = ${currentBuild.displayName}"
echo "version = ${version}" echo "version = ${version}"
echo "git_commit = ${git_commit}" echo "git_commit = ${git_commit}"
} }
def SetVersion( v ) { def SetVersion( v ) {
stage ('set version') { stage ('set version') {
echo "set version ${v}" echo "set version ${v}"
branch_name_base = (branch_name =~ /([^\/]+$)/)[0][0] branch_name_base = (branch_name =~ /([^\/]+$)/)[0][0]
if ( v == 'release' ) {
switch(build_type) { // for release branches, where the branch is named "release/1.2.3",
case ~/develop/: // derive the version and display name derive from the numeric suffix and append the build number
version = build_number + '-SNAPSHOT' // 3.2.1.100
currentBuild.displayName = version version = branch_name_base + "." + build_number + "-RELEASE";
break; //version = branch_name.substring('release/'.length()) + "." + build_number
case ~/release/: currentBuild.displayName = version
// for release branches, where the branch is named "release/1.2.3", } else if (v == 'develop') {
// derive the version and display name derive from the numeric suffix and append the build number version = branch_name_base + "." + build_number + "-SNAPSHOT";
// 3.2.1.100 currentBuild.displayName = version
version = branch_name_base + '.' + build_number + '-RELEASE' } else {
currentBuild.displayName = version // for all other branches the version number is 0 with an appended build number
break; // and for the display name use the jenkins default #n and add the branch name
default: // #101 - feature/user/foo
// for all other branches the version number is 0 with an appended build number //version = '0.' + build_number
// and for the display name use the jenkins default #n and add the branch name version = branch_name_base + "." + build_number
version = branch_name_base + "." + build_number currentBuild.displayName = "#" + build_number + " - " + branch_name_base
currentBuild.displayName = "#" + build_number + " - " + branch_name_base
} }
display_name = currentBuild.displayName display_name = currentBuild.displayName
mvn_initial("versions:set -DnewVersion=${version}") mvn_initial "versions:set -DnewVersion=${version}"
} }
} }

33
pom.xml
View File

@ -15,14 +15,14 @@
</organization> </organization>
<scm> <scm>
<url>git@gitea.locusworks.net:Locusworks/pseudo-bot.git</url> <url>git@bitbucket.org:locus2k/crypto.git</url>
</scm> </scm>
<properties> <properties>
<maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.target>1.8</maven.compiler.target>
<nexus.repo>http://nexus.locusworks.net</nexus.repo>
<license-maven-plugin.version>3.0</license-maven-plugin.version> <license-maven-plugin.version>3.0</license-maven-plugin.version>
<nexus.repo>https://nexus.locusworks.net</nexus.repo>
</properties> </properties>
<build> <build>
@ -108,7 +108,7 @@
<dependency> <dependency>
<groupId>commons-codec</groupId> <groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId> <artifactId>commons-codec</artifactId>
<version>1.13</version> <version>1.14</version>
</dependency> </dependency>
@ -139,5 +139,32 @@
</repository> </repository>
</distributionManagement> </distributionManagement>
<repositories>
<repository>
<id>locusworks-public</id>
<name>locusworks-public</name>
<url>${nexus.repo}/repository/locusworks-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>locusworks-public</id>
<url>${nexus.repo}/repository/locusworks-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project> </project>