forked from Praqma/pretested-integration-plugin
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPretestedIntegrationJobDslExtension.java
More file actions
83 lines (77 loc) · 3.02 KB
/
PretestedIntegrationJobDslExtension.java
File metadata and controls
83 lines (77 loc) · 3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package org.jenkinsci.plugins.pretestedintegration;
import hudson.Extension;
import java.util.Arrays;
import java.util.List;
import javaposse.jobdsl.dsl.helpers.wrapper.WrapperContext;
import javaposse.jobdsl.dsl.RequiresPlugin;
import javaposse.jobdsl.plugin.ContextExtensionPoint;
import javaposse.jobdsl.plugin.DslExtensionMethod;
import org.jenkinsci.plugins.pretestedintegration.scm.git.AccumulatedCommitStrategy;
import org.jenkinsci.plugins.pretestedintegration.scm.git.GitBridge;
import org.jenkinsci.plugins.pretestedintegration.scm.git.SquashCommitStrategy;
import static javaposse.jobdsl.dsl.Preconditions.checkArgument;
import javaposse.jobdsl.dsl.helpers.publisher.PublisherContext;
/**
* ExtensionPoint used to support the Jenkins Job DSL.
* ```
* job{
* wrappers{
* pretestedIntegration(String integrationStrategy, String integrationBranch, String repository)
* }
* publishers {
* pretestedIntegration()
* }
* }
* ```
* Valid values for `integrationStrategy` are 'ACCUMULATED' and 'SQUASHED'.
* ```
* job('pi-job'){
* wrappers{
* pretestedIntegration('SQUASHED','master','origin')
* }
* publishers {
* pretestedIntegration()
* }
* }
* ```
*/
@Extension(optional = true)
public class PretestedIntegrationJobDslExtension extends ContextExtensionPoint {
/**
* Valid options for integrationStrategy
*/
private final List<String> strategies = Arrays.asList("ACCUMULATED", "SQUASHED");
/**
* Method to configure the Pretested Integration wrapper.
*
* @param strategy the Integration Strategy to use
* @param branch the Integration Branch
* @param repository the repository
* @return a configured PretestedIntegrationBuildWrapper
*/
@RequiresPlugin(id = "pretested-integration", minimumVersion = "2.3.0")
@DslExtensionMethod(context = WrapperContext.class)
public Object pretestedIntegration(String strategy, String branch, String repository, String allowedNoCommits) {
checkArgument(strategies.contains(strategy), "Strategy must be one of " + strategies);
IntegrationStrategy integrationStrategy = null;
switch (strategy) {
case "ACCUMULATED":
integrationStrategy = new AccumulatedCommitStrategy();
break;
case "SQUASHED":
integrationStrategy = new SquashCommitStrategy();
break;
}
GitBridge bridge = new GitBridge(integrationStrategy, branch, repository, Integer.getInteger(allowedNoCommits));
return new PretestedIntegrationBuildWrapper(new GitBridge(integrationStrategy, branch, repository, Integer.getInteger(allowedNoCommits)));
}
/**
* Method to configure the Pretested Integration publisher
* @return a configured PretestedIntegrationPostCheckout
*/
@RequiresPlugin(id = "pretested-integration", minimumVersion = "2.3.3")
@DslExtensionMethod(context = PublisherContext.class)
public Object pretestedIntegration() {
return new PretestedIntegrationPostCheckout();
}
}