Skip to content

Commit 2d5bcdd

Browse files
committed
Added REF and BEFORE to environment variables, and some refactoring.
1 parent 3dbce0c commit 2d5bcdd

File tree

7 files changed

+45
-58
lines changed

7 files changed

+45
-58
lines changed

src/main/java/org/jenkinsci/plugins/gogs/GogsCause.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,11 @@ associated documentation files (the "Software"), to deal in the Software without
2525

2626
import hudson.model.Cause;
2727

28-
public class GogsCause extends Cause {
29-
String deliveryID = "";
28+
class GogsCause extends Cause {
29+
private final String deliveryID;
3030

31-
public GogsCause(String deliveryID)
32-
{
33-
this.deliveryID = deliveryID;
31+
public GogsCause(String deliveryID) {
32+
this.deliveryID = deliveryID;
3433
}
3534

3635
@Override

src/main/java/org/jenkinsci/plugins/gogs/GogsPayload.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,27 @@
66
import hudson.model.InvisibleAction;
77

88
import javax.annotation.Nonnull;
9-
import java.util.HashMap;
109
import java.util.Map;
1110
import java.util.logging.Level;
1211
import java.util.logging.Logger;
1312

14-
public class GogsPayload extends InvisibleAction implements EnvironmentContributingAction {
15-
private Map<String,String> payload = new HashMap<String, String>();
13+
class GogsPayload extends InvisibleAction implements EnvironmentContributingAction {
14+
private final Map<String, String> payload;
1615

1716
public GogsPayload(Map<String, String> payload) {
1817
this.payload = payload;
1918
}
2019

2120
@Nonnull
22-
public Map<String, String> getPayload() {
21+
private Map<String, String> getPayload() {
2322
return payload;
2423
}
2524

2625
@Override
2726
public void buildEnvVars(AbstractBuild<?, ?> abstractBuild, EnvVars envVars) {
28-
final Map<String, String> payload = getPayload();
29-
LOGGER.log(Level.FINEST, "Injecting GOGS_PAYLOAD: {0}", payload);
30-
for(String key: payload.keySet()) {
31-
envVars.put("GOGS_"+key.toUpperCase(), this.payload.get(key));
27+
LOGGER.log(Level.FINEST, "Injecting GOGS_PAYLOAD: {0}", getPayload());
28+
for (String key : payload.keySet()) {
29+
envVars.put("GOGS_" + key.toUpperCase(), this.payload.get(key));
3230
}
3331
}
3432

src/main/java/org/jenkinsci/plugins/gogs/GogsPayloadProcessor.java

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,8 @@ associated documentation files (the "Software"), to deal in the Software without
2323

2424
package org.jenkinsci.plugins.gogs;
2525

26-
import java.io.PrintWriter;
27-
import java.io.StringWriter;
28-
import java.util.ArrayList;
29-
import java.util.HashMap;
30-
import java.util.List;
31-
import java.util.Map;
32-
import java.util.logging.Level;
33-
import java.util.logging.Logger;
3426
import hudson.model.BuildableItem;
3527
import hudson.model.Cause;
36-
import hudson.scm.SCM;
3728
import hudson.security.ACL;
3829
import hudson.triggers.Trigger;
3930
import jenkins.model.Jenkins;
@@ -42,35 +33,36 @@ associated documentation files (the "Software"), to deal in the Software without
4233
import org.acegisecurity.context.SecurityContext;
4334
import org.acegisecurity.context.SecurityContextHolder;
4435

36+
import java.io.PrintWriter;
37+
import java.io.StringWriter;
38+
import java.util.HashMap;
39+
import java.util.Map;
4540
import java.util.logging.Logger;
4641

47-
public class GogsPayloadProcessor {
48-
private static final Logger LOGGER = Logger.getLogger(GogsPayloadProcessor.class.getName());
49-
private Map<String, String> payload = new HashMap<String, String>();
42+
class GogsPayloadProcessor {
43+
private static final Logger LOGGER = Logger.getLogger(GogsPayloadProcessor.class.getName());
44+
private final Map<String, String> payload = new HashMap<>();
5045

51-
public GogsPayloadProcessor() {
52-
}
46+
GogsPayloadProcessor() {
47+
}
5348

54-
public Map<String, String> getPayload() {
55-
return this.payload;
56-
}
49+
@SuppressWarnings("unused")
50+
public Map<String, String> getPayload() {
51+
return this.payload;
52+
}
5753

58-
public void setPayload(String k, String v) {
59-
this.payload.put(k, v);
60-
}
54+
public void setPayload(String k, String v) {
55+
this.payload.put(k, v);
56+
}
6157

6258
public GogsResults triggerJobs(String jobName, String deliveryID) {
63-
SecurityContext saveCtx = null;
59+
SecurityContext saveCtx = ACL.impersonate(ACL.SYSTEM);
6460
Boolean didJob = false;
6561
GogsResults result = new GogsResults();
6662

6763
try {
68-
saveCtx = SecurityContextHolder.getContext();
69-
7064
Jenkins instance = Jenkins.getInstance();
7165
if (instance != null) {
72-
ACL acl = instance.getACL();
73-
acl.impersonate(ACL.SYSTEM);
7466
for (BuildableItem project : instance.getAllItems(BuildableItem.class)) {
7567
if (project.getName().equals(jobName)) {
7668

src/main/java/org/jenkinsci/plugins/gogs/GogsProjectProperty.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,13 @@ associated documentation files (the "Software"), to deal in the Software without
2727
import hudson.model.Job;
2828
import hudson.model.JobProperty;
2929
import hudson.model.JobPropertyDescriptor;
30-
3130
import net.sf.json.JSONObject;
32-
33-
import org.kohsuke.stapler.StaplerRequest;
3431
import org.kohsuke.stapler.DataBoundConstructor;
32+
import org.kohsuke.stapler.StaplerRequest;
3533

3634
import java.util.logging.Logger;
3735

36+
@SuppressWarnings("ALL")
3837
public class GogsProjectProperty extends JobProperty<Job<?, ?>> {
3938
private final String gogsSecret;
4039
private final boolean gogsUsePayload;
@@ -69,14 +68,14 @@ public boolean getGogsUsePayload() {
6968
return gogsUsePayload;
7069
}
7170

72-
public JobProperty<?> newInstance(StaplerRequest req, JSONObject formData) throws FormException {
71+
public JobProperty<?> newInstance(StaplerRequest req, JSONObject formData) {
7372
GogsProjectProperty tpp = req.bindJSON(
7473
GogsProjectProperty.class,
7574
formData.getJSONObject(GOGS_PROJECT_BLOCK_NAME)
7675
);
7776
if (tpp != null) {
78-
LOGGER.info(formData.toString());
79-
LOGGER.info(tpp.gogsSecret);
77+
LOGGER.finest(formData.toString());
78+
LOGGER.finest(tpp.gogsSecret);
8079

8180
gogsSecret = tpp.gogsSecret;
8281
}

src/main/java/org/jenkinsci/plugins/gogs/GogsTrigger.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,21 @@
22

33

44
import hudson.Extension;
5-
import hudson.model.Hudson;
65
import hudson.model.Item;
76
import hudson.model.Job;
87
import hudson.triggers.Trigger;
98
import hudson.triggers.TriggerDescriptor;
109
import hudson.util.SequentialExecutionQueue;
10+
import jenkins.model.Jenkins;
1111
import jenkins.model.ParameterizedJobMixIn;
1212
import jenkins.triggers.SCMTriggerItem;
1313
import org.kohsuke.stapler.DataBoundConstructor;
1414

1515
import java.util.logging.Logger;
1616

1717

18-
public class GogsTrigger extends Trigger<Job<?,?>> {
18+
@SuppressWarnings("ALL")
19+
public class GogsTrigger extends Trigger<Job<?, ?>> {
1920

2021
@DataBoundConstructor
2122
public GogsTrigger() {
@@ -27,7 +28,6 @@ public void onPost(String triggeredByUser) {
2728
}
2829

2930
public void onPost(String triggeredByUser, final String payload) {
30-
final String pushBy = triggeredByUser;
3131
getDescriptor().queue.execute(new Runnable() {
3232

3333
@Override
@@ -39,12 +39,12 @@ public void run() {
3939

4040
@Override
4141
public DescriptorImpl getDescriptor() {
42-
return (DescriptorImpl)super.getDescriptor();
42+
return (DescriptorImpl) super.getDescriptor();
4343
}
4444

4545
@Extension
4646
public static class DescriptorImpl extends TriggerDescriptor {
47-
private transient final SequentialExecutionQueue queue = new SequentialExecutionQueue(Hudson.MasterComputer.threadPoolForRemoting);
47+
private transient final SequentialExecutionQueue queue = new SequentialExecutionQueue(Jenkins.MasterComputer.threadPoolForRemoting);
4848

4949
@Override
5050
public boolean isApplicable(Item item) {

src/main/java/org/jenkinsci/plugins/gogs/GogsWebHook.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ associated documentation files (the "Software"), to deal in the Software without
2727
import hudson.model.Job;
2828
import hudson.model.UnprotectedRootAction;
2929
import hudson.security.ACL;
30-
import jenkins.model.Jenkins;
3130
import net.sf.json.JSONObject;
3231
import org.acegisecurity.context.SecurityContext;
3332
import org.acegisecurity.context.SecurityContextHolder;
@@ -78,7 +77,7 @@ public String getUrlName() {
7877
* @return a String with the encoded sha256 hmac
7978
* @throws Exception Something went wrong getting the sha256 hmac
8079
*/
81-
public static String encode(String data, String key) throws Exception {
80+
private static String encode(String data, String key) throws Exception {
8281
final Charset asciiCs = Charset.forName("UTF-8");
8382
final Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
8483
final SecretKeySpec secret_key = new javax.crypto.spec.SecretKeySpec(asciiCs.encode(key).array(), "HmacSHA256");
@@ -158,7 +157,7 @@ public void doIndex(StaplerRequest req, StaplerResponse rsp) throws IOException
158157
return;
159158
}
160159

161-
String contentType = req.getContentType();
160+
String contentType = req.getContentType();
162161
if (contentType != null && contentType.startsWith("application/x-www-form-urlencoded")) {
163162
body = URLDecoder.decode(body, DEFAULT_CHARSET);
164163
}
@@ -168,14 +167,12 @@ public void doIndex(StaplerRequest req, StaplerResponse rsp) throws IOException
168167

169168
String jSecret = null;
170169
boolean foundJob = false;
170+
payloadProcessor.setPayload("ref", jsonObject.getString("ref"));
171+
payloadProcessor.setPayload("before", jsonObject.getString("before"));
171172

172-
SecurityContext saveCtx = SecurityContextHolder.getContext();
173+
SecurityContext saveCtx = ACL.impersonate(ACL.SYSTEM);
173174

174175
try {
175-
Jenkins jenkins = Jenkins.getActiveInstance();
176-
ACL acl = jenkins.getACL();
177-
acl.impersonate(ACL.SYSTEM);
178-
179176
Job job = GogsUtils.find(jobName, Job.class);
180177

181178
if (job != null) {
@@ -249,6 +246,7 @@ private void exitWebHook(GogsResults result, StaplerResponse resp) throws IOExce
249246
if (result.getStatus() != 200) {
250247
LOGGER.warning(result.getMessage());
251248
}
249+
//noinspection MismatchedQueryAndUpdateOfCollection
252250
JSONObject json = new JSONObject();
253251
json.element("result", result.getStatus() == 200 ? "OK" : "ERROR");
254252
json.element("message", result.getMessage());
@@ -265,7 +263,7 @@ private void exitWebHook(GogsResults result, StaplerResponse resp) throws IOExce
265263
* @return returns map from querystring
266264
*/
267265
private static Map<String, String> splitQuery(String qs) throws UnsupportedEncodingException {
268-
final Map<String, String> query_pairs = new LinkedHashMap<String, String>();
266+
final Map<String, String> query_pairs = new LinkedHashMap<>();
269267
final String[] pairs = qs.split("&");
270268
for (String pair : pairs) {
271269
final int idx = pair.indexOf("=");

src/main/java/org/jenkinsci/plugins/gogs/GogsWebHookCrumbExclusion.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.io.IOException;
1111

1212
@Extension
13+
@SuppressWarnings("unused")
1314
public class GogsWebHookCrumbExclusion extends CrumbExclusion {
1415

1516
@Override

0 commit comments

Comments
 (0)