Skip to content

Commit 9238452

Browse files
author
Marco Marche
committed
fix: unable to get global credentials from standard build jobs
1 parent 0f1ca19 commit 9238452

File tree

3 files changed

+32
-20
lines changed

3 files changed

+32
-20
lines changed

src/main/java/org/jenkinsci/plugins/bitbucket/BitbucketBuildStatusHelper.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -180,12 +180,12 @@ private static String guessBitbucketBuildState(final Result result) {
180180
return state;
181181
}
182182

183-
public static void notifyBuildStatus(final String credentialsId, final Run<?, ?> build,
183+
public static void notifyBuildStatus(UsernamePasswordCredentials credentials, final Run<?, ?> build,
184184
final TaskListener listener) throws Exception {
185-
notifyBuildStatus(credentialsId, build, listener, createBitbucketBuildStatusFromBuild(build));
185+
notifyBuildStatus(credentials, build, listener, createBitbucketBuildStatusFromBuild(build));
186186
}
187187

188-
public static void notifyBuildStatus(final String credentialsId, final Run<?, ?> build,
188+
public static void notifyBuildStatus(UsernamePasswordCredentials credentials, final Run<?, ?> build,
189189
final TaskListener listener, BitbucketBuildStatus buildStatus) throws Exception {
190190

191191
List<BitbucketBuildStatusResource> buildStatusResources = createBuildStatusResources(build);
@@ -208,17 +208,15 @@ public static void notifyBuildStatus(final String credentialsId, final Run<?, ?>
208208
}
209209
}
210210

211-
sendBuildStatusNotification(credentialsId, build, buildStatusResource, buildStatus, listener);
211+
sendBuildStatusNotification(credentials, build, buildStatusResource, buildStatus, listener);
212212
}
213213
}
214214

215-
public static void sendBuildStatusNotification(final String credentialsId,
215+
public static void sendBuildStatusNotification(final UsernamePasswordCredentials credentials,
216216
final Run<?, ?> build,
217217
final BitbucketBuildStatusResource buildStatusResource,
218218
final BitbucketBuildStatus buildStatus,
219219
final TaskListener listener) throws Exception {
220-
UsernamePasswordCredentials credentials = getCredentials(credentialsId, build.getParent());
221-
222220
if (credentials == null) {
223221
throw new Exception("Credentials could not be found!");
224222
}

src/main/java/org/jenkinsci/plugins/bitbucket/BitbucketBuildStatusNotifier.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,7 @@
88
import com.cloudbees.plugins.credentials.domains.URIRequirementBuilder;
99
import hudson.Extension;
1010
import hudson.Launcher;
11-
import hudson.model.AbstractBuild;
12-
import hudson.model.AbstractProject;
13-
import hudson.model.BuildListener;
14-
import hudson.model.Item;
15-
import hudson.model.Job;
11+
import hudson.model.*;
1612
import hudson.tasks.BuildStepDescriptor;
1713
import hudson.tasks.BuildStepMonitor;
1814
import hudson.tasks.Notifier;
@@ -58,7 +54,17 @@ public boolean getNotifyFinish() {
5854
}
5955

6056
public String getCredentialsId() {
61-
return this.credentialsId;
57+
return this.credentialsId != null ? this.credentialsId : this.getDescriptor().getGlobalCredentialsId();
58+
}
59+
60+
private StandardUsernamePasswordCredentials getCredentials(AbstractBuild<?,?> build) {
61+
StandardUsernamePasswordCredentials credentials = BitbucketBuildStatusHelper
62+
.getCredentials(getCredentialsId(), build.getProject());
63+
if (credentials == null) {
64+
credentials = BitbucketBuildStatusHelper
65+
.getCredentials(this.getDescriptor().getGlobalCredentialsId(), null);
66+
}
67+
return credentials;
6268
}
6369

6470
@Override
@@ -70,9 +76,8 @@ public boolean prebuild(AbstractBuild<?, ?> build, BuildListener listener) {
7076
logger.info("Bitbucket notify on start");
7177

7278
try {
73-
BitbucketBuildStatusHelper.notifyBuildStatus(getCredentialsId(), build, listener);
79+
BitbucketBuildStatusHelper.notifyBuildStatus(this.getCredentials(build), build, listener);
7480
} catch (Exception e) {
75-
logger.log(Level.INFO, "Bitbucket notify on start failed: " + e.getMessage(), e);
7681
listener.getLogger().println("Bitbucket notify on start failed: " + e.getMessage());
7782
e.printStackTrace(listener.getLogger());
7883
}
@@ -91,7 +96,7 @@ public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListen
9196
logger.info("Bitbucket notify on finish");
9297

9398
try {
94-
BitbucketBuildStatusHelper.notifyBuildStatus(getCredentialsId(), build, listener);
99+
BitbucketBuildStatusHelper.notifyBuildStatus(this.getCredentials(build), build, listener);
95100
} catch (Exception e) {
96101
logger.log(Level.INFO, "Bitbucket notify on finish failed: " + e.getMessage(), e);
97102
listener.getLogger().println("Bitbucket notify on finish failed: " + e.getMessage());

src/main/java/org/jenkinsci/plugins/bitbucket/BitbucketBuildStatusNotifierStep.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@
2424

2525
package org.jenkinsci.plugins.bitbucket;
2626

27+
import com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials;
2728
import com.google.inject.Inject;
2829

2930
import hudson.Extension;
3031
import hudson.XmlFile;
32+
import hudson.model.AbstractBuild;
3133
import hudson.model.Run;
3234
import hudson.model.TaskListener;
3335

@@ -54,9 +56,6 @@ public class BitbucketBuildStatusNotifierStep extends AbstractStepImpl {
5456

5557
private String credentialsId;
5658
public String getCredentialsId() {
57-
if (credentialsId == null) {
58-
return getDescriptor().getGlobalCredentialsId();
59-
}
6059
return this.credentialsId;
6160
}
6261

@@ -96,6 +95,16 @@ public DescriptorImpl getDescriptor() {
9695
return Jenkins.getInstance().getDescriptorByType(DescriptorImpl.class);
9796
}
9897

98+
private StandardUsernamePasswordCredentials getCredentials(Run<?,?> build) {
99+
StandardUsernamePasswordCredentials credentials = BitbucketBuildStatusHelper
100+
.getCredentials(getCredentialsId(), build.getParent());
101+
if (credentials == null) {
102+
credentials = BitbucketBuildStatusHelper
103+
.getCredentials(this.getDescriptor().getGlobalCredentialsId(), null);
104+
}
105+
return credentials;
106+
}
107+
99108
@Extension
100109
public static class DescriptorImpl extends AbstractStepDescriptorImpl {
101110

@@ -178,7 +187,7 @@ public Void run() throws Exception {
178187
BitbucketBuildStatus buildStatus = new BitbucketBuildStatus(buildState, buildKey, buildUrl, buildName,
179188
buildDescription);
180189

181-
BitbucketBuildStatusHelper.notifyBuildStatus(step.getCredentialsId(), build, taskListener, buildStatus);
190+
BitbucketBuildStatusHelper.notifyBuildStatus(step.getCredentials(build), build, taskListener, buildStatus);
182191

183192
if(buildState.equals(BitbucketBuildStatus.FAILED)) {
184193
throw new Exception(buildDescription);

0 commit comments

Comments
 (0)