diff --git a/about_integration_tests.md b/about_integration_tests.md
index 6ba764b..889d305 100644
--- a/about_integration_tests.md
+++ b/about_integration_tests.md
@@ -56,7 +56,7 @@ Note that either for Jenkins and Gogs, the test is based on the LATEST version (
#### The Jenkins Docker Image
-The Jenkins container image is built from the `jenkinsci/jenkins:latest` image. The necessary dependencies for the Gogs Webhook plugin under test are installed using the built-in `install-plugins.sh` script (git, workflow-aggregator, pipeline-model-extensions).
+The Jenkins container image is built from the `jenkinsci/jenkins:latest` image. The necessary dependencies for the Gogs Webhook plugin under test are installed using the built-in `install-plugins.sh` script (git, workflow-aggregator, pipeline-model-extensions, cloudbees-folder).
The previously built plugin hpi is copied in the container so that it will automatically be loaded at startup.
The password credential for Gogs is loaded in the Jenkins container with the `setup-gogs-user-credentials.groovy.override` groovy script (executed at startup).
It is hardcoded in the script to user "butler" with password "butler".
diff --git a/pom.xml b/pom.xml
index b8160cf..0c2488a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
1.625.3
7
2.13
-
+ 8
Jenkins Gogs plugin
@@ -103,6 +103,12 @@
0.3.7
test
+
+ org.jenkins-ci.plugins
+ cloudbees-folder
+ 6.3
+ test
+
diff --git a/src/main/java/org/jenkinsci/plugins/gogs/GogsPayloadProcessor.java b/src/main/java/org/jenkinsci/plugins/gogs/GogsPayloadProcessor.java
index 0c25b4c..5c7be42 100644
--- a/src/main/java/org/jenkinsci/plugins/gogs/GogsPayloadProcessor.java
+++ b/src/main/java/org/jenkinsci/plugins/gogs/GogsPayloadProcessor.java
@@ -27,7 +27,6 @@ associated documentation files (the "Software"), to deal in the Software without
import hudson.model.Cause;
import hudson.security.ACL;
import hudson.triggers.Trigger;
-import jenkins.model.Jenkins;
import jenkins.model.ParameterizedJobMixIn;
import jenkins.triggers.SCMTriggerItem;
import org.acegisecurity.context.SecurityContext;
@@ -46,59 +45,45 @@ class GogsPayloadProcessor {
GogsPayloadProcessor() {
}
- @SuppressWarnings("unused")
- public Map getPayload() {
- return this.payload;
- }
-
public void setPayload(String k, String v) {
this.payload.put(k, v);
}
public GogsResults triggerJobs(String jobName, String deliveryID) {
SecurityContext saveCtx = ACL.impersonate(ACL.SYSTEM);
- Boolean didJob = false;
GogsResults result = new GogsResults();
try {
- Jenkins instance = Jenkins.getInstance();
- if (instance != null) {
- for (BuildableItem project : instance.getAllItems(BuildableItem.class)) {
- if (project.getName().equals(jobName)) {
-
- GogsTrigger gTrigger = null;
- Cause cause = new GogsCause(deliveryID);
-
- if (project instanceof ParameterizedJobMixIn.ParameterizedJob) {
- ParameterizedJobMixIn.ParameterizedJob pJob = (ParameterizedJobMixIn.ParameterizedJob) project;
- for (Trigger trigger : pJob.getTriggers().values()) {
- if (trigger instanceof GogsTrigger) {
- gTrigger = (GogsTrigger) trigger;
- break;
- }
- }
+ BuildableItem project = GogsUtils.find(jobName, BuildableItem.class);
+ if (project != null) {
+ GogsTrigger gTrigger = null;
+ Cause cause = new GogsCause(deliveryID);
+
+ if (project instanceof ParameterizedJobMixIn.ParameterizedJob) {
+ ParameterizedJobMixIn.ParameterizedJob pJob = (ParameterizedJobMixIn.ParameterizedJob) project;
+ for (Trigger trigger : pJob.getTriggers().values()) {
+ if (trigger instanceof GogsTrigger) {
+ gTrigger = (GogsTrigger) trigger;
+ break;
}
- if (gTrigger != null) {
- SCMTriggerItem item = SCMTriggerItem.SCMTriggerItems.asSCMTriggerItem(project);
- GogsPayload gogsPayload = new GogsPayload(this.payload);
-
- if (item != null)
- item.scheduleBuild2(0, gogsPayload);
- } else
- project.scheduleBuild(0, cause);
-
- didJob = true;
- result.setMessage(String.format("Job '%s' is executed", jobName));
}
}
- if (!didJob) {
- String msg = String.format("Job '%s' is not defined in Jenkins", jobName);
- result.setStatus(404, msg);
- LOGGER.warning(msg);
+
+ if (gTrigger != null) {
+ SCMTriggerItem item = SCMTriggerItem.SCMTriggerItems.asSCMTriggerItem(project);
+ GogsPayload gogsPayload = new GogsPayload(this.payload);
+ if (item != null) {
+ item.scheduleBuild2(0, gogsPayload);
+ }
+ } else {
+ project.scheduleBuild(0, cause);
}
+ result.setMessage(String.format("Job '%s' is executed", jobName));
+ } else {
+ String msg = String.format("Job '%s' is not defined in Jenkins", jobName);
+ result.setStatus(404, msg);
+ LOGGER.warning(msg);
}
- } catch (RuntimeException e) {
- throw e;
} catch (Exception e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
@@ -110,4 +95,4 @@ public GogsResults triggerJobs(String jobName, String deliveryID) {
return result;
}
-}
+}
\ No newline at end of file
diff --git a/src/test/docker/jenkins-dockerfile/Dockerfile b/src/test/docker/jenkins-dockerfile/Dockerfile
index d768293..8127f39 100644
--- a/src/test/docker/jenkins-dockerfile/Dockerfile
+++ b/src/test/docker/jenkins-dockerfile/Dockerfile
@@ -1,7 +1,7 @@
FROM jenkinsci/jenkins:latest
# Load the required dependencies for the plugin under test
-RUN /usr/local/bin/install-plugins.sh git workflow-aggregator pipeline-model-extensions
+RUN /usr/local/bin/install-plugins.sh git workflow-aggregator pipeline-model-extensions cloudbees-folder
# Copy the newly built plugin in the container so that it gets loaded at startup
ADD gogs-webhook.hpi /usr/share/jenkins/ref/plugins/gogs-webhook.hpi
diff --git a/src/test/java/org/jenkinsci/plugins/gogs/GogsWebHookPluginsTest.java b/src/test/java/org/jenkinsci/plugins/gogs/GogsWebHookPluginsTest.java
new file mode 100644
index 0000000..0c1cc02
--- /dev/null
+++ b/src/test/java/org/jenkinsci/plugins/gogs/GogsWebHookPluginsTest.java
@@ -0,0 +1,45 @@
+package org.jenkinsci.plugins.gogs;
+
+import com.cloudbees.hudson.plugins.folder.Folder;
+import hudson.model.FreeStyleProject;
+import hudson.model.Job;
+import org.junit.Rule;
+import org.junit.Test;
+import org.jvnet.hudson.test.JenkinsRule;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+/*
+ * Class to test gogs webhook in cooperation with other plugins
+ */
+public class GogsWebHookPluginsTest {
+ private final String FOLDERNAME = "testFolder";
+ private final String PROJECTNAME = "testProject";
+
+ final Logger log = LoggerFactory.getLogger(GogsWebHookPluginsTest.class);
+
+ @Rule
+ public JenkinsRule r = new JenkinsRule();
+
+ @Test
+ public void testCloudBeesFolder() throws Exception {
+ Folder folder = createFolder(FOLDERNAME);
+
+ FreeStyleProject project = folder.createProject(FreeStyleProject.class, PROJECTNAME);
+
+ Job job = GogsUtils.find(FOLDERNAME + "/" + PROJECTNAME, Job.class);
+ assertEquals("Couldn't find " + FOLDERNAME + "/" + PROJECTNAME, job, project);
+ }
+
+ //
+ // Helper methods
+ //
+ private Folder createFolder(String folder) throws IOException {
+ return r.jenkins.createProject(Folder.class, folder);
+ }
+
+}