Skip to content

Commit c4977ce

Browse files
authored
Add Config File Provider support (#45)
* Add Config File Provider support
1 parent 8463c3a commit c4977ce

File tree

7 files changed

+67
-13
lines changed

7 files changed

+67
-13
lines changed

.github/workflows/codeql-analysis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ jobs:
3030
- name: Checkout repository
3131
uses: actions/checkout@v3
3232

33-
- name: Set up JDK 8
33+
- name: Set up JDK 11
3434
uses: actions/setup-java@v2
3535
with:
3636
distribution: 'adopt'
37-
java-version: 8
37+
java-version: 11
3838
cache: 'maven'
3939

4040
# Initializes the CodeQL tools for scanning.

.github/workflows/jenkins-security-scan.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ jobs:
2222
uses: jenkins-infra/jenkins-security-scan/.github/workflows/jenkins-security-scan.yaml@v2
2323
with:
2424
java-cache: maven
25-
java-version: 8
25+
java-version: 11

Jenkinsfile

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
buildPlugin(timeout: 120, useContainerAgent: true, configurations: [
2-
[ platform: 'linux', jdk: '8'],
3-
[ platform: 'windows', jdk: '8'],
2+
[ platform: 'windows', jdk: '11'],
43
[ platform: 'linux', jdk: '11']
54
])

pom.xml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,17 @@
44
<parent>
55
<groupId>org.jenkins-ci.plugins</groupId>
66
<artifactId>plugin</artifactId>
7-
<version>4.40</version>
7+
<version>4.75</version>
88
<relativePath />
99
</parent>
1010

1111
<properties>
1212
<changelist>999999-SNAPSHOT</changelist>
1313

14-
<jenkins.version>2.303.3</jenkins.version>
15-
<jenkins-tools-bom.artifactId>bom-2.303.x</jenkins-tools-bom.artifactId>
16-
<jenkins-tools-bom.version>987.v4ade2e49fe70</jenkins-tools-bom.version>
14+
<jenkins.version>2.414.3</jenkins.version>
15+
<jenkins-tools-bom.artifactId>bom-2.414.x</jenkins-tools-bom.artifactId>
16+
<jenkins-tools-bom.version>2571.vede9dc5a_2e23</jenkins-tools-bom.version>
1717

18-
<java.level>8</java.level>
1918
<gitHubRepo>jenkinsci/${project.artifactId}-plugin</gitHubRepo>
2019

2120
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -102,6 +101,10 @@
102101
<artifactId>workflow-job</artifactId>
103102
<scope>compile</scope>
104103
</dependency>
104+
<dependency>
105+
<groupId>org.jenkins-ci.plugins</groupId>
106+
<artifactId>config-file-provider</artifactId>
107+
</dependency>
105108
</dependencies>
106109

107110
<repositories>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package cn.opsbox.jenkinsci.plugins.cps;
2+
3+
import hudson.Extension;
4+
import lombok.Getter;
5+
import org.kohsuke.stapler.DataBoundConstructor;
6+
7+
public class ConfigFileProviderOesTemplateFlowDefinitionConfiguration extends OesTemplateFlowDefinitionConfiguration {
8+
9+
@Getter
10+
private final String scriptId;
11+
12+
@DataBoundConstructor
13+
public ConfigFileProviderOesTemplateFlowDefinitionConfiguration(String scriptId) {
14+
this.scriptId = scriptId;
15+
}
16+
17+
@Extension
18+
public static class DescriptorImpl extends OesTemplateFlowDefinitionConfiguration.DescriptorImpl {
19+
public String getDisplayName() {
20+
return "From Config File Provider";
21+
}
22+
}
23+
}

src/main/java/cn/opsbox/jenkinsci/plugins/cps/CpsTemplateFlowDefinition.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
import org.jenkinsci.plugins.workflow.flow.*;
1313
import org.jenkinsci.plugins.workflow.job.WorkflowRun;
1414

15+
import org.jenkinsci.lib.configprovider.model.Config;
16+
import org.jenkinsci.plugins.configfiles.ConfigFileStore;
17+
import org.jenkinsci.plugins.configfiles.GlobalConfigFiles;
18+
1519
import java.io.FileNotFoundException;
1620
import java.io.IOException;
1721
import java.util.List;
@@ -53,10 +57,28 @@ public CpsFlowExecution create(
5357
String initializePipeline(FlowExecutionOwner owner) {
5458

5559
String script = "";
60+
TaskListener listener = owner.getListener();
5661

5762
if (configProvider instanceof ConsoleOesTemplateFlowDefinitionConfiguration) {
5863
ConsoleOesTemplateFlowDefinitionConfiguration console = (ConsoleOesTemplateFlowDefinitionConfiguration) configProvider;
5964
script = console.getScript();
65+
} else if (configProvider instanceof ConfigFileProviderOesTemplateFlowDefinitionConfiguration) {
66+
ConfigFileProviderOesTemplateFlowDefinitionConfiguration configFile = (ConfigFileProviderOesTemplateFlowDefinitionConfiguration) configProvider;
67+
String scriptId = configFile.getScriptId();
68+
ConfigFileStore store = GlobalConfigFiles.get();
69+
if (store != null) {
70+
Config config = store.getById(scriptId);
71+
if (config != null) {
72+
script = config.content;
73+
listener.getLogger().println("Obtained " + scriptId + " from Config File Provider");
74+
return script;
75+
} else {
76+
throw new AbortException("Config File not found. Check configuration.");
77+
}
78+
} else {
79+
throw new AbortException("Get ConfigFileStore Error. Check configuration.");
80+
}
81+
6082
} else {
6183
ScmOesTemplateFlowDefinitionConfiguration scm = (ScmOesTemplateFlowDefinitionConfiguration) configProvider;
6284

@@ -68,14 +90,13 @@ String initializePipeline(FlowExecutionOwner owner) {
6890

6991
SCM scm1 = scm.getScm();
7092
String scriptPath = scm.getScriptPath();
71-
TaskListener listener = owner.getListener();
7293

7394
try(SCMFileSystem fs = SCMFileSystem.of(build.getParent(), scm1)) {
7495
if (fs != null) {
7596
try {
7697
script = fs.child(scriptPath).contentAsString();
7798
listener.getLogger().println("Obtained " + scriptPath + " from " + scm1.getKey());
78-
99+
return script;
79100
} catch (FileNotFoundException e) {
80101
throw new AbortException("Unable to find " + scriptPath + " from " + scm1.getKey());
81102
}
@@ -87,5 +108,4 @@ String initializePipeline(FlowExecutionOwner owner) {
87108

88109
return script;
89110
}
90-
91111
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?jelly escape-by-default='true'?>
2+
<j:jelly xmlns:j="jelly:core" xmlns:f="/lib/form" xmlns:st="jelly:stapler" xmlns:wfe="/org/jenkinsci/plugins/workflow/editor">
3+
<f:entry title="${%Script ID}" field="scriptId">
4+
<f:textbox value="${instance.scriptId}" default="Jenkinsfile" />
5+
</f:entry>
6+
<f:block>
7+
<a href="pipeline-syntax" target="_blank">${%Pipeline Syntax}</a>
8+
</f:block>
9+
</j:jelly>

0 commit comments

Comments
 (0)