Many thanks Andrey. It seems to be spot on, I'll look at this as soon as my day job ends.
@Mark you are right. I simplified a bit just mentioning the `git`step but I'm interested in instrumenting as many SCM integration as possible. Cyrille On Tuesday, January 12, 2021 at 1:14:03 PM UTC+1 [email protected] wrote: > > You can take a look at Job and Stage monitoring plugin ( > https://github.com/jenkinsci/github-autostatus-plugin). I think it does > the thing you're looking for. > On Tuesday, January 12, 2021 at 4:50:23 AM UTC+3 Mark Waite wrote: > >> On Mon, Jan 11, 2021 at 6:24 PM 'Cyrille Le Clerc' via Jenkins Developers >> <[email protected]> wrote: >> >>> Dear community, >>> >>> *Context: * >>> I'm trying to implement an OpenTelemetry instrumentation of Jenkins, >>> starting injecting distributed traces in job executions. See >>> https://github.com/cyrille-leclerc/opentelemetry-plugin >>> >>> *Question: * >>> *What is the recommended way to listen to the end of the execution of a >>> step and to collect its result?* >>> I would like to listen the end of execution of `stage`and `git` steps to >>> end a trace span reporting the result of the step. >>> >>> I found the `GraphListener#onNewHead(FlowNode)` API and I identify the >>> end of stage steps with `StepEndNode` containing a whose descriptor is a >>> `StageStep.DescriptorImpl` but >>> >>> - I am not clear on if I should track the `StepEndNode` containing a >>> `LabelAction` or an `ArgumentsAction` >>> - On none of the StepEndNode give me access to the error thrown >>> during the execution to indicate a failure, `StepEndNode#getError()` >>> and >>> `StepEndNode.getExecution.getCauseOfFailure()` return null >>> during `GraphListener#onNewHead(FlowNode)` >>> >>> I'm wondering if I have to add a `BodyExecutionCallback` to the ` >>> CpsBodyInvoker` but I didn't find an API to do this implementing a >>> listener of the pipeline executions. >>> >>> I have a similar request for `git` steps that don't even have a >>> `StepEndNode`, how can I intercept the end of execution and the >>> result/error of the execution of a `git` step. >>> >>> >> >> I don't know the answer to your listener question. This is probably not >> what you want to hear, but I think that you should focus on the checkout >> step rather than the git step. Per the git step documentation: >> >> More advanced checkout operations require the checkout step rather than >> the git step. >> >> The git step is a simplified shorthand for a subset of the more powerful >> checkout step: >> >> checkout([$class: 'GitSCM', branches: [[name: '*/master']], >> userRemoteConfigs: [[url: 'http://git-server/user/repository.git']]]) >> >> >> >> >>> I hope my question is detailed enough. >>> >>> Cyrille >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Jenkins Developers" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/jenkinsci-dev/db5376b1-3888-46f0-9429-9b34e3940ed9n%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/jenkinsci-dev/db5376b1-3888-46f0-9429-9b34e3940ed9n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/d2254a2e-250b-482f-9cb7-8cd074f8c404n%40googlegroups.com.
