NullPointerException occurs when webhook triggered
gurcankavakci opened this issue · comments
Hi everyone,
I am unable to trigger build when PR is created. I select all options (push, open etc) in webhook settings.
When webhook is triggered by bitbucket server, NullPointerException occurs in jenkins system logs.
BitBucketPPRPullRequestServerAction.java:50
search for links (List<BitBucketPPRServerClone> clones = payload.getServerPullRequest().getToRef().getRepository().getLinks().getCloneProperty();
) but payload does not have link data as below sample payload json.
Jenkins system log:
Eki 30, 2023 10:54:03 ÖÖ INFO io.jenkins.plugins.bitbucketpushandpullrequest.receiver.BitBucketPPRHookReceiver doIndex
Received POST request over Bitbucket hook
Eki 30, 2023 10:54:03 ÖÖ INFO io.jenkins.plugins.bitbucketpushandpullrequest.processor.BitBucketPPRPayloadProcessorFactory createProcessor
Create BitBucketPPRPullRequestServerPayloadProcessor
Eki 30, 2023 10:54:03 ÖÖ WARNING org.eclipse.jetty.server.handler.ContextHandler$Context log
Error while serving http://jenkins-url/bitbucket-ppr-webhook/
java.lang.NullPointerException
at io.jenkins.plugins.bitbucketpushandpullrequest.action.BitBucketPPRPullRequestServerAction.<init>(BitBucketPPRPullRequestServerAction.java:50)
at io.jenkins.plugins.bitbucketpushandpullrequest.processor.BitBucketPPRPullRequestServerPayloadProcessor.buildActionForJobs(BitBucketPPRPullRequestServerPayloadProcessor.java:48)
at io.jenkins.plugins.bitbucketpushandpullrequest.processor.BitBucketPPRPullRequestServerPayloadProcessor.processPayload(BitBucketPPRPullRequestServerPayloadProcessor.java:54)
at io.jenkins.plugins.bitbucketpushandpullrequest.receiver.BitBucketPPRHookReceiver.doIndex(BitBucketPPRHookReceiver.java:83)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:397)
Caused: java.lang.reflect.InvocationTargetException
at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:401)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:409)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:207)
I changed webhook url in jenkins and bitbucket server as /bitbucket-ppr-webhook/
I upgrade plugin to 3.0.0
webhook payload:
{
"eventKey": "pr:opened",
"date": "2023-10-30T13:35:50+0300",
"actor": {
"name": "x",
...
},
"pullRequest": {
"id": 24,
"version": 0,
"title": "PR Update test",
"state": "OPEN",
"open": true,
"closed": false,
"createdDate": 1698662150803,
"updatedDate": 1698662150803,
"fromRef": {
"id": "refs/heads/feature/multibranchtest",
"displayId": "feature/multibranchtest",
"latestCommit": "93196d1a43b3e6eca9db22c1bea859da85eaa8b6",
"repository": {
"slug": "multibranch-test",
"id": 10,
"name": "multibranch-test",
"scmId": "git",
"state": "AVAILABLE",
"statusMessage": "Available",
"forkable": true,
"project": {
"key": "PRO",
"id": 6,
"name": "Pro_Test",
"public": false,
"type": "NORMAL"
},
"public": false
}
},
"toRef": {
"id": "refs/heads/master",
"displayId": "master",
"latestCommit": "e45719cfcf91431a0dec03ecad54909df13245bd",
"repository": {
"slug": "multibranch-test",
"id": 10,
"name": "multibranch-test",
"scmId": "git",
"state": "AVAILABLE",
"statusMessage": "Available",
"forkable": true,
"project": {
"key": "PRO",
"id": 6,
"name": "Pro_Test",
"public": false,
"type": "NORMAL"
},
"public": false
}
},
"locked": false,
"author": {
"user": {
"name": "x",
... },
"role": "AUTHOR",
"approved": false,
"status": "UNAPPROVED"
},
"reviewers": [
{
"user": {
"name": "e",
... },
"role": "REVIEWER",
"approved": false,
"status": "UNAPPROVED"
}
],
"participants": []
}
}
My Jenkinsfile trigger settings:
properties([
pipelineTriggers([
[
$class: 'BitBucketPPRTrigger',
triggers : [
[
$class: 'BitBucketPPRPullRequestServerTriggerFilter',
actionFilter: [
$class: 'BitBucketPPRPullRequestServerCreatedActionFilter',
]
]
]
]
])
])
Also I cant see any link field in pr:open payload sample:
https://confluence.atlassian.com/bitbucketserver/event-payload-938025882.html?utm_campaign=in-app-help&utm_medium=in-app-help&utm_source=stash#Eventpayload-pullrequest
Hi @gurcankavakci, are you using a BB Server version >=8.0?
As I see the API has changed and the clone property has been removed.
@cdelmonte-zg My BB server is v5.8.1
That's why it doesn't work, Bitbucket Server is supported from version 5.14+ (see readme), sorry :(
Anyway, I'll open a bug to remove the NullPointerException and give more context in the logs in case an unsupported version of BB Server is used.
Thank you for your interest.