Skip to content

Commit f3abbd9

Browse files
committed
fix logic to find breaking changes
1 parent 735e6af commit f3abbd9

File tree

2 files changed

+17
-19
lines changed

2 files changed

+17
-19
lines changed

.github/workflows/nightly-build.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,7 @@ jobs:
5555

5656
- name: Generate breaking changes summary
5757
id: breaking_changes
58-
run: |
59-
echo "BREAKING_CHANGES<<EOF" >> $GITHUB_OUTPUT
60-
python3 scripts/find_breaking_changes.py
61-
echo "EOF" >> $GITHUB_OUTPUT
58+
run: python3 scripts/find_breaking_changes.py
6259

6360
- name: Update dependencies
6461
run: python3 scripts/update_dependencies.py
@@ -84,7 +81,7 @@ jobs:
8481
PR_BODY="Automated update of OpenTelemetry dependencies to their latest available versions.
8582
8683
**Upstream releases with breaking changes:**
87-
${{ steps.breaking_changes.outputs.BREAKING_CHANGES }}"
84+
${{ steps.breaking_changes.outputs.breaking_changes_info }}"
8885
8986
if gh pr view "$BRANCH_NAME" --json state --jq '.state' 2>/dev/null | grep -q "OPEN"; then
9087
echo "Open PR already exists, updating description..."

scripts/find_breaking_changes.py

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ def get_releases_with_breaking_changes(repo, current_version, new_version):
4646

4747
# Check if release notes have breaking changes as headers
4848
body = release.get("body", "")
49-
breaking_header_pattern = r'^#+.*breaking changes'
50-
if re.search(breaking_header_pattern, body, re.IGNORECASE | re.MULTILINE):
49+
breaking_header_pattern = r'^\s*#+.*Breaking changes'
50+
if re.search(breaking_header_pattern, body, re.MULTILINE):
5151
breaking_releases.append(
5252
{
5353
"version": release_version,
@@ -95,23 +95,24 @@ def main():
9595
"opentelemetry-java-instrumentation", current_instrumentation_version, new_instrumentation_version
9696
)
9797

98-
# Generate breaking changes summary
99-
breaking_changes_summary = []
98+
# Output for GitHub Actions
99+
breaking_info = ""
100100

101101
if instrumentation_breaking:
102-
breaking_changes_summary.append("**Breaking changes found in opentelemetry-java-instrumentation:**")
102+
breaking_info += "**opentelemetry-java-instrumentation:**\n"
103103
for release in instrumentation_breaking:
104-
breaking_changes_summary.append(f"- [{release['name']}]({release['url']})")
104+
breaking_info += f"- [{release['name']}]({release['url']})\n"
105105

106-
# Always add contrib release link (no breaking changes detection needed)
106+
# Add contrib release link only if we have a new contrib version
107107
if new_contrib_version:
108-
breaking_changes_summary.append("**Check contrib releases:**")
109-
breaking_changes_summary.append("- [opentelemetry-java-contrib releases](https://github.com/open-telemetry/opentelemetry-java-contrib/releases)")
110-
111-
if breaking_changes_summary:
112-
print("\n" + "\n".join(breaking_changes_summary))
113-
else:
114-
print("\nNo breaking changes detected")
108+
breaking_info += "\n**Check contrib releases for potential breaking changes:**\n"
109+
breaking_info += "- [opentelemetry-java-contrib releases](https://github.com/open-telemetry/opentelemetry-java-contrib/releases)\n"
110+
111+
# Set GitHub output
112+
import os
113+
if os.environ.get("GITHUB_OUTPUT"):
114+
with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as output_file:
115+
output_file.write(f"breaking_changes_info<<EOF\n{breaking_info}EOF\n")
115116

116117

117118
if __name__ == "__main__":

0 commit comments

Comments
 (0)