原文链接:http://www.jianshu.com/p/5abbe0d61cef

参考链接:http://blog.csdn.net/potato512/article/details/52176073

开头

前面几片记录了jenkins的使用,配置一个jenkins环境,我们需要一个比较闲得笔记本做这份工作,不可能自己的本一直开着这个服务,动不动CPU风扇狂转,其他性能下降,反而会影响我们工作,怎么办了,写个shell脚本帮我们完成工程打包、上传。

原理

xcode在jenkins中编译、shell编译还是xcode自身编译都是需要xcode自己的IDE环境决定的,具体来说就是

xcodebuild & xcrun这俩家伙来完成

废话不多说,直接上脚本,需要的自己改一下即可。

project打包上传

#!/usr/bin/bash

#next test
#1.证书
#2.打包状态每部判断 #设置Xcode的Build Settings->Code Signing Resource Rules Path的值为:$(SDKROOT)/ResourceRules.plist #xcodeproj文件的绝对路径
PROJECT="/Users/mac/Desktop/pro/git/MCPayDemo/MCPayDemo.xcodeproj" SCHEME="MCPayDemo" #iPhone Distribution:
IDENTITY="iPhone Developer: ma jiancheng (xxxxx)" #Distribution Provision File Path
PROVISIONING_PROFILE="/Users/mac/Library/MobileDevice/Provisioning\ Profiles/ead3e7e7-a2e8-45c2-98fa-008f3712xxxx.mobileprovision" #输出ipa文件的路径, 最好是绝对路径
OUTDIR="/Users/mac/Desktop/pro/git/MCPayDemo/output" PRODUCTDIR=${OUTDIR}
#FIR 秘钥
FIRTOKEN="5558b26ae383df7390b880xxxxxxx"
#蒲公英aipKey
PAPIKEY="c1ad57c15a5bb0c770c51639xxxxxxx"
#蒲公英uKey
PUKEY="d5eb8f86040b9ae6108ed4c58xxxxxxx" if [ ! -f $PROVISIONING_PROFILE ]; then
echo "Please download the provision file for "${PROVISIONING_PROFILE}
exit 4;
fi
echo "~~~~~~~~~~~~~~~~清理工程~~~~~~~~~~~~~~~~编译工程~~~~~~~"
echo "${OUTDIR}${SCHEME}.ipa"
echo "xcrun -sdk iphoneos PackageApplication -v ${PRODUCTDIR}/${SCHEME}.app -o ${OUTDIR}/${SCHEME}.ipa --sign ${IDENTITY} --embed ${PROVISIONING_PROFILE}"
xcodebuild -project "${PROJECT}" -scheme "${SCHEME}" -configuration Release clean build CODE_SIGN_IDENTITY="${IDENTITY}" -sdk iphoneos CONFIGURATION_BUILD_DIR=${OUTDIR}
#打包成 .ipa
echo "~~~~~~~~~~~${SCHEME}.ipa}~~~scuess"
echo "xcrun -sdk iphoneos PackageApplication -v ${PRODUCTDIR}/${SCHEME}.app -o ${OUTDIR}/${SCHEME}.ipa --sign \"${IDENTITY}\" --embed ${PROVISIONING_PROFILE}"
xcrun -sdk iphoneos PackageApplication -v "${PRODUCTDIR}/${SCHEME}.app" -o "${OUTDIR}/${SCHEME}.ipa"
# --sign "\"${IDENTITY}\"" --embed "${PROVISIONING_PROFILE}" #上传到测试平台 -> fir.im
fir p "${OUTDIR}/${SCHEME}.ipa" -T "${FIRTOKEN}" echo "-------------------->fir.im------->蒲公英---------"
echo "curl -F file=@${OUTDIR}/${SCHEME}.ipa -F uKey=${PUKEY} -F _api_key=${PAPIKEY} http://www.pgyer.com/apiv1/app/upload"
curl -F "file=@${OUTDIR}/${SCHEME}.ipa" -F "uKey=${PUKEY}" -F "_api_key=${PAPIKEY}" "http://www.pgyer.com/apiv1/app/upload"
echo "\n\n"

workspace打包上传

