Jenkin 打包问题汇总+Shell脚本

Jenkin 打包问题汇总

问题1.Print: Entry, "CFBundleShortVersionString", Does Not Exist

分析
打包路径有问题,在当前路径下查找不到Info.plist文件
解决
{{uploading-image-596472.png(uploading...)}}

问题2.Objects-normal/armv7/armv64

** BUILD FAILED **
The following build commands failed:
Ld /Users/hujintao/Library/Developer/Xcode/DerivedData/Test-brdyfbmzhdrnlodkhjdqibqivgzs/Build/Intermediates/Test.build/adhoc-iphoneos/Test.build/Objects-normal/arm64/Test normal arm64
Ld /Users/hujintao/Library/Developer/Xcode/DerivedData/Test-brdyfbmzhdrnlodkhjdqibqivgzs/Build/Intermediates/Test.build/adhoc-iphoneos/Test.build/Objects-normal/armv7/Test normal armv7

分析:
framework not found Pods_Test
{{uploading-image-639789.png(uploading...)}}

解决办法
cd 到工程目录下,再执行 pod install 命令更新一下,然后再编译一下工程

问题3.xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH

分析
打包找不到 "PackageApplication" 文件, not a developer tool or in PATH
根据对比发现新版的Xcode的中少了这个PackageApplication
解决办法
先去找个旧版的Xcode中的里面拷贝过来一份或者去下面链接下载一份包装应用
链接: https://pan.baidu.com/s/1ytWeXtRQDl0cQPqnWFzR-g 提取码: nn9q 复制这段内容后打开百度网盘手机App,操作更方便哦
放到下面这个目录:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/

打开终端,然后执行命令:

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/
chmod +x /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication

Shell脚本

在桌面创建Jenkins-Ipas文件夹作为上传到蒲公英的文件夹

Cocoapods版本+发布蒲公英

已测试

# 工程名
APP_NAME="HKJenkinsProject"
# 证书
CODE_SIGN_DISTRIBUTION="iPhone Distribution: CHINA MOBILE GROUP GUANGDONG CO., LTD. MOBILE INTERNET BRANCH (8TS34KC67Y)"
# info.plist路径
project_infoplist_path="./${APP_NAME}/Info.plist"

#取版本号
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")

#取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")

DATE="$(date +%Y%m%d)"
IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}_prod.ipa"

#要上传的ipa文件路径
IPA_PATH="$HOME/Desktop/Jenkins-Ipas/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> text.txt

# 下面2行是集成有Cocopods的用法
echo "=================clean================="
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}"  -configuration 'Release' clean

echo "+++++++++++++++++build+++++++++++++++++"
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -sdk iphoneos -configuration 'Release'   SYMROOT='$(PWD)'

xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${APP_NAME}.app" -o ~/Desktop/Jenkins-Ipas/"${IPANAME}"

#自动上传到蒲公英
PGYUSERKEY="3e01a67e0a0c0abd1ee1031e6d30286b"
PGYAPIKEY="f46c71c8ca045944ddbcdd0a7569107b"
PGYPWD="a847574311"
echo "~~~~~~~~~~~~~~~~~~自动上传到蒲公英~~~~~~~~~~~~~~~~~~~~~~~~"
curl -F "file=@$IPA_PATH" \
-F "uKey=$PGYUSERKEY" \
-F "_api_key=$PGYAPIKEY" \
-F "password=$PGYPWD" \
https://qiniu-storage.pgyer.com/apiv1/app/upload
echo "~~~~~~~~~UPLOAD_SUCCESS~~~~~~~~"

上传蒲公英第二种

先安装fir-cli

sudo gem install -n /usr/local/bin fir-cli

之后替换上传蒲公英步骤

# 设置上传到 Fir
FIRTOKEN="6815935ea0c92e69d30793d7f81a26f2"

fir l ${FIRTOKEN}
fir p ${IPA_PATH}

待测试

