美文网首页
iOS 手动运行xcodebuild命令打包

iOS 手动运行xcodebuild命令打包

作者: 技术进阶在路上 | 来源:发表于2020-09-10 19:26 被阅读0次

    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命令打包

          本文链接:https://www.haomeiwen.com/subject/wbtmektx.html