1
0
mirror of https://github.com/firstBitMarksistskaya/jenkins-lib.git synced 2024-12-04 10:34:42 +02:00

Merge pull request #113 from ivanmolodec/develop

This commit is contained in:
Nikita Fedkin 2024-03-09 15:32:52 +01:00 committed by GitHub
commit ad528ca590
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 90 additions and 45 deletions

View File

@ -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,13 @@ 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)
def ringCommand(String script)
void tool(String toolName)

View File

@ -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,13 @@ 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
def ringCommand(String script) {
return steps.ringCommand(script)
}
@Override

View File

@ -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) {
steps.error("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

View File

@ -4,7 +4,6 @@ package ru.pulsar.jenkins.library.steps
import ru.pulsar.jenkins.library.IStepExecutor
import ru.pulsar.jenkins.library.configuration.JobConfiguration
import ru.pulsar.jenkins.library.ioc.ContextRegistry
import ru.pulsar.jenkins.library.utils.Constants
import ru.pulsar.jenkins.library.utils.EDT
import ru.pulsar.jenkins.library.utils.FileUtils
import ru.pulsar.jenkins.library.utils.Logger
@ -45,10 +44,7 @@ class DesignerToEdtFormatTransformation implements Serializable {
def ringCommand = "ring $edtVersionForRing workspace import --configuration-files \"$configurationRoot\" --project-name $PROJECT_NAME --workspace-location \"$workspaceDir\""
def ringOpts = [Constants.DEFAULT_RING_OPTS]
steps.withEnv(ringOpts) {
steps.cmd(ringCommand)
}
steps.ringCommand(ringCommand)
steps.zip(WORKSPACE, WORKSPACE_ZIP)
steps.stash(WORKSPACE_ZIP_STASH, WORKSPACE_ZIP)

View File

@ -5,7 +5,6 @@ import ru.pulsar.jenkins.library.IStepExecutor
import ru.pulsar.jenkins.library.configuration.JobConfiguration
import ru.pulsar.jenkins.library.configuration.SourceFormat
import ru.pulsar.jenkins.library.ioc.ContextRegistry
import ru.pulsar.jenkins.library.utils.Constants
import ru.pulsar.jenkins.library.utils.EDT
import ru.pulsar.jenkins.library.utils.FileUtils
import ru.pulsar.jenkins.library.utils.Logger
@ -48,10 +47,7 @@ class EdtToDesignerFormatTransformation implements Serializable {
def ringCommand = "ring $edtVersionForRing workspace export --workspace-location \"$workspaceDir\" --project \"$projectDir\" --configuration-files \"$configurationRoot\""
def ringOpts = [Constants.DEFAULT_RING_OPTS]
steps.withEnv(ringOpts) {
steps.cmd(ringCommand)
}
steps.ringCommand(ringCommand)
steps.zip(CONFIGURATION_DIR, CONFIGURATION_ZIP)
steps.stash(CONFIGURATION_ZIP_STASH, CONFIGURATION_ZIP)

View File

@ -4,7 +4,6 @@ import ru.pulsar.jenkins.library.IStepExecutor
import ru.pulsar.jenkins.library.configuration.JobConfiguration
import ru.pulsar.jenkins.library.configuration.SourceFormat
import ru.pulsar.jenkins.library.ioc.ContextRegistry
import ru.pulsar.jenkins.library.utils.Constants
import ru.pulsar.jenkins.library.utils.EDT
import ru.pulsar.jenkins.library.utils.FileUtils
import ru.pulsar.jenkins.library.utils.Logger
@ -52,11 +51,8 @@ class EdtValidate implements Serializable {
Logger.println("Выполнение валидации EDT")
def ringCommand = "ring $edtVersionForRing workspace validate --workspace-location \"$workspaceLocation\" --file \"$resultFile\" $projectList"
def ringOpts = [Constants.DEFAULT_RING_OPTS]
steps.withEnv(ringOpts) {
steps.catchError {
steps.cmd(ringCommand)
}
steps.catchError {
steps.ringCommand(ringCommand)
}
steps.archiveArtifacts("$DesignerToEdtFormatTransformation.WORKSPACE/.metadata/.log")

View File

@ -0,0 +1,30 @@
package ru.pulsar.jenkins.library.steps
import ru.pulsar.jenkins.library.IStepExecutor
import ru.pulsar.jenkins.library.ioc.ContextRegistry
import ru.pulsar.jenkins.library.utils.Constants
class RingCommand implements Serializable {
private String script
private boolean returnStatus
private boolean returnStdout
RingCommand(String script) {
this.script = script
this.returnStatus = false
this.returnStdout = true
};
def run() {
IStepExecutor steps = ContextRegistry.getContext().getStepExecutor()
def ringOpts = [Constants.DEFAULT_RING_OPTS]
steps.withEnv(ringOpts) {
String ringMessage = steps.cmd(script, returnStatus, returnStdout)
if (ringMessage.contains("error")) {
steps.error(ringMessage)
}
}
}
}

View File

@ -29,14 +29,17 @@ class CmdTest {
final String script = "echo hello";
Cmd cmd = new Cmd(script);
when(steps.bat(anyString(), anyBoolean(), anyBoolean(), anyString())).thenReturn(0);
when(steps.sh(anyString(), anyBoolean(), anyBoolean(), anyString())).thenReturn(0);
// when
int run = cmd.run();
Object run = cmd.run();
// then
verify(steps).isUnix();
assertThat(steps).satisfiesAnyOf(
steps -> verify(steps).bat(contains(script), eq(false), anyString()),
steps -> verify(steps).sh(contains(script), eq(false), anyString())
steps -> verify(steps).bat(contains(script), eq(false), eq(false), anyString()),
steps -> verify(steps).sh(contains(script), eq(false), eq(false), anyString())
);
assertThat(run).isEqualTo(0);
@ -49,8 +52,8 @@ class CmdTest {
Cmd cmd = new Cmd(script);
String thrownText = "failed";
when(steps.bat(anyString(), anyBoolean(), anyString())).thenThrow(new Error(thrownText));
when(steps.sh(anyString(), anyBoolean(), anyString())).thenThrow(new Error(thrownText));
when(steps.bat(anyString(), anyBoolean(), anyBoolean(), anyString())).thenThrow(new Error(thrownText));
when(steps.sh(anyString(), anyBoolean(), anyBoolean(), anyString())).thenThrow(new Error(thrownText));
// when
Throwable thrown = catchThrowable(cmd::run);
@ -59,8 +62,8 @@ class CmdTest {
// then
verify(steps).isUnix();
assertThat(steps).satisfiesAnyOf(
steps -> verify(steps).bat(contains(script), eq(false), anyString()),
steps -> verify(steps).sh(contains(script), eq(false), anyString())
steps -> verify(steps).bat(contains(script), eq(false), eq(false), anyString()),
steps -> verify(steps).sh(contains(script), eq(false), eq(false), anyString())
);
}
@ -70,17 +73,17 @@ class CmdTest {
final String script = "false";
Cmd cmd = new Cmd(script, true);
when(steps.bat(anyString(), anyBoolean(), anyString())).thenReturn(1);
when(steps.sh(anyString(), anyBoolean(), anyString())).thenReturn(1);
when(steps.bat(anyString(), anyBoolean(), anyBoolean(), anyString())).thenReturn(1);
when(steps.sh(anyString(), anyBoolean(), anyBoolean(), anyString())).thenReturn(1);
// when
int run = cmd.run();
Object run = cmd.run();
// then
verify(steps).isUnix();
assertThat(steps).satisfiesAnyOf(
steps -> verify(steps).bat(contains(script), eq(true), anyString()),
steps -> verify(steps).sh(contains(script), eq(true), anyString())
steps -> verify(steps).bat(contains(script), eq(true), eq(false), anyString()),
steps -> verify(steps).sh(contains(script), eq(true), eq(false), anyString())
);
assertThat(run).isEqualTo(1);

View File

@ -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) {
def 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()
}

9
vars/ringCommand.groovy Normal file
View File

@ -0,0 +1,9 @@
import ru.pulsar.jenkins.library.ioc.ContextRegistry
import ru.pulsar.jenkins.library.steps.RingCommand
def call(String script ) {
ContextRegistry.registerDefaultContext(this)
RingCommand ringCommand = new RingCommand(script)
return ringCommand.run()
}