Skip to content

Commit

Permalink
Fix pipeline step execution and add documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
quilicicf committed Jun 13, 2022
1 parent 27f1ee5 commit 5033a88
Show file tree
Hide file tree
Showing 9 changed files with 90 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class FileParameters extends JobParameters {

private static final long serialVersionUID = 3614172320192170597L;

@Extension
@Extension(ordinal = 0)
public static final FileParametersDescriptor DESCRIPTOR = new FileParametersDescriptor();

private String filePath;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;

import org.jboss.marshalling.util.IntKeyMap;
import org.jenkinsci.Symbol;
import org.jenkinsci.plugins.ParameterizedRemoteTrigger.BuildContext;
import org.kohsuke.stapler.DataBoundConstructor;
Expand All @@ -21,13 +23,13 @@ public class MapParameters extends JobParameters {

private static final long serialVersionUID = 3614172320192170597L;

@Extension
@Extension(ordinal = 2)
public static final MapParametersDescriptor DESCRIPTOR = new MapParametersDescriptor();

private final List<MapParameter> parameters = new ArrayList<>();

@DataBoundConstructor
public MapParameters() {}
public MapParameters() { }

public MapParameters(@NonNull Map<String, String> parametersMap) {
setParametersMap(parametersMap);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class StringParameters extends JobParameters {

private static final long serialVersionUID = 3614172320192170597L;

@Extension
@Extension(ordinal = 1)
public static final StringParametersDescriptor DESCRIPTOR = new StringParametersDescriptor();

private String parameters;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,14 @@

package org.jenkinsci.plugins.ParameterizedRemoteTrigger.pipeline;

import static java.util.stream.Collectors.toMap;

import javax.annotation.Nonnull;
import java.nio.file.Path;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.jenkinsci.plugins.ParameterizedRemoteTrigger.BasicBuildContext;
Expand All @@ -35,8 +39,10 @@
import org.jenkinsci.plugins.ParameterizedRemoteTrigger.auth2.Auth2;
import org.jenkinsci.plugins.ParameterizedRemoteTrigger.auth2.Auth2.Auth2Descriptor;
import org.jenkinsci.plugins.ParameterizedRemoteTrigger.auth2.NullAuth;
import org.jenkinsci.plugins.ParameterizedRemoteTrigger.parameters2.FileParameters;
import org.jenkinsci.plugins.ParameterizedRemoteTrigger.parameters2.JobParameters;
import org.jenkinsci.plugins.ParameterizedRemoteTrigger.parameters2.MapParameters;
import org.jenkinsci.plugins.ParameterizedRemoteTrigger.parameters2.StringParameters;
import org.jenkinsci.plugins.ParameterizedRemoteTrigger.remoteJob.RemoteBuildStatus;
import org.jenkinsci.plugins.ParameterizedRemoteTrigger.utils.FormValidationUtils;
import org.jenkinsci.plugins.ParameterizedRemoteTrigger.utils.FormValidationUtils.AffectedField;
Expand All @@ -52,6 +58,7 @@
import org.kohsuke.stapler.DataBoundSetter;
import org.kohsuke.stapler.QueryParameter;

import hudson.AbortException;
import hudson.Extension;
import hudson.ExtensionList;
import hudson.FilePath;
Expand All @@ -70,7 +77,7 @@ public RemoteBuildPipelineStep(String job) {
remoteBuildConfig = new RemoteBuildConfiguration();
remoteBuildConfig.setJob(job);
remoteBuildConfig.setShouldNotFailBuild(false); // We need to get notified. Failure feedback is collected async
// then.
// then.
remoteBuildConfig.setBlockBuildUntilComplete(true); // default for Pipeline Step
}

Expand Down Expand Up @@ -145,8 +152,39 @@ public void setToken(String token) {
}

@DataBoundSetter
public void setParameters2(JobParameters parameters2) {
remoteBuildConfig.setParameters2(parameters2);
public void setParameters(Object parameters) throws AbortException {
if (parameters instanceof JobParameters) {
remoteBuildConfig.setParameters2((JobParameters) parameters);
} else if (parameters instanceof String) {
final String parametersAsString = (String) parameters;
if (parametersAsString.contains("=") || parametersAsString.contains("\n")) {
remoteBuildConfig.setParameters2(new StringParameters(parametersAsString));
} else {
remoteBuildConfig.setParameters2(new FileParameters(parametersAsString));
}
} else if (parameters instanceof Map) {
@SuppressWarnings("unchecked") final Map<String, String> parametersAsMap =
((Map<Object, Object>) parameters).entrySet()
.stream()
.collect(toMap(
(entry) -> entry.getKey().toString(),
(entry) -> entry.getValue().toString()
));
remoteBuildConfig.setParameters2(new MapParameters(parametersAsMap));
} else {
throw new AbortException("Cannot read remote job parameters.");
}

}

/**
* @deprecated Still there to allow old configuration (3.1.5 and below) to work.
* Use {@link RemoteBuildPipelineStep#setParameters(Object)} instead now.
*/
@Deprecated
@DataBoundSetter
public void setParameterFile(String parameterFile) {
remoteBuildConfig.setParameters2(new FileParameters(parameterFile));
}

@DataBoundSetter
Expand Down Expand Up @@ -341,7 +379,7 @@ public String getToken() {
return remoteBuildConfig.getToken();
}

public JobParameters getParameters2() {
public JobParameters getParameters() {
return remoteBuildConfig.getParameters2();
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<div>
<div style="font-weight: bolder; text-decoration: underline">
Job Parameters
</div>
Parameters which will be used when triggering the remote job.
<br />
If no parameters are needed, then just leave this blank.
<ul>
<li><b>Map parameters</b><br />
This is the recommended type. It allows you to provide parameters with key/value and supports multi-line parameters.
</li>
<li><b>String parameters (legacy)</b><br />
This type allows to describe parameters within a big string like in versions 3.1.5 and lower. It does not support multi-line parameters.
</li>
<li><b>File parameters (legacy)</b><br />
This type allows to describe parameters within a file like in versions 3.1.5 and lower. It does not support multi-line parameters.
</li>
</ul>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@
<f:entry title="Do not fail if remote fails" field="shouldNotFailBuild">
<f:checkbox />
</f:entry>

<f:entry title="Abort remote job if current job was aborted" field="abortTriggeredJob">
<f:checkbox />
</f:entry>

<f:entry title="Wait to trigger remote builds until no other builds are running." field="preventRemoteBuildQueue">
<f:checkbox />
</f:entry>
Expand Down Expand Up @@ -52,10 +52,8 @@
<f:textbox />
</f:entry>

<f:entry title="Parameters" field="parameters">
<f:textarea />
</f:entry>

<f:dropdownDescriptorSelector field="parameters" title="Parameters" descriptors="${descriptor.getParametersDescriptors()}" default="${descriptor.getDefaultParametersDescriptor()}" />

<f:entry title="Max connection" field="maxConn">
<f:textbox default="1" />
</f:entry>
Expand All @@ -78,12 +76,5 @@
<f:checkbox />
</f:entry>
</f:optionalBlock>

<f:optionalBlock title="Load parameters from external file (this will cause the job to ignore the text field above)" field="loadParamsFromFile" inline="true">
<f:entry title="Parameter file path + name (all paths are relative to the current workspace)" field="parameterFile">
<f:textbox />
</f:entry>
</f:optionalBlock>
</f:section>

</j:jelly>
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,23 @@
Job Parameters
</div>
Parameters which will be used when triggering the remote job.
<br/>
<br />
If no parameters are needed, then just leave this blank.
<br/>
Any line start with a pound-sign (#) will be treated as a comment.
<br />
In case of a String, the plugin uses String/File parameters depending on the parameter's content.

<ul>
<li><b>Map parameters</b><br />
<p><code>Map&lt;String, Object></code></p>
<p>This is the recommended type. It allows you to provide parameters with key/value and supports multi-line parameters.</p>
</li>
<li><b>String parameters (legacy)</b><br />
<p><code>String</code></p>
<p>This type allows to describe parameters within a big string like in versions 3.1.5 and lower. It does not support multi-line parameters.</p>
</li>
<li><b>File parameters (legacy)</b><br />
<p><code>String</code></p>
This type allows to describe parameters within a file like in versions 3.1.5 and lower. It does not support multi-line parameters.
</li>
</ul>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ public void testDefaultsPipelineStep() throws IOException {
assertFalse(config.getEnhancedLogging());
assertEquals("job", config.getJob());
assertTrue(config.getAuth() instanceof NullAuth);
assertTrue(config.getParameters2() instanceof MapParameters);
assertTrue(config.getParameters() instanceof MapParameters);
assertEquals(10000, config.getHttpGetReadTimeout());
assertEquals(30000, config.getHttpPostReadTimeout());
assertEquals(10, config.getPollInterval());
Expand Down

0 comments on commit 5033a88

Please sign in to comment.