iOS 手动运行xcodebuild命令打包

iOS 自动化打包–(手动运行xcodebuild命令)核心代码

echo "=================1.创建环境及一些文件路径================="

# 创建一个 output 路径文件夹,用户存储所有任务下的项目文件

# $HOME表示 Jenkins 的主目录

OUTPUT_PATH="OUTPUT_PATH路径"

echo $OUTPUT_PATH

if [ ! -d $OUTPUT_PATH ]; then

mkdir $OUTPUT_PATH

fi

# 创建当前任务下的 项目文件 环境

# ${JOB_NAME} 表示当前任务名称

JOB_NAME_PATH="$OUTPUT_PATH/${JOB_NAME}/ios"

echo $JOB_NAME_PATH

if [ ! -d $JOB_NAME_PATH ]; then

mkdir $JOB_NAME_PATH

fi

# 项目工程名

APP_NAME="Name" #替换成你的项目工程名

# 项目中 info.plist 路径(注意和你项目中对应的世纪路径)

# Jenkins 会拉取项目代码,到 workspace 目录下

#project_infoplist_path="$HOME/Home/workspace/${JOB_NAME}/${JOB_NAME}/ios/${APP_NAME}/Info.plist"

# 获取项目的版本号,用于创建版本文件夹,以此区分不同版本下的打包文件

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

# 要上传的 ipa 文件路径,区分了版本

#IPA_PATH="${JOB_NAME_PATH}/${bundleShortVersion}(${BUILD_ID})"

IPA_PATH="${JOB_NAME_PATH}/build"

if [ -d $IPA_PATH ];then

echo "文件存在,并删除文件夹内所有文件"

rm -rf $IPA_PATH/*

fi

# 创建 ipa 路径文件夹

if [ ! -d $IPA_PATH ];then

echo '文件夹11111111'

mkdir $IPA_PATH

else

echo '文件夹222'

fi

# archive 文件路径,在步骤5中使用

ARCHIVE_PATH="${IPA_PATH}/${APP_NAME}_${BUILD_ID}.xcarchive"

echo "=================2.进入工程目录================="

cd $HOME/.jenkins/workspace/${JOB_NAME}/ios

# xcodebuild -list 命令可以查看工程的:Targets、Configurations、Schemes

pwd

echo "=================3.清理工程================="

# xcodebuild 是 Xcode 打包命令

xcodebuild clean -target "${APP_NAME}" -configuration 'Release'

echo "=================4.解锁钥匙串================="

#解决:codesign"seckey api returned: -25308,(null)"

# *** 是一般为电脑登录密码,这里读取了 Jenkins 下的 Library 中的 Keychains ,或者钥匙串中证书--显示简介--访问控制--设置成允许所有应用程序访问此项目

security unlock-keychain -p "开机密码" "${HOME}/Library/Keychains/login.keychain-db"

echo "=================5.开始打包生成 xcarchive 文件================="

# 在xcode中设置scheme为shared,否则可能出现工程无scheme的错误

# 还可以添加其他参数,不设置的都是默认使用项目Build Settings里面的配置,包括 CODE_SIGN_IDENTITY 和 PROVISIONING_PROFILE

# 如果是使用了cocopods的workspace,可将 -project 替换为 -workspace , .xcodeproj 替换为 .xcworkspace

xcodebuild archive -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -configuration "Release" -archivePath "${ARCHIVE_PATH}"

CODE_SIGN_IDENTITY="iPhone Distribution:XXX"

PROVISIONING_PROFILE="XXX"

echo "=================6.从xcarchive文件中导出 ipa ================="

# 项目中的plist文件,主要是描述了导入的 ipa 使用的发布证书和配置文件

xcodebuild -exportArchive -archivePath $ARCHIVE_PATH -exportPath "${IPA_PATH}" -exportOptionsPlist "${JOB_NAME_PATH}/ExportOptions.plist" CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" PROVISIONING_PROFILE="${PROVISIONING_PROFILE}"

echo "=================7.压缩Online.app.dSYM文件夹 ================="

datatime=$(date +'%Y.%m.%d')

cd $IPA_PATH

cp -r "${APP_NAME}_${BUILD_ID}.xcarchive/dSYMs/$APP_NAME.app.dSYM" "$APP_NAME.app.dSYM"

zip -r "$APP_NAME.app.dSYM-${BUILD_ID}-$datatime.zip" "$APP_NAME.app.dSYM"

echo "=================8.ipa安装包上传到蒲公英发布平台 ================="

PASSWORD=123456

curl -F "file=@${IPA_PATH}/${APP_NAME}.ipa" \

-F "uKey=$uKey" \

-F "_api_key=$_api_key" \

-F "buildUpdateDescription=${BUILD_USER}-$gitBranch-${GIT_COMMIT}" \

-F "buildInstallType=2" \

-F "buildPassword=${PASSWORD}" \

https://www.pgyer.com/apiv2/app/upload

你可能感兴趣的:(iOS 手动运行xcodebuild命令打包)