3939# #################################
4040export 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+
4249echo Package_Publish: $Package_Publish
4350echo is_tag_fetch: $is_tag_fetch
4451echo arch: $arch
@@ -48,23 +55,108 @@ echo build_date: $build_date
4855echo build_time: $build_time
4956echo release_version: $release_version
5057echo short_version: $short_version
58+ echo BUILD_NUMBER: $BUILD_NUMBER
5159echo pwd: ` pwd`
5260echo sdk_url: $sdk_url
5361echo 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
55140unzip_name=Agora_Native_SDK_for_Android_FULL_DEFAULT
56141zip_name=Agora_Native_SDK_for_Android_FULL_DEFAULT.zip
57142if [ -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
61146else
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"
82177fi
83178
84179mkdir -p ./$unzip_name /rtc/samples/${android_direction} || exit 1
85180rm -rf ./$unzip_name /rtc/samples/${android_direction} /*
86181
182+ echo " "
183+ echo " Copying API Example code from ./Android/${android_direction} ..."
87184if [ -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"
89187else
90188 echo " Error: Source directory ./Android/${android_direction} does not exist"
91189 exit 1
92190fi
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) "
101221fi
222+ echo " "
102223
103224if [ $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"
110259fi
260+ echo " Output package: $OUTPUT_ZIP_NAME "
261+ echo " =========================================="
111262
0 commit comments