# 工程名
APP_NAME="HKJenkinsProject"
# iPa存放目录名称
IPA_DIR_NAME="${APP_NAME}-IPA"
# 证书
CODE_SIGN_DISTRIBUTION="iPhone Distribution: CHINA MOBILE GROUP GUANGDONG CO., LTD. MOBILE INTERNET BRANCH (8TS34KC67Y)"
# info.plist路径
project_infoplist_path="./${APP_NAME}/Info.plist"

#取版本号
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")

#取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")

DATE="$(date +%Y%m%d)"
IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}_prod.ipa"

#要上传的ipa文件路径
echo "ipaDir: -- $HOME/Desktop/${IPA_DIR_NAME}"
if [ -d "$IPA_DIR_NAME" ]; then
echo $IPA_DIR_NAME
echo "IPA_DIR_NAME-目录存在"
else
echo "IPA_DIR_NAME目录不存在"
#mkdir 创建新的目录
mkdir -pv $IPA_DIR_NAME
echo "创建${IPA_DIR_NAME}目录成功"
fi

IPA_PATH="$HOME/Desktop/${IPA_DIR_NAME}/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> text.txt

# 下面2行是集成有Cocopods的用法
echo "=================clean================="
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}"  -configuration 'Release' clean

echo "+++++++++++++++++build+++++++++++++++++"
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -sdk iphoneos -configuration 'Release'   SYMROOT='$(PWD)'

xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${APP_NAME}.app" -o ~/Desktop/${IPA_PATH}/"${IPANAME}"
 
 
#自动上传到蒲公英
PGYUSERKEY="3e01a67e0a0c0abd1ee1031e6d30286b"
PGYAPIKEY="f46c71c8ca045944ddbcdd0a7569107b"
PGYPWD="a847574311"
echo "~~~~~~~~~~~~~~~~~~自动上传到蒲公英~~~~~~~~~~~~~~~~~~~~~~~~"
curl -F "file=@$IPA_PATH" \
-F "uKey=$PGYUSERKEY" \
-F "_api_key=$PGYAPIKEY" \
-F "password=$PGYPWD" \
https://qiniu-storage.pgyer.com/apiv1/app/upload
echo "~~~~~~~~~UPLOAD_SUCCESS~~~~~~~~"

Native原生版本+发布蒲公英

# 工程名
APP_NAME="JenkinsProjectNative"
# 证书
CODE_SIGN_DISTRIBUTION="iPhone Distribution: CHINA MOBILE GROUP GUANGDONG CO., LTD. MOBILE INTERNET BRANCH (8TS34KC67Y)"
# info.plist路径
project_infoplist_path="./${APP_NAME}/Info.plist"

#取版本号
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")

#取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")

DATE="$(date +%Y%m%d)"
IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}_prod.ipa"

#要上传的ipa文件路径
IPA_PATH="$HOME/Desktop/Jenkins-Ipas/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> text.txt

# 下面2行是没有Cocopods的用法
echo "=================clean================="
xcodebuild -target "${APP_NAME}"  -configuration 'Release' clean

echo "+++++++++++++++++build+++++++++++++++++"
xcodebuild -target "${APP_NAME}" -sdk iphoneos -configuration 'Release'  SYMROOT='$(PWD)'

xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${APP_NAME}.app" -o ~/Desktop/Jenkins-Ipas/"${IPANAME}"


#自动上传到蒲公英
PGYUSERKEY="3e01a67e0a0c0abd1ee1031e6d30286b"
PGYAPIKEY="f46c71c8ca045944ddbcdd0a7569107b"
PGYPWD="a847574311"
echo "~~~~~~~~~~~~~~~~~~自动上传到蒲公英~~~~~~~~~~~~~~~~~~~~~~~~"
curl -F "file=@$IPA_PATH" \
-F "uKey=$PGYUSERKEY" \
-F "_api_key=$PGYAPIKEY" \
-F "password=$PGYPWD" \
https://qiniu-storage.pgyer.com/apiv1/app/upload
echo "~~~~~~~~~UPLOAD_SUCCESS~~~~~~~~"

Jenkins重启

brew services restart jenkins

猜你喜欢

转载自www.cnblogs.com/StevenHuSir/p/10462475.html
今日推荐