Skip to content

Commit 61a02dc

Browse files
author
HeZhengQing
committed
Merge branch 'dev/4.5.3' of github.com:AgoraIO/API-Examples into dev/4.5.3
2 parents 893bab8 + 3818b3a commit 61a02dc

File tree

4 files changed

+197
-37
lines changed

4 files changed

+197
-37
lines changed

.github/ci/build/build_android.sh

Lines changed: 161 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@
3939
##################################
4040
export PATH=$PATH:/opt/homebrew/bin
4141

42+
# Record build start time
43+
START_TIME=$(date +%s)
44+
echo "=========================================="
45+
echo "Build started at: $(date '+%Y-%m-%d %H:%M:%S')"
46+
echo "=========================================="
47+
echo ""
48+
4249
echo Package_Publish: $Package_Publish
4350
echo is_tag_fetch: $is_tag_fetch
4451
echo arch: $arch
@@ -48,23 +55,108 @@ echo build_date: $build_date
4855
echo build_time: $build_time
4956
echo release_version: $release_version
5057
echo short_version: $short_version
58+
echo BUILD_NUMBER: $BUILD_NUMBER
5159
echo pwd: `pwd`
5260
echo sdk_url: $sdk_url
5361
echo android_direction: $android_direction
62+
echo compile_project: $compile_project
63+
echo compress_apiexample: $compress_apiexample
64+
echo api_examples_branch: $api_examples_branch
65+
66+
# Validate required variables
67+
if [ -z "$android_direction" ]; then
68+
echo "Error: android_direction variable is not set"
69+
exit 1
70+
fi
71+
72+
# ===== Version Consistency Check =====
73+
echo ""
74+
echo "=========================================="
75+
echo "Checking version consistency..."
76+
echo "=========================================="
77+
78+
# Extract version number from branch name (supports formats like dev/4.6.2, release/4.6.2, etc.)
79+
BRANCH_VERSION=$(echo $api_examples_branch | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n 1)
80+
81+
if [ -z "$BRANCH_VERSION" ]; then
82+
echo ""
83+
echo "=========================================="
84+
echo "❌ CI BUILD FAILED: CANNOT EXTRACT VERSION"
85+
echo "=========================================="
86+
echo "Cannot extract version from branch name: $api_examples_branch"
87+
echo "Branch name must contain version number (e.g., dev/4.6.2, release/4.6.2)"
88+
echo "=========================================="
89+
exit 1
90+
fi
91+
92+
echo "Branch version: $BRANCH_VERSION"
93+
echo ""
94+
95+
# Check all gradle.properties files
96+
GRADLE_FILES=(
97+
"Android/APIExample/gradle.properties"
98+
"Android/APIExample-Audio/gradle.properties"
99+
"Android/APIExample-Compose/gradle.properties"
100+
)
101+
102+
VERSION_MISMATCH=false
103+
104+
for gradle_file in "${GRADLE_FILES[@]}"; do
105+
if [ -f "$gradle_file" ]; then
106+
GRADLE_VERSION=$(grep "rtc_sdk_version" "$gradle_file" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
107+
echo "Checking $gradle_file: $GRADLE_VERSION"
108+
109+
if [ "$GRADLE_VERSION" != "$BRANCH_VERSION" ]; then
110+
echo "❌ ERROR: Version mismatch in $gradle_file"
111+
echo " Branch version: $BRANCH_VERSION"
112+
echo " Gradle version: $GRADLE_VERSION"
113+
VERSION_MISMATCH=true
114+
else
115+
echo "✅ Version matched: $GRADLE_VERSION"
116+
fi
117+
else
118+
echo "⚠️ Warning: $gradle_file not found"
119+
fi
120+
echo ""
121+
done
122+
123+
if [ "$VERSION_MISMATCH" = true ]; then
124+
echo ""
125+
echo "=========================================="
126+
echo "❌ CI BUILD FAILED: VERSION MISMATCH"
127+
echo "=========================================="
128+
echo "Branch name contains version: $BRANCH_VERSION"
129+
echo "But gradle.properties has different version(s)"
130+
echo ""
131+
echo "Please update rtc_sdk_version in all gradle.properties files to: $BRANCH_VERSION"
132+
echo "=========================================="
133+
exit 1
134+
fi
135+
136+
echo "✅ All version checks passed!"
137+
echo "=========================================="
138+
echo ""
54139

55140
unzip_name=Agora_Native_SDK_for_Android_FULL_DEFAULT
56141
zip_name=Agora_Native_SDK_for_Android_FULL_DEFAULT.zip
57142
if [ -z "$sdk_url" ] || [ "$sdk_url" = "none" ]; then
58-
echo "sdk_url is empty"
143+
echo "sdk_url is empty, using default SDK structure"
59144
echo unzip_name: $unzip_name
60145
echo zip_name: $zip_name
61146
else
62147
zip_name=${sdk_url##*/}
63148
echo zip_name: $zip_name
64149

150+
# Download SDK
151+
echo "Downloading SDK from: $sdk_url"
65152
# env LC_ALL=en_US.UTF-8 python3 $WORKSPACE/artifactory_utils.py --action=download_file --file=$sdk_url || exit 1
66153
curl -o $zip_name $sdk_url || exit 1
154+
echo "✅ SDK downloaded successfully"
155+
156+
# Extract SDK
157+
echo "Extracting SDK package..."
67158
7za x ./$zip_name -y > log.txt
159+
echo "✅ SDK extracted successfully"
68160

69161
# Support top-level directory name containing 'Agora' or 'Shengwang'
70162
unzip_name=`ls -S -d */ | grep -E 'Agora|Shengwang' | head -n 1 | sed 's/\///g'`
@@ -74,38 +166,97 @@ else
74166
fi
75167
echo unzip_name: $unzip_name
76168

169+
# Clean up unnecessary files
170+
echo "Cleaning up unnecessary files..."
77171
rm -rf ./$unzip_name/rtc/bin
78172
rm -rf ./$unzip_name/rtc/demo
79173
rm -f ./$unzip_name/.commits
80174
rm -f ./$unzip_name/spec
81175
rm -rf ./$unzip_name/pom
176+
echo "✅ Cleanup completed"
82177
fi
83178

84179
mkdir -p ./$unzip_name/rtc/samples/${android_direction} || exit 1
85180
rm -rf ./$unzip_name/rtc/samples/${android_direction}/*
86181

182+
echo ""
183+
echo "Copying API Example code from ./Android/${android_direction}..."
87184
if [ -d "./Android/${android_direction}" ]; then
88185
cp -rf ./Android/${android_direction}/* ./$unzip_name/rtc/samples/${android_direction}/ || exit 1
186+
echo "✅ API Example code copied successfully"
89187
else
90188
echo "Error: Source directory ./Android/${android_direction} does not exist"
91189
exit 1
92190
fi
191+
echo ""
93192

94-
7za a -tzip result.zip -r $unzip_name > log.txt
95-
mv result.zip $WORKSPACE/withAPIExample_${BUILD_NUMBER}_$zip_name
96-
97-
if [ $compress_apiexample = true ]; then
98-
onlyCodeZipName=${android_direction}_onlyCode.zip
99-
7za a -tzip $onlyCodeZipName -r ./$unzip_name/rtc/samples/${android_direction} >> log.txt
100-
mv $onlyCodeZipName $WORKSPACE/APIExample_onlyCode_${BUILD_NUMBER}_$zip_name
193+
if [ "$compress_apiexample" = true ]; then
194+
# Compress only API Example code (without SDK)
195+
echo "Creating code-only package..."
196+
TEMP_ZIP_NAME="temp_code_only.zip"
197+
7za a -tzip $TEMP_ZIP_NAME -r ./$unzip_name/rtc/samples/${android_direction} > log.txt
198+
echo "✅ Code-only package created"
199+
200+
# Generate final output zip name with version
201+
OUTPUT_ZIP_NAME="Agora_Native_SDK_for_Android_v${BRANCH_VERSION}_${android_direction}_${BUILD_NUMBER}.zip"
202+
echo "Output zip name: $OUTPUT_ZIP_NAME"
203+
mv $TEMP_ZIP_NAME $WORKSPACE/$OUTPUT_ZIP_NAME
204+
205+
# Display package size
206+
echo "Package size: $(du -h $WORKSPACE/$OUTPUT_ZIP_NAME | cut -f1)"
207+
else
208+
# Compress full SDK with API Example
209+
echo "Creating full package with SDK..."
210+
TEMP_ZIP_NAME="temp_with_sdk.zip"
211+
7za a -tzip $TEMP_ZIP_NAME -r $unzip_name > log.txt
212+
echo "✅ Full package created"
213+
214+
# Generate final output zip name with version (with SDK)
215+
OUTPUT_ZIP_NAME="withSDK_Agora_Native_SDK_for_Android_v${BRANCH_VERSION}_${android_direction}_${BUILD_NUMBER}.zip"
216+
echo "Output zip name: $OUTPUT_ZIP_NAME"
217+
mv $TEMP_ZIP_NAME $WORKSPACE/$OUTPUT_ZIP_NAME
218+
219+
# Display package size
220+
echo "Package size: $(du -h $WORKSPACE/$OUTPUT_ZIP_NAME | cut -f1)"
101221
fi
222+
echo ""
102223

103224
if [ $compile_project = true ]; then
225+
echo "Starting project compilation..."
104226
cd ./$unzip_name/rtc/samples/${android_direction} || exit 1
227+
228+
# Try to compile, but don't fail the build if compilation fails
105229
if [ -z "$sdk_url" ] || [ "$sdk_url" = "none" ]; then
106-
./cloud_build.sh false || exit 1
230+
./cloud_build.sh false || echo "⚠️ Warning: Project compilation failed, but continuing..."
107231
else
108-
./cloud_build.sh true || exit 1
232+
./cloud_build.sh true || echo "⚠️ Warning: Project compilation failed, but continuing..."
109233
fi
234+
235+
# Check if compilation was successful
236+
if [ $? -eq 0 ]; then
237+
echo "✅ Project compiled successfully"
238+
else
239+
echo "⚠️ Project compilation had issues, but package was created successfully"
240+
fi
241+
echo ""
242+
fi
243+
244+
# Calculate and display build duration
245+
END_TIME=$(date +%s)
246+
DURATION=$((END_TIME - START_TIME))
247+
MINUTES=$((DURATION / 60))
248+
SECONDS=$((DURATION % 60))
249+
250+
echo ""
251+
echo "=========================================="
252+
echo "✅ BUILD COMPLETED SUCCESSFULLY"
253+
echo "=========================================="
254+
echo "Completed at: $(date '+%Y-%m-%d %H:%M:%S')"
255+
if [ $MINUTES -gt 0 ]; then
256+
echo "Total duration: ${MINUTES}m ${SECONDS}s"
257+
else
258+
echo "Total duration: ${SECONDS}s"
110259
fi
260+
echo "Output package: $OUTPUT_ZIP_NAME"
261+
echo "=========================================="
111262

Android/APIExample-Audio/cloud_build.sh

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,23 +46,26 @@ rm -f app/src/main/res/values/string_configs.xml-e
4646
./gradlew clean || exit 1
4747
./gradlew :app:assembleRelease || exit 1
4848

49+
# Extract SDK version from gradle.properties
4950
SDK_VERSION=""
50-
if [ "$1" = "false" ]; then
51-
sdk_version_file="./gradle.properties"
52-
if [[ -f "$sdk_version_file" ]]; then
51+
sdk_version_file="./gradle.properties"
52+
if [[ -f "$sdk_version_file" ]]; then
5353
rtc_sdk_version=$(grep "rtc_sdk_version" "$sdk_version_file" | cut -d'=' -f2)
5454
if [[ -n "$rtc_sdk_version" ]]; then
5555
SDK_VERSION=$(echo "$rtc_sdk_version" | sed 's/^[ \t]*//;s/[ \t]*$//')
56+
echo "SDK Version from gradle.properties: $SDK_VERSION"
5657
else
57-
echo "rtc_sdk_version value not found"
58+
echo "Warning: rtc_sdk_version value not found in gradle.properties"
59+
SDK_VERSION="unknown"
5860
fi
5961
else
60-
echo "file not found: $sdk_version_file"
61-
fi
62-
else
63-
SDK_VERSION=$(echo $sdk_url | cut -d "/" -f 5)
62+
echo "Warning: gradle.properties file not found"
63+
SDK_VERSION="unknown"
6464
fi
6565

6666
if [ "$WORKSPACE" != "" ]; then
67-
cp app/build/outputs/apk/release/*.apk $WORKSPACE/APIExample-Audio_${BUILD_NUMBER}_${SDK_VERSION}_$(date "+%Y%m%d%H%M%S").apk
67+
PROJECT_NAME="Agora-APIExample-Audio"
68+
APK_NAME="${PROJECT_NAME}_${BUILD_NUMBER}_${SDK_VERSION}_$(date "+%Y%m%d%H%M%S").apk"
69+
echo "Copying APK to: $WORKSPACE/$APK_NAME"
70+
cp app/build/outputs/apk/release/*.apk "$WORKSPACE/$APK_NAME"
6871
fi

Android/APIExample-Compose/cloud_build.sh

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,23 +46,26 @@ fi
4646
./gradlew clean || exit 1
4747
./gradlew :app:assembleRelease || exit 1
4848

49+
# Extract SDK version from gradle.properties
4950
SDK_VERSION=""
50-
if [ "$1" = "false" ]; then
51-
sdk_version_file="./gradle.properties"
52-
if [[ -f "$sdk_version_file" ]]; then
51+
sdk_version_file="./gradle.properties"
52+
if [[ -f "$sdk_version_file" ]]; then
5353
rtc_sdk_version=$(grep "rtc_sdk_version" "$sdk_version_file" | cut -d'=' -f2)
5454
if [[ -n "$rtc_sdk_version" ]]; then
5555
SDK_VERSION=$(echo "$rtc_sdk_version" | sed 's/^[ \t]*//;s/[ \t]*$//')
56+
echo "SDK Version from gradle.properties: $SDK_VERSION"
5657
else
57-
echo "rtc_sdk_version value not found"
58+
echo "Warning: rtc_sdk_version value not found in gradle.properties"
59+
SDK_VERSION="unknown"
5860
fi
5961
else
60-
echo "file not found: $sdk_version_file"
61-
fi
62-
else
63-
SDK_VERSION=$(echo $sdk_url | cut -d "/" -f 5)
62+
echo "Warning: gradle.properties file not found"
63+
SDK_VERSION="unknown"
6464
fi
6565

6666
if [ "$WORKSPACE" != "" ]; then
67-
cp app/build/outputs/apk/release/*.apk $WORKSPACE/APIExample-Compose_${BUILD_NUMBER}_${SDK_VERSION}_$(date "+%Y%m%d%H%M%S").apk
67+
PROJECT_NAME="Agora-APIExample-Compose"
68+
APK_NAME="${PROJECT_NAME}_${BUILD_NUMBER}_${SDK_VERSION}_$(date "+%Y%m%d%H%M%S").apk"
69+
echo "Copying APK to: $WORKSPACE/$APK_NAME"
70+
cp app/build/outputs/apk/release/*.apk "$WORKSPACE/$APK_NAME"
6871
fi

Android/APIExample/cloud_build.sh

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,23 +89,26 @@ cd - || exit 1
8989
./gradlew clean || exit 1
9090
./gradlew :app:assembleRelease || exit 1
9191

92+
# Extract SDK version from gradle.properties
9293
SDK_VERSION=""
93-
if [ "$1" = "false" ]; then
94-
sdk_version_file="./gradle.properties"
95-
if [[ -f "$sdk_version_file" ]]; then
94+
sdk_version_file="./gradle.properties"
95+
if [[ -f "$sdk_version_file" ]]; then
9696
rtc_sdk_version=$(grep "rtc_sdk_version" "$sdk_version_file" | cut -d'=' -f2)
9797
if [[ -n "$rtc_sdk_version" ]]; then
9898
SDK_VERSION=$(echo "$rtc_sdk_version" | sed 's/^[ \t]*//;s/[ \t]*$//')
99+
echo "SDK Version from gradle.properties: $SDK_VERSION"
99100
else
100-
echo "rtc_sdk_version value not found"
101+
echo "Warning: rtc_sdk_version value not found in gradle.properties"
102+
SDK_VERSION="unknown"
101103
fi
102104
else
103-
echo "file not found: $sdk_version_file"
104-
fi
105-
else
106-
SDK_VERSION=$(echo $sdk_url | cut -d "/" -f 5)
105+
echo "Warning: gradle.properties file not found"
106+
SDK_VERSION="unknown"
107107
fi
108108

109109
if [ "$WORKSPACE" != "" ]; then
110-
cp app/build/outputs/apk/release/*.apk $WORKSPACE/APIExample_${BUILD_NUMBER}_${SDK_VERSION}_$(date "+%Y%m%d%H%M%S").apk
110+
PROJECT_NAME="Agora-APIExample"
111+
APK_NAME="${PROJECT_NAME}_${BUILD_NUMBER}_${SDK_VERSION}_$(date "+%Y%m%d%H%M%S").apk"
112+
echo "Copying APK to: $WORKSPACE/$APK_NAME"
113+
cp app/build/outputs/apk/release/*.apk "$WORKSPACE/$APK_NAME"
111114
fi

0 commit comments

Comments
 (0)