drone server 1.7.0
I implemented a DRONE_VALIDATE_PLUGIN_ENDPOINT and it works correctly and if it fails validation the build shows as failed in the drone UI but drone returns a 200 to GHE even on failure.
drone server 1.7.0
I implemented a DRONE_VALIDATE_PLUGIN_ENDPOINT and it works correctly and if it fails validation the build shows as failed in the drone UI but drone returns a 200 to GHE even on failure.
This is the expected behavior. A 2xx response is returned from the server if the webhook delivery is successful. Error codes are reserved for delivery failures or catastrophic failures.
You should make use of proper HTTP status codes in order to inform users. You can use codes like
201
or202
to acknowledge receipt of payload that won’t be processed (for example, a payload delivered by a branch that’s not the default). Reserve the500
error code for catastrophic failures.
Ok … but drone is sending this 200 back to GHE. My validation plugin is returning a 404 to Drone when it’s triggered.
So if GHE triggers a drone webhook and the build fails, how does GHE know to reflect the same in the PR?
The webhook response does not have any impact on the pull request status. It sounds like perhaps the problem is not with the webhook response, but instead with the fact that a failed validation plugin does not result in Drone making an API call to set the pull request status?
Ohhh that could be. I don’t actually know how the drone/GHE integration works
I just took a look at the code and can confirm that Drone is not updating the status when the validation plugin fails, even though it should be. So this is something we will have to fix.