iOS开发shell编程iOS菜鸟食谱

iOS自动化打包 jenkins+svn+命令行打包+fir

2016-03-02  本文已影响4983人  he15his

安装jenkins

未装过homebrew的参照homebrew主页

使用 homebrew 安装jdk

$brew install Caskroom/cask/java

使用 homebrew 安装 jenkins


$brew install jenkins

安装fir上传命令

$ gem install fir-cli

完成后就可以直接打开http://localhost:8080/如图

jenkins设置

1.安装jenkins插件

点击系统管理->管理插件,在插件管理里面下载几个比较有用的插件,当然可以根据自己的需求增减。


然后等待安装完成就是了,本次用到的插件有
Email Extension Plugin:用于发送邮件,功能比自带的强大
Next Build Number Plugin:修改下次编译的build号

2.新建Item

返回Jenkins主页,点击左上角的新建按钮开始新建一个Item

输入Item的名称,选择构建一个自由风格的软件项目


在源码管理里面选择Subversion,然后配置svn信息


配置参数化内容,如图,可以用${name}在shell命令中取出对应的值

本次打包中添加了两个参数fir_description、host_distribution,用来表示发布到fir时的更新日志和打包的host环境

在构建步骤中添加Execute shell,我们通过shell命令进行编译,打包,上传


我的构建步骤分了三步,都在用shell命令完成,当然你也可以写好shell文件放在本地直接执行本地的文件
1.设置build号为jenkins的build号、编译、打包生成ipa文件
2.更新到svn
3.上传到fir



详细代码见文章底部

配置邮件

所有的配置设置完后点应用,再点保存,至此我们已经完全配置完这个item

总结遇到的问题

1.证书找不到
参照http://www.faceye.net/search/81369.html

2.fir上传的描述不能识别中文
原因是shell命令中会使中文乱码,在shell命令前加上

export LANG="en_US.UTF-8"

附shell命令

需要在Xcode中添加In_house_out、In_house_in两个配置项目用于表示内网和外网环境的inhouse包,如果你不需要多个环境的包就不用做参数化配置了

打包命令

#变量
TARGET_NAME="xxxxx"
APPDISPLAY_NAME="xxxxx"
CODE_SIGN="iPhone Distribution: xxxxxxxxxxxx., Ltd."
BUILD_DIR="${WORKSPACE}/build"
IPA_DIR="${WORKSPACE}/ipa"

#环境变量的更改
if ${host_distribution}; then
BUILD_CONFIG="In_house_out"
else
BUILD_CONFIG="In_house_in"
fi

#首先,清除build记录:
xcodebuild clean -workspace $TARGET_NAME.xcworkspace -scheme $TARGET_NAME -configuration $BUILD_CONFIG
#设置build号
xcrun agvtool new-version -all ${BUILD_NUMBER}
#其次,执行build:
xcodebuild -workspace $TARGET_NAME.xcworkspace -scheme $TARGET_NAME -configuration $BUILD_CONFIG build BUILD_DIR=$BUILD_DIR BUILD_ROOT="${WORKSPACE}/buildRoot" CODE_SIGN_IDENTITY="$CODE_SIGN"

#创建输出目录
mkdir -p $IPA_DIR
cp -f -r $BUILD_DIR/$BUILD_CONFIG-iphoneos/$TARGET_NAME.app.dSYM $IPA_DIR
#最后,将app打包为ipa:
/usr/bin/xcrun -sdk iphoneos PackageApplication -v $BUILD_DIR/$BUILD_CONFIG-iphoneos/$APPDISPLAY_NAME.app -o ${WORKSPACE}/ipa/$APPDISPLAY_NAME${BUILD_NUMBER}.ipa


更新svn命令

#更新到svn
svn commit -m "jenkins auto packaging and chang Bundle version to ${BUILD_NUMBER}"

上传到fir命令

export LANG="en_US.UTF-8"
#环境变量的更改
if ${host_distribution}; then
DESCRIPTION="网络环境:正式环境 
${fir_description}"
else
DESCRIPTION="网络环境:测试环境
${fir_description}"
fi

#上传到fir
/usr/local/bin/fir publish ${WORKSPACE}/ipa/appName${BUILD_NUMBER}.ipa -T firtoken -c "${DESCRIPTION}"
上一篇下一篇

猜你喜欢

热点阅读