From 4bf4eab6273685472c5c21aec3f0dd37ee0776a9 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Mon, 23 Feb 2026 13:27:42 -0800 Subject: [PATCH 1/9] use appdynamics artifactory instead of github hackery --- agent-csa-bundle/build.gradle.kts | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/agent-csa-bundle/build.gradle.kts b/agent-csa-bundle/build.gradle.kts index 8a411a2fe..0e57d9a79 100644 --- a/agent-csa-bundle/build.gradle.kts +++ b/agent-csa-bundle/build.gradle.kts @@ -29,26 +29,17 @@ val splunkAgent: Configuration by configurations.creating { } repositories { - ivy { - // Required to source artifact directly from github release page - // https://github.com/signalfx/csa-releases/releases/download//oss-agent-mtagent-extension-deployment.jar - url = uri("https://github.com/") - metadataSources { - artifact() - } - patternLayout { - ivy("[organisation]/[module]/releases/download/[revision]/[artifact].[ext]") - artifact("[organisation]/[module]/releases/download/[revision]/[artifact].[ext]") - } + maven { + url = uri("https://artifactory.bare.appdynamics.com/artifactory/maven-releases/") } } dependencies { splunkAgent(project(":agent", configuration = "shadow")) - csaReleases("signalfx:csa-releases:$csaVersion") { + csaReleases("com.cisco.security:secureapp-otel-java-extension:$csaVersion") { artifact { - name = "oss-agent-mtagent-extension-deployment" - extension = "jar" + name = "secureapp-otel-java-extension" + extension = "zip" } } } From 38c68829af898e8c33c4433af00225abd4ea9db6 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Mon, 23 Feb 2026 13:27:59 -0800 Subject: [PATCH 2/9] update to latest --- agent-csa-bundle/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-csa-bundle/build.gradle.kts b/agent-csa-bundle/build.gradle.kts index 0e57d9a79..38fa4aa87 100644 --- a/agent-csa-bundle/build.gradle.kts +++ b/agent-csa-bundle/build.gradle.kts @@ -8,7 +8,7 @@ plugins { // This should be updated for every CSA release, eventually in dependencyManagement? -val csaVersion = "25.12.0-1409" +val csaVersion = "26.2.0-1416" val otelInstrumentationVersion: String by rootProject.extra base.archivesName.set("splunk-otel-javaagent-csa") From d4030e44850f6b3a7ca811ef041ee95b7a247809 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Mon, 23 Feb 2026 17:30:17 -0800 Subject: [PATCH 3/9] only build a jar on gitlab --- agent-csa-bundle/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/agent-csa-bundle/build.gradle.kts b/agent-csa-bundle/build.gradle.kts index 38fa4aa87..231808f41 100644 --- a/agent-csa-bundle/build.gradle.kts +++ b/agent-csa-bundle/build.gradle.kts @@ -108,6 +108,7 @@ tasks { } jar { + enabled = System.getenv("GITLAB_CI") != null dependsOn(shadowCsaClasses) from(zipTree(shadowCsaClasses.get().archiveFile.get())) from(copyCsaJar.get().archiveFile.get()) From 533a8c5b05399ff03eb01ddb513ccab5594eee8b Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Tue, 24 Feb 2026 11:15:52 -0800 Subject: [PATCH 4/9] never not fighting gradle --- agent-csa-bundle/build.gradle.kts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/agent-csa-bundle/build.gradle.kts b/agent-csa-bundle/build.gradle.kts index 231808f41..f005e6abf 100644 --- a/agent-csa-bundle/build.gradle.kts +++ b/agent-csa-bundle/build.gradle.kts @@ -47,6 +47,9 @@ dependencies { tasks { // This exists purely to get the extension jar into our build dir val copyCsaJar by registering(Jar::class) { + onlyIf("csa is only built from gitlab"){ + System.getenv("GITLAB_CI") != null + } archiveFileName.set("oss-agent-mtagent-extension-deployment.jar") doFirst { from(zipTree(csaReleases.singleFile)) @@ -55,6 +58,9 @@ tasks { // Extract and rename extension classes val extractExtensionClasses by registering(Copy::class) { + onlyIf("csa is only built from gitlab"){ + System.getenv("GITLAB_CI") != null + } dependsOn(copyCsaJar) from(zipTree(copyCsaJar.get().archiveFile)) into("build/ext-exploded") @@ -62,6 +68,9 @@ tasks { // Rename class to classdata val renameClasstoClassdata by registering(Copy::class) { + onlyIf("csa is only built from gitlab"){ + System.getenv("GITLAB_CI") != null + } dependsOn(extractExtensionClasses) from("build/ext-exploded/com/cisco/mtagent/adaptors/") into("build/ext-exploded/com/cisco/mtagent/adaptors/") @@ -72,12 +81,18 @@ tasks { // Copy service file so path on disk matches path in jar val copyServiceFile by registering(Copy::class) { + onlyIf("csa is only built from gitlab"){ + System.getenv("GITLAB_CI") != null + } dependsOn(extractExtensionClasses) from("build/ext-exploded/META-INF/services/") into("build/ext-exploded/inst/META-INF/services/") } val shadowCsaClasses by registering(ShadowJar::class) { + onlyIf("csa is only built from gitlab"){ + System.getenv("GITLAB_CI") != null + } archiveFileName.set("shadow-csa-classes.jar") dependsOn(copyServiceFile, renameClasstoClassdata, splunkAgent) @@ -108,7 +123,9 @@ tasks { } jar { - enabled = System.getenv("GITLAB_CI") != null + onlyIf("csa is only built from gitlab"){ + System.getenv("GITLAB_CI") != null + } dependsOn(shadowCsaClasses) from(zipTree(shadowCsaClasses.get().archiveFile.get())) from(copyCsaJar.get().archiveFile.get()) From 3106472e2cd1a8e03736aad884fbac88dc0c16df Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Tue, 24 Feb 2026 13:02:55 -0800 Subject: [PATCH 5/9] spotless --- agent-csa-bundle/build.gradle.kts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/agent-csa-bundle/build.gradle.kts b/agent-csa-bundle/build.gradle.kts index f005e6abf..69d8a09a8 100644 --- a/agent-csa-bundle/build.gradle.kts +++ b/agent-csa-bundle/build.gradle.kts @@ -47,7 +47,7 @@ dependencies { tasks { // This exists purely to get the extension jar into our build dir val copyCsaJar by registering(Jar::class) { - onlyIf("csa is only built from gitlab"){ + onlyIf("csa is only built from gitlab") { System.getenv("GITLAB_CI") != null } archiveFileName.set("oss-agent-mtagent-extension-deployment.jar") @@ -58,7 +58,7 @@ tasks { // Extract and rename extension classes val extractExtensionClasses by registering(Copy::class) { - onlyIf("csa is only built from gitlab"){ + onlyIf("csa is only built from gitlab") { System.getenv("GITLAB_CI") != null } dependsOn(copyCsaJar) @@ -68,7 +68,7 @@ tasks { // Rename class to classdata val renameClasstoClassdata by registering(Copy::class) { - onlyIf("csa is only built from gitlab"){ + onlyIf("csa is only built from gitlab") { System.getenv("GITLAB_CI") != null } dependsOn(extractExtensionClasses) @@ -81,7 +81,7 @@ tasks { // Copy service file so path on disk matches path in jar val copyServiceFile by registering(Copy::class) { - onlyIf("csa is only built from gitlab"){ + onlyIf("csa is only built from gitlab") { System.getenv("GITLAB_CI") != null } dependsOn(extractExtensionClasses) @@ -90,7 +90,7 @@ tasks { } val shadowCsaClasses by registering(ShadowJar::class) { - onlyIf("csa is only built from gitlab"){ + onlyIf("csa is only built from gitlab") { System.getenv("GITLAB_CI") != null } archiveFileName.set("shadow-csa-classes.jar") @@ -123,7 +123,7 @@ tasks { } jar { - onlyIf("csa is only built from gitlab"){ + onlyIf("csa is only built from gitlab") { System.getenv("GITLAB_CI") != null } dependsOn(shadowCsaClasses) From d4de8b6118279654c2186651f43ccf8cceed2770 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Tue, 24 Feb 2026 13:52:02 -0800 Subject: [PATCH 6/9] tests that use autoconfigure need to reset --- instrumentation/nocode-testing/build.gradle.kts | 1 + .../instrumentation/nocode/NocodeInitializerTest.java | 3 +++ 2 files changed, 4 insertions(+) diff --git a/instrumentation/nocode-testing/build.gradle.kts b/instrumentation/nocode-testing/build.gradle.kts index 3e5c45b97..50d25a4e9 100644 --- a/instrumentation/nocode-testing/build.gradle.kts +++ b/instrumentation/nocode-testing/build.gradle.kts @@ -11,6 +11,7 @@ dependencies { exclude("io.opentelemetry.javaagent", "opentelemetry-javaagent-bootstrap") } testImplementation("org.snakeyaml:snakeyaml-engine") + testImplementation("io.opentelemetry.javaagent:opentelemetry-javaagent-extension-api") } tasks { diff --git a/instrumentation/nocode-testing/src/test/java/com/splunk/opentelemetry/instrumentation/nocode/NocodeInitializerTest.java b/instrumentation/nocode-testing/src/test/java/com/splunk/opentelemetry/instrumentation/nocode/NocodeInitializerTest.java index a9bd1c249..243404eb4 100644 --- a/instrumentation/nocode-testing/src/test/java/com/splunk/opentelemetry/instrumentation/nocode/NocodeInitializerTest.java +++ b/instrumentation/nocode-testing/src/test/java/com/splunk/opentelemetry/instrumentation/nocode/NocodeInitializerTest.java @@ -25,6 +25,7 @@ import com.splunk.opentelemetry.testing.declarativeconfig.DeclarativeConfigTestUtil; import io.opentelemetry.api.incubator.config.ConfigProvider; import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; +import io.opentelemetry.javaagent.extension.instrumentation.internal.AgentDistributionConfig; import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk; import java.io.IOException; import java.nio.file.Files; @@ -47,6 +48,8 @@ class NocodeInitializerTest { void captureRules() { previousRules = new ArrayList<>(); NocodeRules.getGlobalRules().forEach(previousRules::add); + AgentDistributionConfig.resetForTest(); + } @AfterEach From dd646b3df9b5354e9d8a109d6d4efbe50bb6350d Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Tue, 24 Feb 2026 13:54:13 -0800 Subject: [PATCH 7/9] spotless --- .../instrumentation/nocode/NocodeInitializerTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/instrumentation/nocode-testing/src/test/java/com/splunk/opentelemetry/instrumentation/nocode/NocodeInitializerTest.java b/instrumentation/nocode-testing/src/test/java/com/splunk/opentelemetry/instrumentation/nocode/NocodeInitializerTest.java index 243404eb4..ffc7e8cc1 100644 --- a/instrumentation/nocode-testing/src/test/java/com/splunk/opentelemetry/instrumentation/nocode/NocodeInitializerTest.java +++ b/instrumentation/nocode-testing/src/test/java/com/splunk/opentelemetry/instrumentation/nocode/NocodeInitializerTest.java @@ -49,7 +49,6 @@ void captureRules() { previousRules = new ArrayList<>(); NocodeRules.getGlobalRules().forEach(previousRules::add); AgentDistributionConfig.resetForTest(); - } @AfterEach From 1a102de76fb39908fa450cd61ca897091ae005de Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Wed, 25 Feb 2026 13:15:32 -0800 Subject: [PATCH 8/9] trying to simplify where this gitlab condition is actually needed... --- agent-csa-bundle/build.gradle.kts | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/agent-csa-bundle/build.gradle.kts b/agent-csa-bundle/build.gradle.kts index 69d8a09a8..ecd3e077d 100644 --- a/agent-csa-bundle/build.gradle.kts +++ b/agent-csa-bundle/build.gradle.kts @@ -47,9 +47,6 @@ dependencies { tasks { // This exists purely to get the extension jar into our build dir val copyCsaJar by registering(Jar::class) { - onlyIf("csa is only built from gitlab") { - System.getenv("GITLAB_CI") != null - } archiveFileName.set("oss-agent-mtagent-extension-deployment.jar") doFirst { from(zipTree(csaReleases.singleFile)) @@ -58,9 +55,6 @@ tasks { // Extract and rename extension classes val extractExtensionClasses by registering(Copy::class) { - onlyIf("csa is only built from gitlab") { - System.getenv("GITLAB_CI") != null - } dependsOn(copyCsaJar) from(zipTree(copyCsaJar.get().archiveFile)) into("build/ext-exploded") @@ -68,9 +62,6 @@ tasks { // Rename class to classdata val renameClasstoClassdata by registering(Copy::class) { - onlyIf("csa is only built from gitlab") { - System.getenv("GITLAB_CI") != null - } dependsOn(extractExtensionClasses) from("build/ext-exploded/com/cisco/mtagent/adaptors/") into("build/ext-exploded/com/cisco/mtagent/adaptors/") @@ -81,18 +72,12 @@ tasks { // Copy service file so path on disk matches path in jar val copyServiceFile by registering(Copy::class) { - onlyIf("csa is only built from gitlab") { - System.getenv("GITLAB_CI") != null - } dependsOn(extractExtensionClasses) from("build/ext-exploded/META-INF/services/") into("build/ext-exploded/inst/META-INF/services/") } val shadowCsaClasses by registering(ShadowJar::class) { - onlyIf("csa is only built from gitlab") { - System.getenv("GITLAB_CI") != null - } archiveFileName.set("shadow-csa-classes.jar") dependsOn(copyServiceFile, renameClasstoClassdata, splunkAgent) From 8641e928756360343ea7c1fc72bdfabdaf268dd8 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Wed, 25 Feb 2026 13:24:48 -0800 Subject: [PATCH 9/9] Revert "trying to simplify where this gitlab condition is actually needed..." This reverts commit 1a102de76fb39908fa450cd61ca897091ae005de. --- agent-csa-bundle/build.gradle.kts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/agent-csa-bundle/build.gradle.kts b/agent-csa-bundle/build.gradle.kts index ecd3e077d..69d8a09a8 100644 --- a/agent-csa-bundle/build.gradle.kts +++ b/agent-csa-bundle/build.gradle.kts @@ -47,6 +47,9 @@ dependencies { tasks { // This exists purely to get the extension jar into our build dir val copyCsaJar by registering(Jar::class) { + onlyIf("csa is only built from gitlab") { + System.getenv("GITLAB_CI") != null + } archiveFileName.set("oss-agent-mtagent-extension-deployment.jar") doFirst { from(zipTree(csaReleases.singleFile)) @@ -55,6 +58,9 @@ tasks { // Extract and rename extension classes val extractExtensionClasses by registering(Copy::class) { + onlyIf("csa is only built from gitlab") { + System.getenv("GITLAB_CI") != null + } dependsOn(copyCsaJar) from(zipTree(copyCsaJar.get().archiveFile)) into("build/ext-exploded") @@ -62,6 +68,9 @@ tasks { // Rename class to classdata val renameClasstoClassdata by registering(Copy::class) { + onlyIf("csa is only built from gitlab") { + System.getenv("GITLAB_CI") != null + } dependsOn(extractExtensionClasses) from("build/ext-exploded/com/cisco/mtagent/adaptors/") into("build/ext-exploded/com/cisco/mtagent/adaptors/") @@ -72,12 +81,18 @@ tasks { // Copy service file so path on disk matches path in jar val copyServiceFile by registering(Copy::class) { + onlyIf("csa is only built from gitlab") { + System.getenv("GITLAB_CI") != null + } dependsOn(extractExtensionClasses) from("build/ext-exploded/META-INF/services/") into("build/ext-exploded/inst/META-INF/services/") } val shadowCsaClasses by registering(ShadowJar::class) { + onlyIf("csa is only built from gitlab") { + System.getenv("GITLAB_CI") != null + } archiveFileName.set("shadow-csa-classes.jar") dependsOn(copyServiceFile, renameClasstoClassdata, splunkAgent)