From 46d6261c480e11c65fc42bd8d70ff2c3c1e0f0fc Mon Sep 17 00:00:00 2001 From: Joaquim Alvino de Mesquita Neto Date: Wed, 13 Dec 2023 16:50:49 +0100 Subject: [PATCH] test --- .../wooga/jenkins/pipeline/check/Nodes.groovy | 56 +++++++++++++++++++ .../jenkins/pipeline/config/GradleArgs.groovy | 2 +- .../jenkins/pipeline/model/EnvVars.groovy | 43 +++++++------- .../jenkins/pipeline/model/Gradle.groovy | 2 + test/groovy/scripts/GradleWrapperSpec.groovy | 10 ++-- vars/gradleWrapper.groovy | 6 +- 6 files changed, 86 insertions(+), 33 deletions(-) create mode 100644 src/net/wooga/jenkins/pipeline/check/Nodes.groovy diff --git a/src/net/wooga/jenkins/pipeline/check/Nodes.groovy b/src/net/wooga/jenkins/pipeline/check/Nodes.groovy new file mode 100644 index 0000000..5cdc41e --- /dev/null +++ b/src/net/wooga/jenkins/pipeline/check/Nodes.groovy @@ -0,0 +1,56 @@ +package net.wooga.jenkins.pipeline.check + +import net.wooga.jenkins.pipeline.check.steps.PackedStep +import net.wooga.jenkins.pipeline.config.Platform +import net.wooga.jenkins.pipeline.model.Docker + +class Nodes { + + private Object jenkins + private Docker docker + private EnclosureCreator enclosureCreator + + Nodes(Object jenkins, Docker docker, EnclosureCreator enclosureCreator) { + this.jenkins = jenkins + this.docker = docker + this.enclosureCreator = enclosureCreator + } + + def withDocker(Platform platform, PackedStep mainCls, Closure catchCls = {throw it}, PackedStep finallyCls = {}) { + return enclosureCreator.atlasNode(platform.name, + platform.generateTestLabelsString(), + platform.testEnvironment, + withCheckout(platform.checkoutDirectory, { docker.runOnImage(mainCls) }), + catchCls, + withCleanup(platform.clearWs, finallyCls) + ) + } + + def simple(Platform platform, PackedStep mainClosure, Closure catchCls = {throw it}, PackedStep finallyCls = {}) { + return enclosureCreator.atlasNode(platform.name, + platform.generateTestLabelsString(), + platform.testEnvironment, + withCheckout(platform.checkoutDirectory, mainClosure), + catchCls, + withCleanup(platform.clearWs, finallyCls) + ) + } + + private PackedStep withCheckout(String checkoutDir, PackedStep step) { + return { + jenkins.dir(checkoutDir) { + jenkins.checkout(jenkins.scm) + } + step() + } + } + + private PackedStep withCleanup(boolean hasCleanup, PackedStep step) { + return { + step() + if(hasCleanup) { + jenkins.cleanWs() + } + } + } +} diff --git a/src/net/wooga/jenkins/pipeline/config/GradleArgs.groovy b/src/net/wooga/jenkins/pipeline/config/GradleArgs.groovy index 6fad31c..0b90650 100644 --- a/src/net/wooga/jenkins/pipeline/config/GradleArgs.groovy +++ b/src/net/wooga/jenkins/pipeline/config/GradleArgs.groovy @@ -12,7 +12,7 @@ class GradleArgs { static GradleArgs fromConfigMap(Map config) { - def environment = new EnvVars((config.gradleEnvironment ?: [:]) as Map) + def environment = EnvVars.fromList((config.gradleEnvironment ?: []) as List) def showStackTraces = (config.showStackTrace ?: false) as boolean def refreshDependencies = (config.refreshDependencies ?: false) as boolean return new GradleArgs(environment, config.logLevel as String, showStackTraces, refreshDependencies) diff --git a/src/net/wooga/jenkins/pipeline/model/EnvVars.groovy b/src/net/wooga/jenkins/pipeline/model/EnvVars.groovy index 5a24a45..e692390 100644 --- a/src/net/wooga/jenkins/pipeline/model/EnvVars.groovy +++ b/src/net/wooga/jenkins/pipeline/model/EnvVars.groovy @@ -2,39 +2,34 @@ package net.wooga.jenkins.pipeline.model class EnvVars { - final Map> environment + final List environment - EnvVars(Map environment) { - this.environment = lazifyMap(environment) + static EnvVars fromList(List env) { + return new EnvVars(env) } - static Map> lazifyMap(Map env) { - Map> lazyMap = [:] - for(String key : env.keySet()) { - if(env[key] instanceof Closure) { - lazyMap.put(key, env[key]) - } else { - def value = env.get(key) - lazyMap.put(key, { -> value }) - } - } - return lazyMap + EnvVars(List environment) { + this.environment = environment } + List resolveAsStrings() { - List result = [] - for(String key : environment.keySet()) { - Closure lazyValue = environment[key] - def value = lazyValue?.call() - if(value != null) { - result += ["$key=$value"] - } + return environment.collect { + resolveString(it) + } + } + + def resolveString(Object obj) { + if(obj instanceof Closure) { + return obj.call().toString() } - return result + return obj.toString() } - Closure getAt(String key) { - environment[key] + Object getAt(String key) { + environment.collect{resolveString(it).split("=")}.find{ + it[0] == key + } } } diff --git a/src/net/wooga/jenkins/pipeline/model/Gradle.groovy b/src/net/wooga/jenkins/pipeline/model/Gradle.groovy index 896120f..7c1b6f3 100644 --- a/src/net/wooga/jenkins/pipeline/model/Gradle.groovy +++ b/src/net/wooga/jenkins/pipeline/model/Gradle.groovy @@ -31,7 +31,9 @@ class Gradle { */ def wrapper(String command, Boolean returnStatus = false, Boolean returnStdout = false) { + jenkins.echo "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" jenkins.withEnv(environment.resolveAsStrings()) { + jenkins.echo "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" if (jenkins.isUnix()) { return jenkins.sh(script: "./gradlew ${formatCommand(command)}", returnStdout: returnStdout, returnStatus: returnStatus) } else { diff --git a/test/groovy/scripts/GradleWrapperSpec.groovy b/test/groovy/scripts/GradleWrapperSpec.groovy index b5f6186..c4d5d33 100644 --- a/test/groovy/scripts/GradleWrapperSpec.groovy +++ b/test/groovy/scripts/GradleWrapperSpec.groovy @@ -21,11 +21,11 @@ class GradleWrapperSpec extends DeclarativeJenkinsSpec { usedEnvironments.last() == expectedEnv where: - givenEnv | expectedEnv - [:] | [:] - [ENV: "eager", EAGER: "eager"] | ["ENV": "eager", "EAGER": "eager"] - [EAGER: "eager", LAZY: { "lazy" }] | ["EAGER": "eager", "LAZY": "lazy"] - [ENV: { "lazy" }, LAZY: { "lazy" }] | ["ENV": "lazy", "LAZY": "lazy"] + givenEnv | expectedEnv + [:] | [:] + ["ENV=eager", "EAGER=eager"] | ["ENV": "eager", "EAGER": "eager"] + ["EAGER=eager", { "LAZY=lazy" }] | ["EAGER": "eager", "LAZY": "lazy"] + [{ "ENV=lazy" }, { "LAZY=lazy" }] | ["ENV": "lazy", "LAZY": "lazy"] } @Unroll diff --git a/vars/gradleWrapper.groovy b/vars/gradleWrapper.groovy index 488cebb..4167286 100644 --- a/vars/gradleWrapper.groovy +++ b/vars/gradleWrapper.groovy @@ -5,9 +5,9 @@ import net.wooga.jenkins.pipeline.model.Gradle /** * execute gradlew or gradlew.bat based on current os */ -def call(String command, Boolean returnStatus = false, Boolean returnStdout = false, Map environment=[:]) { +def call(String command, Boolean returnStatus = false, Boolean returnStdout = false, List environment=[]) { def gradle = Gradle.fromJenkins(this, - new EnvVars(environment), + EnvVars.fromList(environment), params.LOG_LEVEL?: env.LOG_LEVEL as String, params.STACK_TRACE? params.STACK_TRACE as Boolean : false, params.REFRESH_DEPENDENCIES? params.REFRESH_DEPENDENCIES as Boolean : false) @@ -18,7 +18,7 @@ def call(Map args) { call(args.command?.toString(), (args.returnStatus?: false) as Boolean, (args.returnStdout?: false) as Boolean, - (args.environment?: [:]) as Map + (args.environment?: []) as List ) }