From 6ac28af8a09c9d19d877fe5a80fe56c938093021 Mon Sep 17 00:00:00 2001 From: Ivan Smirnov <52702497+ivanmolodec@users.noreply.github.com> Date: Fri, 1 Mar 2024 16:36:11 +0300 Subject: [PATCH] Edt transformation fix (#2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Обработка ошибки EDT: утилита ring не повышает в командной строке errorlevel, поэтому при ошибке в ринге шаг не считается проваленным. Изменил метод cmd для возможности проверить текст отработки ring и дальнейшего выявления из текста ошибки --- .../pulsar/jenkins/library/IStepExecutor.groovy | 10 ++++++---- .../pulsar/jenkins/library/StepExecutor.groovy | 12 ++++++------ src/ru/pulsar/jenkins/library/steps/Cmd.groovy | 16 +++++++++++----- .../DesignerToEdtFormatTransformation.groovy | 7 +++++-- vars/cmd.groovy | 4 ++-- 5 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/ru/pulsar/jenkins/library/IStepExecutor.groovy b/src/ru/pulsar/jenkins/library/IStepExecutor.groovy index 4e15fe6..b71d0ff 100644 --- a/src/ru/pulsar/jenkins/library/IStepExecutor.groovy +++ b/src/ru/pulsar/jenkins/library/IStepExecutor.groovy @@ -12,9 +12,9 @@ interface IStepExecutor { boolean isUnix() - int sh(String script, boolean returnStatus, String encoding) + def sh(String script, boolean returnStatus, boolean returnStdout, String encoding) - int bat(String script, boolean returnStatus, String encoding) + def bat(String script, boolean returnStatus, boolean returnStdout, String encoding) String libraryResource(String path) @@ -30,9 +30,11 @@ interface IStepExecutor { void echo(message) - int cmd(String script, boolean returnStatus) + def cmd(String script, boolean returnStatus, boolean returnStdout) - int cmd(String script) + def cmd(String script, boolean returnStatus) + + def cmd(String script) void tool(String toolName) diff --git a/src/ru/pulsar/jenkins/library/StepExecutor.groovy b/src/ru/pulsar/jenkins/library/StepExecutor.groovy index 59030cf..e02585f 100644 --- a/src/ru/pulsar/jenkins/library/StepExecutor.groovy +++ b/src/ru/pulsar/jenkins/library/StepExecutor.groovy @@ -23,13 +23,13 @@ class StepExecutor implements IStepExecutor { } @Override - int sh(String script, boolean returnStatus, String encoding) { - steps.sh script: script, returnStatus: returnStatus, encoding: encoding + def sh(String script, boolean returnStatus, boolean returnStdout, String encoding) { + steps.sh script: script, returnStatus: returnStatus, returnStdout: returnStdout, encoding: encoding } @Override - int bat(String script, boolean returnStatus, String encoding) { - steps.bat script: script, returnStatus: returnStatus, encoding: encoding + def bat(String script, boolean returnStatus, boolean returnStdout, String encoding) { + steps.bat script: script, returnStatus: returnStatus, returnStdout: returnStdout, encoding: encoding } @Override @@ -58,8 +58,8 @@ class StepExecutor implements IStepExecutor { } @Override - int cmd(String script, boolean returnStatus = false) { - return steps.cmd(script, returnStatus) + def cmd(String script, boolean returnStatus = false, boolean returnStdout = false) { + return steps.cmd(script, returnStatus, returnStdout) } @Override diff --git a/src/ru/pulsar/jenkins/library/steps/Cmd.groovy b/src/ru/pulsar/jenkins/library/steps/Cmd.groovy index f203752..15ea439 100644 --- a/src/ru/pulsar/jenkins/library/steps/Cmd.groovy +++ b/src/ru/pulsar/jenkins/library/steps/Cmd.groovy @@ -7,22 +7,28 @@ class Cmd implements Serializable { private String script; private boolean returnStatus + private boolean returnStdout private String encoding = 'UTF-8' - Cmd(String script, boolean returnStatus = false) { + Cmd(String script, boolean returnStatus = false, boolean returnStdout = false) { this.script = script this.returnStatus = returnStatus + this.returnStdout = returnStdout }; - int run() { + def run() { IStepExecutor steps = ContextRegistry.getContext().getStepExecutor() - int returnValue + def returnValue + + if (returnStatus & returnStdout) { + return "returnStatus and returnStdout are not supported at the same time" + } if (steps.isUnix()) { - returnValue = steps.sh("$script", returnStatus, encoding) + returnValue = steps.sh("$script", returnStatus, returnStdout, encoding) } else { - returnValue = steps.bat("chcp 65001 > nul \n$script", returnStatus, encoding) + returnValue = steps.bat("chcp 65001 > nul \n$script", returnStatus, returnStdout, encoding) } return returnValue diff --git a/src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy b/src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy index 8ff0073..d06ca93 100644 --- a/src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy +++ b/src/ru/pulsar/jenkins/library/steps/DesignerToEdtFormatTransformation.groovy @@ -34,7 +34,7 @@ class DesignerToEdtFormatTransformation implements Serializable { def env = steps.env(); - def workspaceDir = FileUtils.getFilePath("$env.WORKSPACE/$WORKSPACE") + String workspaceDir = FileUtils.getFilePath("$env.WORKSPACE/$WORKSPACE").getRemote() def srcDir = config.srcDir def configurationRoot = FileUtils.getFilePath("$env.WORKSPACE/$srcDir") def edtVersionForRing = EDT.ringModule(config) @@ -47,7 +47,10 @@ class DesignerToEdtFormatTransformation implements Serializable { def ringOpts = [Constants.DEFAULT_RING_OPTS] steps.withEnv(ringOpts) { - steps.cmd(ringCommand) + String ringMessage = steps.cmd(ringCommand, false, true) + if (ringMessage.contains("error")) { + steps.error(ringMessage) + } } steps.zip(WORKSPACE, WORKSPACE_ZIP) diff --git a/vars/cmd.groovy b/vars/cmd.groovy index 692b019..b882092 100644 --- a/vars/cmd.groovy +++ b/vars/cmd.groovy @@ -1,9 +1,9 @@ import ru.pulsar.jenkins.library.steps.Cmd import ru.pulsar.jenkins.library.ioc.ContextRegistry -int call(String script, boolean returnStatus = false) { +int call(String script, boolean returnStatus = false, boolean returnStdout = false ) { ContextRegistry.registerDefaultContext(this) - Cmd cmd = new Cmd(script, returnStatus) + Cmd cmd = new Cmd(script, returnStatus, returnStdout) return cmd.run() }