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
48 changes: 48 additions & 0 deletions .github/scripts/detect-duplicate-classes.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/bin/bash

# Script to detect duplicate classes in a JAR file
# Usage: ./detect-duplicate-classes.sh <path-to-jar>

set -euo pipefail

if [ $# -ne 1 ]; then
echo "Usage: $0 <path-to-jar>" >&2
exit 1
fi

JAR_FILE="$1"

if [ ! -f "$JAR_FILE" ]; then
echo "Error: File '$JAR_FILE' not found" >&2
exit 1
fi

echo "Analyzing JAR: $JAR_FILE"
echo "Searching for duplicate classes..."
echo ""

jar tf "$JAR_FILE" | grep '\.class$' | sort > /tmp/classes.txt

DUPLICATES=$(awk '{
full_path = $0
count[full_path]++
}
END {
found = 0
for (path in count) {
if (count[path] > 1) {
if (found == 0) found = 1
print path " (appears " count[path] " times)"
}
}
if (found == 0) print ""
}' /tmp/classes.txt)

if [ -z "$DUPLICATES" ]; then
echo "✓ No duplicate classes found"
else
echo "✗ Duplicate classes detected:"
echo ""
echo "$DUPLICATES"
exit 1
fi
19 changes: 18 additions & 1 deletion .github/workflows/push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -670,4 +670,21 @@ jobs:
- name: Upload SARIF result
uses: github/codeql-action/upload-sarif@v4
with:
sarif_file: sarif.output.json
sarif_file: sarif.output.json

duplicate-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'

- name: Check duplicated class
run: |
./gradlew build -x test
.github/scripts/detect-duplicate-classes.sh agent/build/libs/solarwinds-apm-agent.jar
.github/scripts/detect-duplicate-classes.sh agent-lambda/build/libs/solarwinds-apm-agent-lambda.jar
2 changes: 1 addition & 1 deletion dependencyManagement/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ val otelSdkVersion = "1.56.0"

val mockitoVersion = "4.11.0"
val byteBuddyVersion = "1.15.10"
val joboeVersion = "10.0.26"
val joboeVersion = "10.0.27"

val opentelemetryJavaagentAlpha = "$otelAgentVersion-alpha"
val opentelemetryAlpha = "$otelSdkVersion-alpha"
Expand Down
Loading