美文网首页
Jenkins自动打包iOS

Jenkins自动打包iOS

作者: ytsq | 来源:发表于2018-10-07 17:30 被阅读0次

    参考文章
    自动化打包好处不多说了,Jenkins环境安装参考文章,这里只说一下需要注意的地方
    1 自动打包的电脑一定要安装Xcode工具
    2 使用文章的脚本打包方式打包,所有个人感觉证书这些东西可以不用上传,只需配置好代码管理仓库,然后执行脚本即可
    3 钥匙串中的证书一定要开启访问权限

    贴一下我的脚本 基本都写好注释了

    project_path=/Users/你的电脑名字/.jenkins/workspace/${JOB_NAME}
    cd ${project_path}
    #这一部是判断是有IPADir路径 没有创建 存放每次打包的ipa文件
    if [ ! -d ./IPADir ];
        then
            mkdir -p IPADir;
    fi
    #原理同上 保存每次打包dSYM文件 用于定位bug 
    if [ ! -d ./build/dSYMs ];
        then
            mkdir -p build/dSYMs;
    fi
    
    #工程名 将XXX替换成自己的工程名
    project_name=你自己的工程名字
    #这里的东西是选择打包的环境,通过配置scheme实现打的包是正式环境还是演示环境
    #------------
    #如果SERVER_ENVIR是DEV 
    if [ "${SERVER_ENVIR}" = "DEV" ];then
        SERVER_ENVIR=""
        echo '是开发环境'
        SERVER_ENVIR_C="开发"
    fi
    if [ "${SERVER_ENVIR}" = "M" ];then
        SERVER_ENVIR="MM"
        echo '是正式环境'
        SERVER_ENVIR_C="正式"
    fi
    if [ "${SERVER_ENVIR}" = "FZ" ];then
        echo '是仿真环境'
        SERVER_ENVIR_C="仿真"
    fi
    if [ "${SERVER_ENVIR}" = "YS" ];then
        echo '是演示环境'
        SERVER_ENVIR_C="演示"
    fi
    #----------
    echo 'SERVER_ENVIR ======= '${SERVER_ENVIR}
    #scheme名 将XXX替换成自己的sheme名
    scheme_name=XXX${SERVER_ENVIR}
    echo 'scheme_name ======= '${scheme_name}
    
    #打包模式 Debug/Release
    development_mode=Release
    #这里需要根据你自己的scheme设置去写
    development_mode1=Release${SERVER_ENVIR}
    
    #build文件夹路径
    build_path=${project_path}/build
    #这里是打包的版本号 每次先判断是否输入版本号 没有默认plist文件 有的话  先修改 不知道修改是否需要时间 睡3s
    #---------------
    #info.plist文件路径
    info_path=${project_path}/XXX/Info.plist
    #字符串不为空,长度不为0
    needSleep='0'
    if [ -n "${BUNDLESHORVERSIONSTRING}" ];then
        /usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString ${BUNDLESHORVERSIONSTRING}" "${info_path}"
        needSleep='1'
        echo '版本号不为空'
    fi
    if [ -n "${BUNDLEVERSION}" ];then
        /usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${BUNDLEVERSION}" "${info_path}"
        needSleep='1'
        echo '构建号不为空'
    fi
    
    if [ "${needSleep}" = "1" ];then
        sleep 3
        echo '睡3秒'
    fi
    #-----------
    
    #这里是拷贝dSYM文件 dSYM文件使用方法搜索一下一大堆 直接使用github那个工具就挺好的
    ls_date=`date +%Y-%m-%d_%H-%M-%S`
    #原dSYM路径
    dSYM_path=${build_path}/${project_name}.xcarchive/dSYMs/${project_name}.app.dSYM
    #新dSYM路径
    dSYM_newPath=${build_path}/dSYMs/${project_name}${ls_date}.app.dSYM
    
    #plist文件所在路径
    #exportOptionsPlistPath=${project_path}/exportTest.plist
    exportOptionsPlistPath=${project_path}/XXX/ExportOptions/ExportOptions.plist
    
    #导出.ipa文件所在路径
    exportIpaPath=${project_path}/IPADir/${development_mode}
    
    echo '///-----------'
    echo '/// 正在清理工程 当前环境 '${SERVER_ENVIR_C}
    echo '///-----------'
    echo project_path
    xcodebuild \
    clean -configuration ${development_mode1} -quiet  || exit
    
    
    echo '///--------'
    echo '/// 清理完成'
    echo '///--------'
    echo ''
    
    echo '///-----------'
    echo '/// 正在编译工程:'${build_path}/${project_name}.xcarchive
    echo '///-----------'
    
    xcodebuild \
    archive -workspace ${project_path}/${project_name}.xcworkspace \
    -scheme ${scheme_name} \
    -configuration ${development_mode1} \
    -archivePath ${build_path}/${project_name}.xcarchive -quiet  || exit
    
    echo '///--------'
    echo '/// 编译完成'
    echo '///--------'
    echo ''
    
    cp -R ${dSYM_path} ${dSYM_newPath}
    
    echo '///----------'
    echo '/// 开始ipa打包'${exportIpaPath}
    echo '///----------'
    
    xcodebuild -exportArchive -archivePath ${build_path}/${project_name}.xcarchive \
    -configuration ${development_mode1} \
    -exportPath ${exportIpaPath} \
    -exportOptionsPlist ${exportOptionsPlistPath} \
    -allowProvisioningUpdates \
    -quiet || exit
    
    if [ -e $exportIpaPath/$scheme_name.ipa ];
        then
        echo '///----------'
        echo '/// ipa包已导出'
        echo '///----------'
        #open $exportIpaPath
        else
        echo '///-------------'
        echo '/// ipa包导出失败 '
        echo '///-------------'
    fi
    echo '///------------'
    echo '/// 打包ipa完成  '
    echo '///-----------='
    echo ''
    
    echo '///-------------'
    echo '/// 开始发布ipa包 '
    echo '///-------------'
    
    #上传到蒲公英
    #蒲公英aipKey
    MY_PGY_API_K=你的key
    #蒲公英uKey
    MY_PGY_UK=你的username
    
    curl -F "file=@${exportIpaPath}/${scheme_name}.ipa" -F "uKey=${MY_PGY_UK}" -F "_api_key=${MY_PGY_API_K}" https://qiniu-storage.pgyer.com/apiv1/app/upload
    echo "\n\n"
    echo "已运行完毕>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    exit 0
    

    相关文章

      网友评论

          本文标题:Jenkins自动打包iOS

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