/#!/usr/bin/bash
#############################################
/# batch rename #
/# Input : $1 SCHEME #
/# eg:需要编译的scheme #
/# Input : $2 PROVISION PREFIX #
/# eg: mobileprovision文件的名称 #
############################################# #next test
#1.证书
#2.打包状态每部判断 #设置Xcode的Build Settings->Code Signing Resource Rules Path的值为:$(SDKROOT)/ResourceRules.plist #xcodeproj文件的绝对路径[修改]
WORKSPACE_PATH="/Users/mac/Desktop/car/Runnor.CarService.IosApp/"
WORKSPACE_NAME="MCCarServiceiPhone"
SCHEME="MCCarServiceiPhone" #生成的APP名称,根据xcode项目 plist来定
APPNAME="MCCarServiceiPhone" #iPhone Distribution: FOO.
IDENTITY="\"iPhone Developer: ma jiancheng (xxxxxxxxx)\"" #Distribution Provision File Path
PROVISIONING_PROFILE="/Users/mac/Library/MobileDevice/Provisioning\ Profiles/ead3e7e7-a2e8-45c2-98fa-008f3712382d.mobileprovision" #输出ipa文件的路径, 最好是绝对路径
OUTDIR="${WORKSPACE_PATH}/output" #FIR 秘钥
FIRTOKEN="5558b26ae383df7390b880bexxxxxxx"
#蒲公英aipKey
PAPIKEY="c1ad57c15a5bb0c770c51639xxxxxxx"
#蒲公英uKey
PUKEY="d5eb8f86040b9ae6108ed4c5xxxxxxxx" if [ ! -f $PROVISIONING_PROFILE ]; then
echo "Please download the provision file for " ${PROVISIONING_PROFILE}
exit 4;
fi
echo "~~~~~~~~~~~~~~~~清理工程~~~~~~~~~~~~~~~~编译工程~~~~~~~"
echo "${OUTDIR}${APPNAME}.ipa"
echo "xcodebuild -workspace ${WORKSPACE_NAME}.xcworkspace -scheme ${SCHEME} -configuration Release clean build CODE_SIGN_IDENTITY=${IDENTITY} -sdk iphoneos CONFIGURATION_BUILD_DIR=${OUTDIR}"
xcodebuild -workspace "${WORKSPACE_PATH}/${WORKSPACE_NAME}.xcworkspace" -scheme "${SCHEME}" -configuration Release clean build CODE_SIGN_IDENTITY="${IDENTITY}" -sdk iphoneos CONFIGURATION_BUILD_DIR=${OUTDIR}
#打包成 .ipa
echo "~~~~~~~~~~~${APPNAME}.ipa}~~~scuess"
echo "xcrun -sdk iphoneos PackageApplication -v ${OUTDIR}/${APPNAME}.app -o ${OUTDIR}/${APPNAME}.ipa --sign ${IDENTITY} --embed ${PROVISIONING_PROFILE}"
xcrun -sdk iphoneos PackageApplication -v "${OUTDIR}/${APPNAME}.app" -o "${OUTDIR}/${APPNAME}.ipa"
# --sign "${IDENTITY}" --embed "${PROVISIONING_PROFILE}" #上传到测试平台 -> fir.im
echo "-------------------->fir.im------->蒲公英---------"
#fir p "${OUTDIR}/${SCHEME}.ipa" -T "${FIRTOKEN}"
# -> 蒲公英 echo "curl -F file=@${OUTDIR}/${APPNAME}.ipa -F uKey=${PUKEY} -F _api_key=${PAPIKEY} http://www.pgyer.com/apiv1/app/upload"
curl -F "file=@${OUTDIR}/${APPNAME}.ipa" -F "uKey=${PUKEY}" -F "_api_key=${PAPIKEY}" "http://www.pgyer.com/apiv1/app/upload"
echo "\n\n" #--------------------end--------------

结语

这个shell语句写的比较简单,等闲暇会在本文优化。本文是jenkins的一个衍生,后续会在jenkins上探索一些持续构建的工作。

文/lp_马建成(简书作者)
原文链接:http://www.jianshu.com/p/5abbe0d61cef
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

