@@ -67,6 +67,108 @@ apiexample_cn_name=Shengwang_Native_SDK_for_iOS
6767apiexample_global_name=Agora_Native_SDK_for_iOS
6868global_dir=Global
6969
70+ # ===================================
71+ # Version validation logic
72+ # ===================================
73+ echo " =========================================="
74+ echo " Starting branch version validation..."
75+ echo " =========================================="
76+
77+ # Get current branch name (try multiple methods for CI environments)
78+ BRANCH_NAME=" "
79+
80+ # Method 1: Try environment variable (Jenkins/GitLab CI)
81+ if [ ! -z " $GIT_BRANCH " ]; then
82+ BRANCH_NAME=" $GIT_BRANCH "
83+ echo " Branch from GIT_BRANCH: $BRANCH_NAME "
84+ elif [ ! -z " $BRANCH_NAME " ]; then
85+ echo " Branch from BRANCH_NAME: $BRANCH_NAME "
86+ elif [ ! -z " $CI_COMMIT_REF_NAME " ]; then
87+ BRANCH_NAME=" $CI_COMMIT_REF_NAME "
88+ echo " Branch from CI_COMMIT_REF_NAME: $BRANCH_NAME "
89+ # Method 2: Try git command
90+ elif [ -z " $BRANCH_NAME " ]; then
91+ BRANCH_NAME=$( git rev-parse --abbrev-ref HEAD 2> /dev/null)
92+ if [ " $BRANCH_NAME " = " HEAD" ]; then
93+ # In detached HEAD state, try to get branch from remote
94+ BRANCH_NAME=$( git branch -r --contains HEAD | grep -v HEAD | head -1 | sed ' s/^[[:space:]]*origin\///' )
95+ echo " Branch from git branch -r: $BRANCH_NAME "
96+ else
97+ echo " Branch from git rev-parse: $BRANCH_NAME "
98+ fi
99+ fi
100+
101+ # Remove origin/ prefix if present (but keep the rest of the path)
102+ BRANCH_NAME=$( echo " $BRANCH_NAME " | sed ' s/^origin\///' )
103+
104+ if [ -z " $BRANCH_NAME " ] || [ " $BRANCH_NAME " = " HEAD" ]; then
105+ echo " Warning: Unable to get Git branch name, skipping version validation"
106+ else
107+ echo " Current branch: $BRANCH_NAME "
108+
109+ # Extract version from branch name (format: dev/x.x.x)
110+ if [[ $BRANCH_NAME =~ ^dev/([0-9]+\. [0-9]+\. [0-9]+)$ ]]; then
111+ BRANCH_VERSION=" ${BASH_REMATCH[1]} "
112+ echo " Branch version: $BRANCH_VERSION "
113+ echo " Current building project: $ios_direction "
114+ echo " "
115+
116+ # Validate the current project based on ios_direction
117+ PROJECT_PATH=" iOS/${ios_direction} "
118+ PROJECT_NAME=" ${ios_direction} "
119+
120+ echo " -----------------------------------"
121+ echo " Validating: $PROJECT_PATH "
122+
123+ PBXPROJ_FILE=" ${PROJECT_PATH} /${PROJECT_NAME} .xcodeproj/project.pbxproj"
124+
125+ if [ ! -f " $PBXPROJ_FILE " ]; then
126+ echo " Error: project.pbxproj file not found: $PBXPROJ_FILE "
127+ exit 1
128+ fi
129+
130+ # Extract MARKETING_VERSION for main target (skip Extension targets)
131+ # Look for the version that appears with @executable_path/Frameworks (main app)
132+ PLIST_VERSION=$( grep -A 2 " @executable_path/Frameworks" " $PBXPROJ_FILE " | grep " MARKETING_VERSION" | head -1 | sed ' s/.*MARKETING_VERSION = \([^;]*\);/\1/' | tr -d ' ' )
133+
134+ if [ -z " $PLIST_VERSION " ]; then
135+ echo " Error: Unable to read MARKETING_VERSION from project.pbxproj"
136+ exit 1
137+ fi
138+
139+ echo " Project version: $PLIST_VERSION "
140+ echo " -----------------------------------"
141+
142+ # Compare versions
143+ if [ " $BRANCH_VERSION " != " $PLIST_VERSION " ]; then
144+ echo " "
145+ echo " =========================================="
146+ echo " Error: Version mismatch!"
147+ echo " =========================================="
148+ echo " Branch version: $BRANCH_VERSION "
149+ echo " Project version: $PLIST_VERSION "
150+ echo " Project path: $PROJECT_PATH "
151+ echo " "
152+ echo " Please ensure the version in branch name matches MARKETING_VERSION in Info.plist"
153+ echo " "
154+ exit 1
155+ fi
156+
157+ echo " ✓ Version validation passed: $BRANCH_VERSION "
158+ else
159+ echo " Warning: Branch name does not match dev/x.x.x format!"
160+ echo " Current branch: $BRANCH_NAME "
161+ echo " Expected format: dev/x.x.x (e.g., dev/4.5.3)"
162+ echo " Skipping version validation for non-version branches..."
163+ fi
164+ fi
165+
166+ echo " Version validation completed"
167+ echo " =========================================="
168+ echo " "
169+
170+
171+
70172if [ -z " $sdk_url " -o " $sdk_url " = " none" ]; then
71173 sdk_url_flag=false
72174 echo " sdk_url is empty"
@@ -116,8 +218,7 @@ if [ $compress_apiexample = true ]; then
116218 echo " complete compress api example"
117219 echo " current path: ` pwd` "
118220 ls -al
119- global_des_path=$WORKSPACE /${apiexample_global_name} _${sdk_version} _${BUILD_NUMBER} _APIExample.zip
120-
221+ global_des_path=$WORKSPACE /${apiexample_global_name} _v${sdk_version} _APIExample_${BUILD_NUMBER} .zip
121222 echo " global_des_path: $global_des_path "
122223 echo " Moving global_result.zip to $global_des_path "
123224 mv global_result.zip $global_des_path
0 commit comments