-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathPretestedIntegrationJobDslExtension.java
80 lines (73 loc) · 2.82 KB
/
PretestedIntegrationJobDslExtension.java
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
package org.jenkinsci.plugins.pretestedintegration;
import hudson.Extension;
import javaposse.jobdsl.dsl.RequiresPlugin;
import javaposse.jobdsl.dsl.helpers.publisher.PublisherContext;
import javaposse.jobdsl.dsl.helpers.scm.GitExtensionContext;
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.PretestedIntegrationAsGitPluginExt;
import org.jenkinsci.plugins.pretestedintegration.scm.git.SquashCommitStrategy;
import java.util.Arrays;
import java.util.List;
import static javaposse.jobdsl.dsl.Preconditions.checkArgument;
/**
*ExtensionPoint used to support the Jenkins Job DSL
*
*Example:
*job("generated") {
* scm {
* git {
* remote {
* name("origin")
* url("some.repo.somewhere.git")
* }
* extensions {
* pretestedIntegration("ACCUMULATED","master","origin")
* }
* }
* }
*}
*/
@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 = "3.0.0")
@DslExtensionMethod(context = GitExtensionContext.class)
public Object pretestedIntegration(String strategy, String branch, String repository) {
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;
default:
integrationStrategy = new SquashCommitStrategy();
}
return new PretestedIntegrationAsGitPluginExt(integrationStrategy, branch, repository);
}
/**
* Method to configure the Pretested Integration publisher
*
* @return a configured PretestedIntegrationPostCheckout
*/
@RequiresPlugin(id = "pretested-integration", minimumVersion = "3.0.0")
@DslExtensionMethod(context = PublisherContext.class)
public Object pretestedIntegration() {
return new PretestedIntegrationPostCheckout();
}
}