iOS 自动打包脚本配置及上传到TestFlight

1,569 阅读1分钟

背景

之前公司打包并不统一,测试取包走的是自动打包流程,App打包上传到TestFlight以供审核采用的是人工打包及上传,人力重复劳动就很不舒服,所以搜索资料搞了搞自动打包与自动上传TestFlight的脚本。

打包过程中所需要的各种目录路径

为了便于在不同开发者拉取代码之后都能够顺利打包,不需要再动脚本,我将脚本放到了项目工程同目录下

#当前工作目录

WORKSPACE_PATH=`pwd`

#工程目录

PROJECT_PATH=$(dirname "${WORKSPACE_PATH}")/AllYoga/

#获取主工程路径

PROJECT=${PROJECT_PATH}/${PROJECT_NAME}.xcodeproj

PROJECT_W=${PROJECT_PATH}/${PROJECT_NAME}.xcworkspace

BUILD_DIR=${WORKSPACE_PATH}

# 删除缓存目录
rm -rf ${BUILD_DIR}/output

mkdir ${BUILD_DIR}/output

#指定archive路径

ARCHIVE_PATH=${BUILD_DIR}/output/${PROJECT_NAME}.xcarchive

#指定到处文件的路径和对应的plist文件路径

EXPORT_PATH=${BUILD_DIR}/output

API_KEY=""

API_ISSUER_KEY=""

如上述脚本的一些目录路径配置,这里说明的一点在当前目录下获取上级目录的方法

$(dirname "${WORKSPACE_PATH}")

截屏2023-08-08 11.08.10.png

截屏2023-08-08 11.08.37.png

整体目录是这个样子,打包脚本及产出物统一放置在与项目工程目录同级的package文件下,这两者的上级目录为git操作的文件

API_KEY 及 API_ISSUER_KEY

上传TestFlight需要用到这两个参数,参数获取可以到 用户和访问-> 密钥 -> AppStoreConnect API,生成一下,要注意,生成之后将对应的.p8文件下载下来保存好,这个文件只能下载一次,可以放到git仓库保管,下载后,还需要在电脑的用户目录下新建一个 private_keys文件,将.p8文件放到里面,否则在上传TestFlight时可能报错

截屏2023-08-08 11.12.59.png

Archive 脚本

#echo "删除xcode缓存文件"

rm -drf ~/Library/Developer/Xcode/DerivedData/*

  


#再clean一次目标PROJECT_NAME

xcodebuild clean -configuration ${BUILD_TYPE} -workspace ${PROJECT_W} -scheme "${PROJECT_NAME}"

  


#xcodebuild编译

if [ ${BUILD_TYPE} == "Debug" ];then

xcodebuild  -configuration ${BUILD_TYPE} -workspace ${PROJECT_W} -scheme "${PROJECT_NAME}" -sdk iphoneos VALID_ARCHS="armv7 arm64" -archivePath ${ARCHIVE_PATH} archive

else

xcodebuild  -configuration ${BUILD_TYPE} -workspace ${PROJECT_W} -scheme "${PROJECT_NAME}" -sdk iphoneos VALID_ARCHS="armv7 arm64" -archivePath ${ARCHIVE_PATH} archive

fi

Export 出ipa文件

xcodebuild  -exportArchive -archivePath ${ARCHIVE_PATH} -exportPath ${EXPORT_PATH} -exportOptionsPlist ${BUILD_DIR}/ExportOptions.plist || exit 1

上传TestFlight

# 上传ipa

 xcrun altool --upload-app -f ${IPAPATH} -t iOS --apiKey ${API_KEY} --apiIssuer ${API_ISSUER_KEY} --verbose