Skip to content
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
3 changes: 3 additions & 0 deletions .github/workflows/nightly-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ jobs:
otel_contrib_version: ${{ steps.get_versions.outputs.otel_contrib_version }}
aws_sdk_ext_version: ${{ steps.get_versions.outputs.opentelemetry_sdk_extension_aws_version }}
aws_xray_prop_version: ${{ steps.get_versions.outputs.opentelemetry_propagator_aws_xray_version }}
openai_agents_v2_version: ${{ steps.get_versions.outputs.opentelemetry_instrumentation_openai_agents_v2_version }}
breaking_changes_info: ${{ steps.breaking_changes.outputs.breaking_changes_info }}

steps:
Expand Down Expand Up @@ -75,6 +76,7 @@ jobs:
OTEL_CONTRIB_VERSION: ${{ steps.get_versions.outputs.otel_contrib_version }}
OPENTELEMETRY_SDK_EXTENSION_AWS_VERSION: ${{ steps.get_versions.outputs.opentelemetry_sdk_extension_aws_version }}
OPENTELEMETRY_PROPAGATOR_AWS_XRAY_VERSION: ${{ steps.get_versions.outputs.opentelemetry_propagator_aws_xray_version }}
OPENTELEMETRY_INSTRUMENTATION_OPENAI_AGENTS_V2_VERSION: ${{ steps.get_versions.outputs.opentelemetry_instrumentation_openai_agents_v2_version }}
run: python scripts/update_dependencies.py

