Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change to release after SDK and before Instrumentation #1581

Merged
merged 1 commit into from
Dec 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ as the last step, which publishes a snapshot build to

## Release cadence

This repository roughly targets monthly minor releases from the `main` branch on the Friday after
This repository roughly targets monthly minor releases from the `main` branch on the Tuesday after
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm thinking to change the Instrumentation release date to the Thursday after this

the second Monday of the month (roughly a couple of days after the monthly minor release of
[opentelemetry-java-instrumentation](https://github.com/open-telemetry/opentelemetry-java-instrumentation)).
[opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)).

## Preparing a new major or minor release

Expand Down
10 changes: 1 addition & 9 deletions dependencyManagement/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,13 @@ data class DependencySet(val group: String, val version: String, val modules: Li
val dependencyVersions = hashMapOf<String, String>()
rootProject.extra["versions"] = dependencyVersions

val otelInstrumentationVersion = "2.10.0-alpha"

val DEPENDENCY_BOMS = listOf(
"com.fasterxml.jackson:jackson-bom:2.18.2",
"com.google.guava:guava-bom:33.3.1-jre",
"com.linecorp.armeria:armeria-bom:1.31.2",
"org.junit:junit-bom:5.11.3",
"io.grpc:grpc-bom:1.68.2",
"io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:${otelInstrumentationVersion}",
"io.opentelemetry:opentelemetry-bom-alpha:1.44.1-alpha",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't update to 1.45.0 in order to ensure everything works smoothly when renovate updates it after this PR is merged

"org.testcontainers:testcontainers-bom:1.20.4"
)

Expand Down Expand Up @@ -78,12 +76,6 @@ javaPlatform {

dependencies {
for (bom in DEPENDENCY_BOMS) {
// this is needed until io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha
// is updated to contain the latest version of opentelemetry-semconv
if (bom.equals("io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:${otelInstrumentationVersion}")) {
api(platform(bom))
continue
}
api(enforcedPlatform(bom))
val split = bom.split(':')
dependencyVersions[split[0]] = split[2]
Expand Down
2 changes: 1 addition & 1 deletion jmx-scraper/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ dependencies {
runtimeOnly("io.opentelemetry:opentelemetry-exporter-otlp")
runtimeOnly("io.opentelemetry:opentelemetry-exporter-logging")

implementation("io.opentelemetry.instrumentation:opentelemetry-jmx-metrics")
implementation("io.opentelemetry.instrumentation:opentelemetry-jmx-metrics:2.10.0-alpha")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moving contrib before instrumentation in the release allows to remove this circular dependency if we move the JMX insights code directly into contrib and then reuse it as-is in instrumentation. Do you think this would be something relevant to do ? It also changes a bit the "ownership" of the JMX-related code in the instrumentation by relying on the component owners of contrib instead.

Copy link
Member Author

@trask trask Dec 9, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I'd prefer to go in the other direction and keep / move things that we release as part of the core java agent distribution into the java instrumentation repo (@laurit wdyt? EDIT: we could introduce "component owners" in that repo similar to this repo)

@jackshirazi would this address your concern about release ordering, and we could go back to releasing instrumentation repo first and then contrib repo?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I understand that means:

  • moving contrib components that are included in instrumentation to instrumentation (with same component owners), for example: cloud resource attribute providers, aws x-ray propagator and baggage processor
  • removing any dependency from instrumentation to contrib
  • contrib can still depend on instrumentation and/or SDK, for example like the jmx-scraper reusing the instrumentation/jmx-metrics component.

One interesting aspect of adding component owners directly in instrumentation is that it helps to delegate changes that are related to those components to their respective owners.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jackshirazi would this address your concern about release ordering, and we could go back to releasing instrumentation repo first and then contrib repo?

The concern is that if any contrib project needs a fix, it's an extra month before the agent gets that fix (if we release agent before contrib). It's not a dramatically bad concern, and it hasn't been an actual issue so far.


testImplementation("org.junit-pioneer:junit-pioneer")
testImplementation("io.opentelemetry:opentelemetry-sdk-testing")
Expand Down
4 changes: 0 additions & 4 deletions resource-providers/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,7 @@ dependencies {
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi")
compileOnly("io.opentelemetry.semconv:opentelemetry-semconv")
compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling")
testImplementation("io.opentelemetry.semconv:opentelemetry-semconv")
testImplementation("com.google.auto.service:auto-service")
testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
testImplementation("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling") {
exclude("io.opentelemetry.javaagent", "opentelemetry-javaagent-tooling-java9")
}
}
10 changes: 7 additions & 3 deletions runtime-attach/runtime-attach/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,19 @@ val agent: Configuration by configurations.creating {
isCanBeConsumed = false
}

// can't use bom since that will cause conflicts when updating to the latest SDK version
// and before updating to the latest instrumentation version
val otelInstrumentationVersion = "2.10.0"

dependencies {
implementation(project(":runtime-attach:runtime-attach-core"))
agent("io.opentelemetry.javaagent:opentelemetry-javaagent")
agent("io.opentelemetry.javaagent:opentelemetry-javaagent:$otelInstrumentationVersion")

// Used by byte-buddy but not brought in as a transitive dependency.
compileOnly("com.google.code.findbugs:annotations")

testImplementation("io.opentelemetry.javaagent:opentelemetry-javaagent")
testImplementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations")
testImplementation("io.opentelemetry.javaagent:opentelemetry-javaagent:$otelInstrumentationVersion")
testImplementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:$otelInstrumentationVersion")
testImplementation("org.junit.jupiter:junit-jupiter-api")
testImplementation("org.assertj:assertj-core")
}
Expand Down
13 changes: 9 additions & 4 deletions static-instrumenter/agent-extension/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,20 @@ otelJava {
minJavaVersionSupported.set(JavaVersion.VERSION_11)
}

// can't use bom since that will cause conflicts when updating to the latest SDK version
// and before updating to the latest instrumentation version
val otelInstrumentationVersion = "2.10.0"
val otelInstrumentationAlphaVersion = "2.10.0-alpha"

dependencies {
annotationProcessor("com.google.auto.service:auto-service")
compileOnly("com.google.auto.service:auto-service")

compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling")
compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api")
compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-extension-api")
compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling:$otelInstrumentationAlphaVersion")
compileOnly("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:$otelInstrumentationVersion")
compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-extension-api:$otelInstrumentationAlphaVersion")
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
compileOnly("io.opentelemetry.javaagent:opentelemetry-muzzle")
compileOnly("io.opentelemetry.javaagent:opentelemetry-muzzle:$otelInstrumentationAlphaVersion")

compileOnly(project(":static-instrumenter:bootstrap"))
}
2 changes: 1 addition & 1 deletion static-instrumenter/agent-instrumenter/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ dependencies {
implementation("org.slf4j:slf4j-api")
runtimeOnly("org.slf4j:slf4j-simple")

javaagent("io.opentelemetry.javaagent:opentelemetry-javaagent")
javaagent("io.opentelemetry.javaagent:opentelemetry-javaagent:2.10.0")

bootstrapLibs(project(":static-instrumenter:bootstrap"))
javaagentLibs(project(":static-instrumenter:agent-extension"))
Expand Down
Loading