1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-03-03 15:02:35 +02:00

Merge pull request #142 from alejandraferreirovidal/addMultipleVersionsVerification

Add multiple versions verification
This commit is contained in:
Alejandra Ferreiro Vidal 2018-05-24 17:06:17 +02:00 committed by GitHub
commit 8b374bcfb6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 97 additions and 12 deletions

View File

@ -5,7 +5,7 @@ import hudson.AbortException
class VersionUtils implements Serializable {
def static verifyVersion(script, name, executable, version, versionOption) {
def static verifyVersion(script, name, executable, String version, versionOption) {
script.echo "Verifying $name version $version or compatible version."
@ -22,4 +22,27 @@ class VersionUtils implements Serializable {
}
script.echo "Verification success. $name version ${installedVersion.toString()} is installed."
}
def static verifyVersion(script, name, executable, Map versions, versionOption) {
def toolVersion
try {
toolVersion = script.sh returnStdout: true, script: """#!/bin/bash
$executable $versionOption"""
} catch(AbortException e) {
throw new AbortException("The verification of $name failed. Please check '$executable'. $e.message.")
}
for (def entry : versions) {
if (toolVersion.contains(entry.getKey())) {
def installedVersion = new Version(toolVersion)
def expectedVersion = entry.getValue()
script.echo "Verifying $name version $expectedVersion or compatible version."
if (!installedVersion.isCompatibleVersion(new Version(expectedVersion))) {
throw new AbortException("The installed version of $name is ${installedVersion.toString()}. Please install version $expectedVersion or a compatible version.")
}
script.echo "Verification success. $name version ${installedVersion.toString()} is installed."
}
}
script.echo "Verification success."
}
}

View File

@ -15,16 +15,29 @@ class ToolDescriptor implements Serializable {
final stepConfigurationKey
final executablePath
final executableName
final version
final singleVersion
final multipleVersions
final versionOption
ToolDescriptor(name, environmentKey, stepConfigurationKey, executablePath, executableName, version, versionOption) {
ToolDescriptor(name, environmentKey, stepConfigurationKey, executablePath, executableName, String singleVersion, versionOption) {
this.name = name
this.environmentKey = environmentKey
this.stepConfigurationKey = stepConfigurationKey
this.executablePath = executablePath
this.executableName = executableName
this.version = version
this.singleVersion = singleVersion
this.multipleVersions = [:]
this.versionOption = versionOption
}
ToolDescriptor(name, environmentKey, stepConfigurationKey, executablePath, executableName, Map multipleVersions, versionOption) {
this.name = name
this.environmentKey = environmentKey
this.stepConfigurationKey = stepConfigurationKey
this.executablePath = executablePath
this.executableName = executableName
this.singleVersion = ''
this.multipleVersions = multipleVersions
this.versionOption = versionOption
}
@ -95,7 +108,8 @@ class ToolDescriptor implements Serializable {
def verifyVersion(script, configuration) {
def executable = getToolExecutable(script, configuration, false)
VersionUtils.verifyVersion(script, name, executable, version, versionOption)
if (singleVersion) VersionUtils.verifyVersion(script, name, executable, singleVersion, versionOption)
if (multipleVersions) VersionUtils.verifyVersion(script, name, executable, multipleVersions, versionOption)
}
def getMessage() {

View File

@ -156,6 +156,48 @@ class ToolDescriptorTest extends BasePipelineTest {
tool.verifyVersion(script, configuration)
}
@Test
void verifyToolVersion_WithMultipleVersionsTest() {
def neoVersions = ['neo-java-web': '3.39.10', 'neo-javaee6-wp': '2.132.6', 'neo-javaee7-wp': '1.21.13']
def tool = new ToolDescriptor('SAP Cloud Platform Console Client', 'NEO_HOME', 'neoHome', '/tools/', 'neo.sh', neoVersions, 'version')
helper.registerAllowedMethod('sh', [Map], { Map m -> getVersion(m) })
tool.verifyVersion(script, configuration)
assert jlr.log.contains("Verifying SAP Cloud Platform Console Client version 3.39.10 or compatible version.")
assert jlr.log.contains("Verification success. SAP Cloud Platform Console Client version 3.39.10 is installed.")
}
@Test
void verifyToolVersion_WithMultipleVersions_FailedTest() {
def neoVersions = ['neo-java-web': '3.39.10', 'neo-javaee6-wp': '2.132.6', 'neo-javaee7-wp': '1.21.13']
def tool = new ToolDescriptor('SAP Cloud Platform Console Client', 'NEO_HOME', 'neoHome', '/tools/', 'neo.sh', neoVersions, 'version')
thrown.expect(AbortException)
thrown.expectMessage("The verification of SAP Cloud Platform Console Client failed. Please check 'neo.sh'. script returned exit code 127.")
helper.registerAllowedMethod('sh', [Map], { Map m -> getVersionFailed(m) })
tool.verifyVersion(script, configuration)
}
@Test
void verifyToolVersion_WithMultipleVersions_IncompatibleVersionTest() {
def neoVersions = ['neo-java-web': '3.39.10', 'neo-javaee6-wp': '2.132.6', 'neo-javaee7-wp': '1.21.13']
def tool = new ToolDescriptor('SAP Cloud Platform Console Client', 'NEO_HOME', 'neoHome', '/tools/', 'neo.sh', neoVersions, 'version')
thrown.expect(AbortException)
thrown.expectMessage("The installed version of SAP Cloud Platform Console Client is 1.0.5. Please install version 3.39.10 or a compatible version.")
helper.registerAllowedMethod('sh', [Map], { Map m -> getIncompatibleVersion(m) })
tool.verifyVersion(script, configuration)
}
private getEnvVars(Map m) {
@ -179,8 +221,10 @@ class ToolDescriptorTest extends BasePipelineTest {
private getVersion(Map m) {
if(m.script.contains('version')) {
return '3.39.10'
if(m.script.contains('neo.sh version')) {
return '''SAP Cloud Platform Console Client
SDK version : 3.39.10
Runtime : neo-java-web'''
} else {
return getNoEnvVars(m)
}
@ -188,7 +232,7 @@ class ToolDescriptorTest extends BasePipelineTest {
private getVersionFailed(Map m) {
if(m.script.contains('version')) {
if(m.script.contains('neo.sh version')) {
throw new AbortException('script returned exit code 127')
} else {
return getNoEnvVars(m)
@ -197,8 +241,10 @@ class ToolDescriptorTest extends BasePipelineTest {
private getIncompatibleVersion(Map m) {
if(m.script.contains('version')) {
return '1.0.5'
if(m.script.contains('neo.sh version')) {
return '''SAP Cloud Platform Console Client
SDK version : 1.0.5
Runtime : neo-java-web'''
} else {
return getNoEnvVars(m)
}

View File

@ -146,7 +146,8 @@ def call(parameters = [:]) {
deployAccount = utils.getMandatoryParameter(configuration, 'account')
}
def neo = new ToolDescriptor('SAP Cloud Platform Console Client', 'NEO_HOME', 'neoHome', '/tools/', 'neo.sh', '3.39.10', 'version')
def neoVersions = ['neo-java-web': '3.39.10', 'neo-javaee6-wp': '2.132.6', 'neo-javaee7-wp': '1.21.13']
def neo = new ToolDescriptor('SAP Cloud Platform Console Client', 'NEO_HOME', 'neoHome', '/tools/', 'neo.sh', neoVersions, 'version')
def neoExecutable = neo.getToolExecutable(this, configuration)
def neoDeployScript

View File

@ -31,7 +31,8 @@ def call(Map parameters = [:]) {
mta.verifyVersion(this, [mtaJarLocation: home])
return
case 'neo':
def neo = new ToolDescriptor('SAP Cloud Platform Console Client', 'NEO_HOME', 'neoHome', '/tools/', 'neo.sh', '3.39.10', 'version')
def neoVersions = ['neo-java-web': '3.39.10', 'neo-javaee6-wp': '2.132.6', 'neo-javaee7-wp': '1.21.13']
def neo = new ToolDescriptor('SAP Cloud Platform Console Client', 'NEO_HOME', 'neoHome', '/tools/', 'neo.sh', neoVersions, 'version')
neo.verifyVersion(this, [neoHome: home])
return
case 'cm':