Files
tra-app/build-config/ios自动打包脚本/validate_and_upload.sh
T
2025-09-08 10:35:25 +08:00

93 lines
3.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
set -e # 脚本执行过程中若有命令失败则立即退出
# ==============================================
# 颜色定义
# ==============================================
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # 无颜色(重置)
# ==============================================
# 配置变量 - 根据实际情况修改以下参数
# ==============================================
API_KEY="ACRB9XFL9G" # App Store Connect API 密钥ID
API_ISSUER="69a6de7f-3378-47e3-e053-5b8c7c11a4d1" # API 密钥对应的Issuer ID
IPA_PATH="$HOME/Desktop/lx_uniapp/build/ipa_production/HBuilder.ipa" # IPA文件路径
APP_TYPE="ios" # 应用类型(固定为ios
# ==============================================
# 验证IPA文件是否存在
# ==============================================
if [ ! -f "$IPA_PATH" ]; then
echo -e "${RED}❌ 错误:未找到IPA文件,请检查路径是否正确${NC}"
echo -e " 查找路径:$IPA_PATH"
exit 1
fi
# ==============================================
# 1. 验证IPA文件合法性
# ==============================================
echo -e "\n${YELLOW}📋 开始验证IPA文件...${NC}"
echo -e " 文件路径:$IPA_PATH"
# 创建临时文件保存输出
TMP_FILE=$(mktemp)
# 执行验证命令,直接输出到终端,同时重定向到临时文件
xcrun altool --validate-app \
--type "$APP_TYPE" \
--file "$IPA_PATH" \
--apiKey "$API_KEY" \
--apiIssuer "$API_ISSUER" > "$TMP_FILE" 2>&1
# 直接打印临时文件内容(确保错误信息显示)
cat "$TMP_FILE"
# 获取退出码
VALIDATE_EXIT_CODE=$?
# 从临时文件读取内容用于分析
VALIDATE_OUTPUT=$(cat "$TMP_FILE")
rm "$TMP_FILE" # 清理临时文件
# 验证结果处理
if [ $VALIDATE_EXIT_CODE -eq 0 ]; then
echo -e "${GREEN}✅ IPA文件验证成功,符合上传要求${NC}"
else
# 检查是否是版本号重复错误
if echo "$VALIDATE_OUTPUT" | grep -q "The bundle version must be higher than the previously uploaded version"; then
# 提取之前的版本号
PREVIOUS_VERSION=$(echo "$VALIDATE_OUTPUT" | grep -oE 'previousBundleVersion = [0-9]+' | awk '{print $3}')
if [ -z "$PREVIOUS_VERSION" ]; then
PREVIOUS_VERSION=$(echo "$VALIDATE_OUTPUT" | grep -oE 'version: [0-9]+' | sed "s/version: //;s///")
fi
echo -e "${RED}❌ 错误:版本号重复${NC}"
echo -e "${RED} 已上传的最新版本号为: $PREVIOUS_VERSION${NC}"
echo -e "${RED} 请将版本号修改为 $((PREVIOUS_VERSION + 1)) 或更高后重试${NC}"
else
echo -e "${RED}❌ IPA文件验证失败,请查看上方错误信息${NC}"
fi
exit $VALIDATE_EXIT_CODE
fi
# ==============================================
# 2. 上传IPA文件到App Store Connect
# ==============================================
echo -e "\n${YELLOW}🚀 开始上传IPA文件...${NC}"
echo -e " 文件路径:$IPA_PATH"
xcrun altool --upload-app \
--type "$APP_TYPE" \
--file "$IPA_PATH" \
--apiKey "$API_KEY" \
--apiIssuer "$API_ISSUER"
# 上传成功提示
if [ $? -eq 0 ]; then
echo -e "\n${GREEN}🎉 上传成功!可在App Store Connect中查看构建版本${NC}"
echo -e " 提示:构建版本处理需要几分钟,请耐心等待"
else
echo -e "\n${RED}❌ 上传失败,请根据错误信息修复后重试${NC}"
exit 1
fi