@@ -23,6 +23,37 @@ def get_latest_instrumentation_version():
2323 print (f"Warning: Could not get latest instrumentation version: { request_error } " )
2424 return None
2525
26+ def get_latest_contrib_version ():
27+ """Get the latest version of opentelemetry-java-contrib from GitHub releases."""
28+ try :
29+ response = requests .get (
30+ 'https://api.github.com/repos/open-telemetry/opentelemetry-java-contrib/releases' ,
31+ timeout = 30
32+ )
33+ response .raise_for_status ()
34+
35+ releases = response .json ()
36+
37+ # Find the latest stable release
38+ for release in releases :
39+ if release .get ('prerelease' , False ):
40+ continue # Skip pre-releases
41+
42+ tag_name = release ['tag_name' ]
43+ # Contrib releases are typically tagged as "v1.32.0"
44+ version_match = re .match (r'^v?(\d+\.\d+\.\d+)$' , tag_name )
45+ if version_match :
46+ version = version_match .group (1 )
47+ print (f"Found contrib version: { version } " )
48+ return version
49+
50+ print ("Warning: No stable contrib releases found" )
51+ return None
52+
53+ except requests .RequestException as request_error :
54+ print (f"Warning: Could not get latest contrib version: { request_error } " )
55+ return None
56+
2657def get_latest_maven_version (group_id , artifact_id ):
2758 """Get the latest version of a Maven artifact from Maven Central."""
2859 try :
@@ -79,15 +110,35 @@ def update_gradle_file(file_path):
79110 updated = True
80111 print (f"Updated otelSnapshotVersion to { next_minor } " )
81112
82- # Update hardcoded OpenTelemetry versions in dependencyLists
83- opentelemetry_packages = [
113+ # Get latest contrib version from GitHub
114+ latest_contrib_version = get_latest_contrib_version ()
115+
116+ # Update contrib packages that are released together
117+ contrib_packages = [
84118 ('io.opentelemetry.contrib' , 'opentelemetry-aws-xray' ),
85119 ('io.opentelemetry.contrib' , 'opentelemetry-aws-resources' ),
120+ ]
121+
122+ for group_id , artifact_id in contrib_packages :
123+ if latest_contrib_version :
124+ # Pattern to match the dependency line
125+ pattern = rf'"{ re .escape (group_id )} :{ re .escape (artifact_id )} :[^"]*"'
126+ replacement = f'"{ group_id } :{ artifact_id } :{ latest_contrib_version } "'
127+
128+ if re .search (pattern , content ):
129+ new_content = re .sub (pattern , replacement , content )
130+ if new_content != content :
131+ content = new_content
132+ updated = True
133+ print (f"Updated { group_id } :{ artifact_id } to { latest_contrib_version } " )
134+
135+ # Update remaining packages using Maven Central
136+ other_packages = [
86137 ('io.opentelemetry' , 'opentelemetry-extension-aws' ),
87138 ('io.opentelemetry.proto' , 'opentelemetry-proto' ),
88139 ]
89140
90- for group_id , artifact_id in opentelemetry_packages :
141+ for group_id , artifact_id in other_packages :
91142 latest_version = get_latest_maven_version (group_id , artifact_id )
92143 if latest_version :
93144 # Pattern to match the dependency line
0 commit comments