Aggiunto parametro StartsIn per cambiare cartella prima dell'avvio della build
Some checks failed
Jenkins Security Scan / security-scan (push) Has been cancelled
/ update_release_draft (push) Has been cancelled

This commit is contained in:
Giuseppe Scorrano 2024-11-21 13:20:36 +01:00
parent 1b255ef0af
commit f06cc0c814
5 changed files with 37 additions and 24 deletions

View File

@ -32,7 +32,7 @@
</scm>
<properties>
<revision>1.0.26</revision>
<revision>1.0.27</revision>
<changelist>-SNAPSHOT</changelist>
<!-- https://www.jenkins.io/doc/developer/plugin-development/choosing-jenkins-baseline/ -->

View File

@ -8,22 +8,18 @@ import hudson.tasks.Builder;
import hudson.tools.ToolInstallation;
import jenkins.tasks.SimpleBuildStep;
import org.jenkinsci.Symbol;
import org.jenkinsci.plugins.workflow.steps.Step;
import org.jenkinsci.plugins.workflow.steps.StepContext;
import org.jenkinsci.plugins.workflow.steps.StepDescriptor;
import org.jenkinsci.plugins.workflow.steps.StepExecution;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.DataBoundSetter;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
public class PBAutoBuildStep extends Builder implements SimpleBuildStep {
public class PBAutoBuildBuilder extends Builder implements SimpleBuildStep {
/**
* GUI fields
*/
private String pbAutoBuildName;
private String startsIn;
private String cmdLineArgs;
@ -35,7 +31,7 @@ public class PBAutoBuildStep extends Builder implements SimpleBuildStep {
* @param cmdLineArgs Whitespace separated list of command line arguments for pb autobuild utility
*/
@DataBoundConstructor
public PBAutoBuildStep(String pbAutoBuildName, String cmdLineArgs) {
public PBAutoBuildBuilder(String pbAutoBuildName, String cmdLineArgs) {
this.pbAutoBuildName = pbAutoBuildName;
this.cmdLineArgs = cmdLineArgs;
}
@ -58,6 +54,15 @@ public class PBAutoBuildStep extends Builder implements SimpleBuildStep {
this.cmdLineArgs = cmdLineArgs;
}
public String getStartsIn() {
return startsIn;
}
@DataBoundSetter
public PBAutoBuildBuilder setStartsIn(String startsIn) {
this.startsIn = startsIn;
return this;
}
@Override
public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException {
@ -75,18 +80,10 @@ public class PBAutoBuildStep extends Builder implements SimpleBuildStep {
pbAutoBuildExecution.setDescriptor(getDescriptor());
pbAutoBuildExecution.setPbAutoBuildName(getPbAutoBuildName());
pbAutoBuildExecution.setCmdLineArgs(getCmdLineArgs());
pbAutoBuildExecution.setStartsIn(getStartsIn());
pbAutoBuildExecution.start();
}
// @Override
// public StepExecution start(StepContext context) throws Exception {
// final PBAutoBuildExecution pbAutoBuildExecution = new PBAutoBuildExecution(this, context);
// pbAutoBuildExecution.setDescriptor(getDescriptor());
// pbAutoBuildExecution.setPbAutoBuildName(getPbAutoBuildName());
// pbAutoBuildExecution.setCmdLineArgs(getCmdLineArgs());
// return pbAutoBuildExecution;
// }
@Extension
@Symbol("pbautobuild")
@ -96,7 +93,7 @@ public class PBAutoBuildStep extends Builder implements SimpleBuildStep {
private volatile PBAutoBuildInstallation[] installations = new PBAutoBuildInstallation[0];
public DescriptorImpl() {
super(PBAutoBuildStep.class);
super(PBAutoBuildBuilder.class);
load();
}

View File

@ -1,11 +1,13 @@
package io.jenkins.plugins.sample;
import com.iwombat.util.StringUtil;
import hudson.*;
import hudson.model.Descriptor;
import hudson.model.Result;
import hudson.model.Run;
import hudson.model.TaskListener;
import hudson.util.ArgumentListBuilder;
import org.apache.commons.lang.StringUtils;
import org.jenkinsci.plugins.workflow.steps.*;
import java.io.IOException;
@ -18,13 +20,14 @@ public class PBAutoBuildExecution extends AbstractStepExecutionImpl {
private Descriptor descriptor;
private String pbAutoBuildName;
private String startsIn;
private String cmdLineArgs;
private final Run<?, ?> build;
private final EnvVars envVars;
private final Launcher launcher;
private final TaskListener listener;
private final FilePath workspace;
private FilePath workspace;
public PBAutoBuildExecution(Run<?, ?> build, EnvVars envVars, Launcher launcher, TaskListener listener,FilePath workspace) {
this.build = build;
@ -83,6 +86,11 @@ public class PBAutoBuildExecution extends AbstractStepExecutionImpl {
args.add(tokenizeArgs(ai.getDefaultArgs()));
}
if(startsIn != null && !(startsIn.isEmpty() || startsIn.isBlank())) {
workspace = workspace.child(startsIn);
//args.prepend(String.format("cd \"%s\" && ", startsIn));
}
// Aggiungi gli argomenti personalizzati (se presenti)
String normalizedArgs = cmdLineArgs.replaceAll("[\t\r\n]+", " ");
normalizedArgs = Util.replaceMacro(normalizedArgs, envVars);
@ -144,7 +152,7 @@ public class PBAutoBuildExecution extends AbstractStepExecutionImpl {
}
public PBAutoBuildInstallation getPBAutoBuild() {
PBAutoBuildStep.DescriptorImpl descriptor = (PBAutoBuildStep.DescriptorImpl) getDescriptor();
PBAutoBuildBuilder.DescriptorImpl descriptor = (PBAutoBuildBuilder.DescriptorImpl) getDescriptor();
for (PBAutoBuildInstallation i : descriptor.getInstallations()) {
if (pbAutoBuildName != null && i.getName().equals(pbAutoBuildName))
return i;
@ -217,4 +225,9 @@ public class PBAutoBuildExecution extends AbstractStepExecutionImpl {
this.cmdLineArgs = cmdLineArgs;
return this;
}
public PBAutoBuildExecution setStartsIn(String startsIn) {
this.startsIn = startsIn;
return this;
}
}

View File

@ -87,10 +87,10 @@ public final class PBAutoBuildInstallation extends ToolInstallation implements N
getDescriptor().setInstallations(installations);
}
private PBAutoBuildStep.DescriptorImpl getDescriptor() {
private PBAutoBuildBuilder.DescriptorImpl getDescriptor() {
Jenkins jenkins = Jenkins.getInstanceOrNull();
if (jenkins != null && jenkins.getDescriptorByType(PBAutoBuildStep.DescriptorImpl.class) != null) {
return jenkins.getDescriptorByType(PBAutoBuildStep.DescriptorImpl.class);
if (jenkins != null && jenkins.getDescriptorByType(PBAutoBuildBuilder.DescriptorImpl.class) != null) {
return jenkins.getDescriptorByType(PBAutoBuildBuilder.DescriptorImpl.class);
} else {
// To stick with current behavior and meet findbugs requirements
throw new NullPointerException(jenkins == null ? "Jenkins instance is null" : "PBAutoBuildBuilder.DescriptorImpl is null");

View File

@ -31,9 +31,12 @@ THE SOFTWARE.
</select>
</f:entry>
<f:entry title="${%Additional command line arguments}" field="cmdLineArgs">
<f:textarea name="pbAutoBuildStep.cmdLineArgs" value="${instance.cmdLineArgs}"/>
<f:textbox name="pbAutoBuildStep.cmdLineArgs" value="${instance.cmdLineArgs}"/>
</f:entry>
<f:advanced>
<f:entry title="${%Starts in}" field="startsIn">
<f:textbox name="pbAutoBuildStep.startsIn" value="${instance.startsIn}"/>
</f:entry>
<f:entry title="${%Continue Job on build Failure}" field="continueOnBuildFailure">
<f:checkbox name="pbAutoBuildStep.continueOnBuildFailure" value="${instance.continueOnBuildFailure}"
checked="${instance.continueOnBuildFailure}" default="false"/>