iOS shell脚本打包的更多相关文章

  1. 将 shell 脚本打包到 rpm 包中

    下以操作最好在虚拟机上操作:如 Docker 最方便了 1. 安装 rpmbuild yum -y install rpmbuild  rpmdevtools -y 2. 生成打包路径 使用 rpmd ...

  2. iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上-b

    用fir.im测试已经好长时间了,感觉每次打包上传都很麻烦,想着是不是可以用脚本自动打包,在网上搜了一下确实有,下面总结一下如何使用脚本自动打包上传到fir.im,以及打包过程中遇到的问题和解决办法 ...

  3. ios外包公司—北京动点软件分享:IOS工程自动打包并发布脚本实现

    前言 IOS的开发过程中,当需要给测试人员发布测试包的时候,直接使用xcode来做的效率是非常低下的.尤其是当有一点小改动需要重新出包时,那简直是个折磨的人的工作.通过一番研究后,遂决定写一系列脚本, ...

  4. iOS 制作自动打包脚本 Xcode8.3.2

    本文包含以下内容: 前言 1.shell脚本的编写 2.xcodebuild命令 3.完整的可用示例 参考资料 前言 做iOS开发,打包APP是比较频繁的事情,每次都手动去配置一堆东西确实是比较乏味. ...

  5. iOS静态库.a总结(2017.1.24增加脚本打包方法)

    修改于:2017.1.24 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.根据源代码的公开情况,库可以分为2种类型 a.开源库 公开源代码,能看到具体实现 ,比如SDWebImag ...

  6. IOS工程自动打包并发布脚本实现

    http://blog.csdn.net/ccf0703/article/details/8588667 文章首发地址:http://webfrogs.me/2013/02/18/ios-automa ...

  7. xcode8.3 shell 自动打包脚本 记录

    题记 xcode升级8.3后发现之前所用的xcode自动打包基本无法使用,因此在网上零碎找到些资料,将之前的脚本简化.此次脚本是基于xcode证书配置进行打包(之前是指定描述文件.相对繁琐).因此代码 ...

  8. springboot打包不同环境配置与shell脚本部署

    本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作: profiles指定不同环境的配置 maven-assembly-plu ...

  9. Jenkins结合shell脚本实现(gitLab/gitHub)前端项目自动打包部署服务器

    原始发布部署: 石器时代的我们,先是本地打包好项目,在去服务器上把原来的文件删了,然后回到本地copy到服务器: 这操看起来简单,实际部署的人就知道多烦了,假如来几个项目都要重新发布:那就爽了: 今天 ...

随机推荐

  1. 在windows 10下使用docker

    准备工作 Windows 10下的Docker是依赖于Hyper-v的,首先我们需要启用它:控制面板 -> 程序 -> 启用或关闭Windows功能 -> 选中Hyper-V 安装D ...

  2. Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

    Trident (又称为MSHTML),是微软的窗口操作系统(Windows)搭载的网页浏览器—Internet Explorer的排版引擎的名称. 它的第一个版本随着1997年10月Internet ...

  3. perl debug

    1. 进入debug模式 # perl -d ./perl_debugger.pl it prompts, DB<1>   2. 查看从第10行开始的代码. 查看函数get_pattern ...

  4. VS2010环境下Winpcap配置方法 (转)

    VS2010 配置Winpcap 新建一个项目,GetDevs.cpp.用来测试.测试代码最后有给出. View->Property Manager Debug|Win32 -> Mirc ...

  5. 【GPU编解码】GPU硬解码---DXVA (转)

    前面介绍利用NVIDIA公司提供的CUVID库进行视频硬解码,下面将介绍利用DXVA进行硬解码. 一.DXVA介绍 DXVA是微软公司专门定制的视频加速规范,是一种接口规范.DXVA规范制定硬件加速解 ...

  6. nginx.conf 集群完整配置

    ###############################nginx.conf 集群完整配置############################### #user nobody; # user ...

  7. 更新ruby:Error running 'requirements_osx_brew_update_system ruby-2.4.1报错解决

    更新ruby时,报错: Failed to update Homebrew, follow instructions here: https://github.com/Homebrew/homebre ...

  8. cas 资源

    http://blog.sina.com.cn/s/blog_6fda308501012tk2.html http://www.blogjava.net/xmatthew/archive/2008/0 ...

  9. Linux使用图形LVM(Logical Volume Manager)工具进行分区的动态扩展

  10. php手册总结《类》

    手册页面: http://php.net/manual/zh/language.oop5.basic.php >> 类名 类名可以是任何非 PHP 保留字的合法标签.一个合法类名以字母或下 ...