Skip to content

Commit 9e0f31c

Browse files
author
qinhui
committed
Update ci
1 parent 61a02dc commit 9e0f31c

2 files changed

Lines changed: 104 additions & 4 deletions

File tree

.github/ci/build/build_ios.sh

Lines changed: 103 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,108 @@ apiexample_cn_name=Shengwang_Native_SDK_for_iOS
6767
apiexample_global_name=Agora_Native_SDK_for_iOS
6868
global_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+
70172
if [ -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

.github/ci/build/build_mac.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,7 @@ if [ $compress_apiexample = true ]; then
115115
echo "complete compress api example"
116116
echo "current path: `pwd`"
117117
ls -al
118-
global_des_path=$WORKSPACE/${apiexample_global_name}_${sdk_version}_${BUILD_NUMBER}_APIExample.zip
119-
118+
global_des_path=$WORKSPACE/${apiexample_global_name}_v${sdk_version}_APIExample_${BUILD_NUMBER}.zip
120119
echo "global_des_path: $global_des_path"
121120
echo "Moving global_result.zip to $global_des_path"
122121
mv global_result.zip $global_des_path

0 commit comments

Comments
 (0)