- name: Check for changes and commit
Expand Down Expand Up @@ -145,6 +147,7 @@ jobs:
- [OpenTelemetry Contrib](https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/v${{ needs.update-dependencies.outputs.otel_contrib_version }}): ${{ needs.update-dependencies.outputs.otel_contrib_version }}
- [opentelemetry-sdk-extension-aws](https://pypi.org/project/opentelemetry-sdk-extension-aws/${{ needs.update-dependencies.outputs.aws_sdk_ext_version }}/): ${{ needs.update-dependencies.outputs.aws_sdk_ext_version }}
- [opentelemetry-propagator-aws-xray](https://pypi.org/project/opentelemetry-propagator-aws-xray/${{ needs.update-dependencies.outputs.aws_xray_prop_version }}/): ${{ needs.update-dependencies.outputs.aws_xray_prop_version }}
- [opentelemetry-instrumentation-openai-agents-v2](https://pypi.org/project/opentelemetry-instrumentation-openai-agents-v2/${{ needs.update-dependencies.outputs.openai_agents_v2_version }}/): ${{ needs.update-dependencies.outputs.openai_agents_v2_version }}

**Upstream releases with breaking changes:**
Note: the mechanism to detect upstream breaking changes is not perfect. Be sure to check all new releases and understand if any additional changes need to be addressed.
Expand Down
19 changes: 9 additions & 10 deletions scripts/get_upstream_versions.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@

import requests

# AWS-specific packages with independent versioning
AWS_DEPS = [
# Packages with independent versioning (not tied to opentelemetry-python or contrib)
INDEPENDENT_DEPS = [
"opentelemetry-sdk-extension-aws",
"opentelemetry-propagator-aws-xray",
"opentelemetry-instrumentation-openai-agents-v2",
]


Expand Down Expand Up @@ -44,10 +45,10 @@ def get_latest_otel_versions():
sys.exit(1)


def get_latest_aws_versions():
"""Get latest versions of AWS dependencies using pip."""
def get_latest_independent_versions():
"""Get latest versions of independently-versioned dependencies using pip."""
versions = {}
for dep in AWS_DEPS:
for dep in INDEPENDENT_DEPS:
try:
result = subprocess.run(["pip", "index", "versions", dep], capture_output=True, text=True, check=True)
# Parse output like "package (1.2.3)" from first line
Expand All @@ -63,13 +64,12 @@ def get_latest_aws_versions():

def main():
otel_python_version, otel_contrib_version = get_latest_otel_versions()
aws_versions = get_latest_aws_versions()
independent_versions = get_latest_independent_versions()

print(f"OTEL_PYTHON_VERSION={otel_python_version}")
print(f"OTEL_CONTRIB_VERSION={otel_contrib_version}")

# Print AWS dependency versions
for dep, version in aws_versions.items():
for dep, version in independent_versions.items():
env_name = dep.replace("-", "_").upper() + "_VERSION"
print(f"{env_name}={version}")

Expand All @@ -79,8 +79,7 @@ def main():
output_file.write(f"otel_python_version={otel_python_version}\n")
output_file.write(f"otel_contrib_version={otel_contrib_version}\n")

# Write AWS dependency versions
for dep, version in aws_versions.items():
for dep, version in independent_versions.items():
env_name = dep.replace("-", "_").lower() + "_version"
output_file.write(f"{env_name}={version}\n")

Expand Down
20 changes: 12 additions & 8 deletions scripts/update_dependencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
"opentelemetry-instrumentation-sqlite3",
"opentelemetry-instrumentation-starlette",
"opentelemetry-instrumentation-system-metrics",
"opentelemetry-instrumentation-threading",
"opentelemetry-instrumentation-tornado",
"opentelemetry-instrumentation-tortoiseorm",
"opentelemetry-instrumentation-urllib",
Expand All @@ -70,10 +71,11 @@
"opentelemetry-instrumentation-cassandra",
]

# AWS-specific packages with independent versioning
AWS_DEPS = [
# Packages with independent versioning (not tied to opentelemetry-python or contrib)
INDEPENDENT_DEPS = [
"opentelemetry-sdk-extension-aws",
"opentelemetry-propagator-aws-xray",
"opentelemetry-instrumentation-openai-agents-v2",
]


Expand Down Expand Up @@ -104,7 +106,7 @@ def _replace_tox_repo_branches(content, otel_python_version, otel_contrib_versio
return content, bool(count)


def update_file_dependencies(file_path, otel_python_version, otel_contrib_version, aws_versions):
def update_file_dependencies(file_path, otel_python_version, otel_contrib_version, independent_versions):
"""Update all Otel dependencies in a given file"""
try:
with open(file_path, "r", encoding="utf-8") as input_file:
Expand All @@ -118,7 +120,7 @@ def update_file_dependencies(file_path, otel_python_version, otel_contrib_versio
content, changed = _replace_dep_versions(content, CONTRIB_DEPS, otel_contrib_version)
updated = updated or changed

for dep, version in aws_versions.items():
for dep, version in independent_versions.items():
if version:
content, changed = _replace_dep_versions(content, [dep], version)
updated = updated or changed
Expand All @@ -142,18 +144,20 @@ def main():
otel_contrib_version = os.environ.get("OTEL_CONTRIB_VERSION")
aws_sdk_ext_version = os.environ.get("OPENTELEMETRY_SDK_EXTENSION_AWS_VERSION")
aws_xray_prop_version = os.environ.get("OPENTELEMETRY_PROPAGATOR_AWS_XRAY_VERSION")
openai_agents_v2_version = os.environ.get("OPENTELEMETRY_INSTRUMENTATION_OPENAI_AGENTS_V2_VERSION")

if not otel_python_version or not otel_contrib_version:
print("Error: OTEL_PYTHON_VERSION and OTEL_CONTRIB_VERSION environment variables required")
sys.exit(1)

if not aws_sdk_ext_version or not aws_xray_prop_version:
print("Error: AWS dependency versions required")
if not aws_sdk_ext_version or not aws_xray_prop_version or not openai_agents_v2_version:
print("Error: independent dependency versions required")
sys.exit(1)

aws_versions = {
independent_versions = {
"opentelemetry-sdk-extension-aws": aws_sdk_ext_version,
"opentelemetry-propagator-aws-xray": aws_xray_prop_version,
"opentelemetry-instrumentation-openai-agents-v2": openai_agents_v2_version,
}

# All files to update
Expand All @@ -168,7 +172,7 @@ def main():

any_updated = False
for file_path in files_to_update:
if update_file_dependencies(file_path, otel_python_version, otel_contrib_version, aws_versions):
if update_file_dependencies(file_path, otel_python_version, otel_contrib_version, independent_versions):
any_updated = True

if any_updated:
Expand Down
Loading