diff --git a/pom.xml b/pom.xml index b8e8d6ef..27d502c6 100644 --- a/pom.xml +++ b/pom.xml @@ -60,8 +60,8 @@ 3 999999-SNAPSHOT - 2.479 - ${jenkins.baseline}.3 + 2.504 + ${jenkins.baseline}.1 jenkinsci/${project.artifactId}-plugin 1.49.0 1.49.0.75.v66006f513b_1f @@ -149,6 +149,22 @@ parsson 1.1.7 + + + + org.jenkins-ci.plugins.workflow + workflow-api + 1404.vb_1e6d0166a_33 + + + + + org.jenkins-ci.plugins.workflow + workflow-api + 1404.vb_1e6d0166a_33 + test + tests + @@ -176,6 +192,16 @@ org.apache.httpcomponents.client5 httpclient5 + + + com.fasterxml.jackson.core + jackson-core + + + + com.fasterxml.jackson.core + jackson-databind + @@ -525,10 +551,6 @@ 1.21.3 test - - org.apache.commons - commons-compress - org.slf4j slf4j-api diff --git a/src/main/java/io/jenkins/plugins/opentelemetry/job/log/OtelLogStorageFactory.java b/src/main/java/io/jenkins/plugins/opentelemetry/job/log/OtelLogStorageFactory.java index dcd4fc20..50583b3d 100644 --- a/src/main/java/io/jenkins/plugins/opentelemetry/job/log/OtelLogStorageFactory.java +++ b/src/main/java/io/jenkins/plugins/opentelemetry/job/log/OtelLogStorageFactory.java @@ -8,7 +8,6 @@ import edu.umd.cs.findbugs.annotations.NonNull; import edu.umd.cs.findbugs.annotations.Nullable; import hudson.Extension; -import hudson.ExtensionList; import hudson.model.Queue; import hudson.model.Run; import io.jenkins.plugins.opentelemetry.JenkinsControllerOpenTelemetry; @@ -19,19 +18,19 @@ import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; -import javax.annotation.PostConstruct; -import javax.inject.Inject; +import org.jenkinsci.Symbol; import org.jenkinsci.plugins.workflow.flow.FlowExecutionOwner; import org.jenkinsci.plugins.workflow.log.BrokenLogStorage; import org.jenkinsci.plugins.workflow.log.LogStorage; import org.jenkinsci.plugins.workflow.log.LogStorageFactory; +import org.jenkinsci.plugins.workflow.log.LogStorageFactoryDescriptor; +import org.kohsuke.stapler.DataBoundConstructor; /** * Binds Otel Logs to Pipeline logs. *

* See Pipeline Cloudwatch Logs - PipelineBridge */ -@Extension public final class OtelLogStorageFactory implements LogStorageFactory, OpenTelemetryLifecycleListener { private static final Logger logger = Logger.getLogger(OtelLogStorageFactory.class.getName()); @@ -41,16 +40,17 @@ public final class OtelLogStorageFactory implements LogStorageFactory, OpenTelem System.setProperty("org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep.USE_WATCHING", "true"); } - @Inject - JenkinsControllerOpenTelemetry jenkinsControllerOpenTelemetry; + private final JenkinsControllerOpenTelemetry jenkinsControllerOpenTelemetry; - @Nullable - private OtelTraceService otelTraceService; + private final OtelTraceService otelTraceService; - private Tracer tracer; + private final Tracer tracer; - static OtelLogStorageFactory get() { - return ExtensionList.lookupSingleton(OtelLogStorageFactory.class); + @DataBoundConstructor + public OtelLogStorageFactory() { + jenkinsControllerOpenTelemetry = JenkinsControllerOpenTelemetry.get(); + otelTraceService = OtelTraceService.get(); + tracer = jenkinsControllerOpenTelemetry.getDefaultTracer(); } /** @@ -62,7 +62,7 @@ static OtelLogStorageFactory get() { @Override public LogStorage forBuild(@NonNull final FlowExecutionOwner owner) { LogStorage ret = null; - if (!getJenkinsControllerOpenTelemetry().isLogsEnabled()) { + if (!jenkinsControllerOpenTelemetry.isLogsEnabled()) { logger.log(Level.FINE, () -> "OTel Logs disabled"); return ret; } @@ -86,35 +86,23 @@ private LogStorage forExec(@NonNull Queue.Executable exec) { if (exec instanceof Run run && run.getAction(MonitoringAction.class) != null) { // it's a pipeline with monitoring data logger.log(Level.FINEST, () -> "forExec(" + run + ")"); - ret = new OtelLogStorage(run, getOtelTraceService(), tracer); + ret = new OtelLogStorage(run, otelTraceService, tracer); } return ret; } - /** - * Workaround dependency injection problem. @Inject doesn't work here - */ - @NonNull - private JenkinsControllerOpenTelemetry getJenkinsControllerOpenTelemetry() { - if (jenkinsControllerOpenTelemetry == null) { - jenkinsControllerOpenTelemetry = JenkinsControllerOpenTelemetry.get(); + @Extension() + @Symbol("opentelemetry") + public static final class DescriptorImpl extends LogStorageFactoryDescriptor { + @NonNull + @Override + public String getDisplayName() { + return "Open Telemetry"; } - return jenkinsControllerOpenTelemetry; - } - /** - * Workaround dependency injection problem. @Inject doesn't work here - */ - @NonNull - private OtelTraceService getOtelTraceService() { - if (otelTraceService == null) { - otelTraceService = OtelTraceService.get(); + @Override + public LogStorageFactory getDefaultInstance() { + return new OtelLogStorageFactory(); } - return otelTraceService; - } - - @PostConstruct - public void postConstruct() { - this.tracer = jenkinsControllerOpenTelemetry.getDefaultTracer(); } }