Created
August 4, 2015 08:42
-
-
Save hjeffrey/55fb1894e6b055694bd0 to your computer and use it in GitHub Desktop.
完成iOS app编译,打包ipa,上传ftp备份,发送邮件
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# build.sh | |
# | |
# Created by Jia Yuhui on 24/06/2015. | |
# Copyright 2015 Jia Yuhui. All rights reserved. | |
env=$1 | |
sleepsecond=3 | |
# 检查参数 | |
if [[ -z "$env" ]]; then | |
echo "Default Release" | |
env="Release" | |
fi | |
# 配置参数 | |
BUILD_SHELL_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" | |
cd ${BUILD_SHELL_PATH} | |
cd .. | |
PROJDIR=~+ | |
echo $PROJDIR | |
# 根据自己的证书和邮件地址配置下面的两个参数 | |
# EMAIL_ADDRESS=邮箱 | |
# DEVELOPPER_NAME=开发者证书,可在keychain里查看自己的开发证书 | |
EMAIL_ADDRESS="xxx@gmail.com" | |
if [[ "$env" == "Release" ]]; then | |
PROJECT_BUILDDIR="Release-iphoneos" | |
DEVELOPPER_NAME="iPhone Developer: xxxxxx (xxxxx)" | |
elif [[ "$env" == "Debug" ]]; then | |
PROJECT_BUILDDIR="Debug-iphoneos" | |
DEVELOPPER_NAME="iPhone Developer: xxxxx (xxxxxx)" | |
fi | |
PROJECT_NAME="projectName" | |
TARGET_SDK="iphoneos8.4" | |
echo "Ctrl+C 可以停止脚本执行!!" | |
sleep $sleepsecond | |
echo "开始编译" | |
echo -------------Cleaning $PROJECT_NAME $env---------------- | |
sleep $sleepsecond | |
xcodebuild clean -sdk "$TARGET_SDK" -configuration "$env" > ${PROJDIR}/shell.log | |
echo -------------Building $env---------------- | |
sleep $sleepsecond | |
xcodebuild -target "$PROJECT_NAME" -sdk "$TARGET_SDK" -configuration "$env" CODE_SIGN_IDENTITY="$DEVELOPPER_NAME" > ${PROJDIR}/shell.log | |
if [ $? != 0 ] | |
then | |
echo Building $env error !!! | |
exit 1 | |
fi | |
# 生产IPA | |
echo -------------Making IPA---------------- | |
sleep $sleepsecond | |
# Set variables | |
BUILD_PATH="$PROJDIR/build" | |
APP_PATH="$BUILD_PATH/$PROJECT_BUILDDIR/$PROJECT_NAME.app" | |
APP_VERSION=`defaults read $APP_PATH/Info CFBundleShortVersionString` | |
APP_REVISION=`defaults read $APP_PATH/Info CFBundleVersion` | |
APP_NAME="iOS_V${APP_VERSION}_store_build${APP_REVISION}_$(date +%Y%m%d_%H%M)" | |
IPA_NAME="${APP_NAME}.ipa" | |
IPA_PATH="$PROJDIR/${IPA_NAME}" | |
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${APP_PATH}" -o "$IPA_PATH" > ${PROJDIR}/shell.log # --sign "$CERTIFICATE" --embed "$PROVISION" | |
if [ $? != 0 ] | |
then | |
echo Making IPA error !!! | |
exit 1 | |
fi | |
echo -------------Zip dSYM---------------- | |
sleep $sleepsecond | |
cd "$BUILD_PATH/$PROJECT_BUILDDIR" | |
APP_dSYM_NAME="$PROJECT_NAME.app.dSYM" | |
WIDGET_dSYM_NAME="Widget.appex.dSYM" | |
dSYM_NAME="$IPA_NAME.dSYM.zip" | |
dSYM_PATH="$PROJDIR/$dSYM_NAME" | |
zip -r -q "$dSYM_PATH" "$APP_dSYM_NAME" #"$WIDGET_dSYM_NAME" | |
if [ $? != 0 ] | |
then | |
echo Zip dSYM error !!! | |
exit 1 | |
fi | |
# 删除编译文件 | |
echo -------------Cleaning temp files---------------- | |
sleep $sleepsecond | |
cd "$PROJDIR" | |
find . -name "build" -exec rm -rf {} \; | |
rm -r ${PROJDIR}/shell.log | |
# 上传文件 | |
echo -------------Uploading to ftp---------------- | |
read -p "上传到公司FTP服务器?(Yes/No)" updte | |
while [[ $updte != "Yes" && $updte != "No" ]]; do | |
echo "输入错误" | |
read -p "上传到公司FTP服务器?(Yes/No)" updte | |
done | |
if [[ $updte = "Yes" ]]; then | |
HOST='192.168.1.1' | |
USER='name' | |
PASSWD='password' | |
REMOTEDIR='ipaPath' | |
ftp -n $HOST <<END_SCRIPT | |
quote USER $USER | |
quote PASS $PASSWD | |
type binary | |
cd $REMOTEDIR | |
put $dSYM_NAME | |
put $IPA_NAME | |
quit | |
END_SCRIPT | |
echo "IPA上传完成" | |
echo -------------Send Email---------------- | |
sleep $sleepsecond | |
CONTENTFILE="$PROJDIR/$(date +%Y%m%d_%H%M).log" | |
echo "名称编号" >> $CONTENTFILE | |
echo ${APP_NAME} >> $CONTENTFILE | |
echo "ftp://$HOST/$REMOTEDIR/$IPA_NAME" >> $CONTENTFILE | |
echo "ftp://$HOST/$REMOTEDIR/$dSYM_NAME" >> $CONTENTFILE | |
UPDATECONTENT="${PROJDIR}/history.txt" | |
cat $UPDATECONTENT | while read LINE | |
do | |
echo $LINE >> $CONTENTFILE | |
done | |
EMAIL_TITLE="[发包邮件]${PROJECT_NAME}_iOS_${APP_VERSION}" | |
mail -s $EMAIL_TITLE $EMAIL_ADDRESS < $CONTENTFILE | |
if [ $? != 0 ] | |
then | |
rm -r $CONTENTFILE | |
echo Mail error !!! | |
exit 1 | |
fi | |
rm -r $CONTENTFILE | |
elif [[ $updte = "No" ]]; then | |
echo "跳过上传步骤" | |
fi | |
echo "编译结束" | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment