jenkins打包xcode项目
Table of Contents
jenkins 运行
java -jar jenkins.war
起动后 访问 localhost:8080
配置一个项目
丢弃旧的构建
策略:Log Rotation
保持构建天数 | 3 |
保持构建的最大个数 | 10 |
选择使用源码管理,或者手动管理代码
我机器上已经用svn 下载了源码,我选择手动管理
# 把代码copy 到jenkins 的workspace cp -r /Users/admin/Documents/SVN/game2/dev . chmod -R 777 . svn cleanup ./dev #revert changed file svn revert -R ./dev #rm new files # svn status 状态为“?”的文件 直接删除,即未被管理的文件 # jenkins 似乎不能支持带管道的命令,这行需要写成一个脚本,调相应的脚本 #svn status --no-ignore | grep '^\?' | perl -ne 'print "$1\n" if $_ =~ /^\S+\s+(.*)$/' | tr '\n' '\0' | xargs -0 rm -rf svn up ./dev
构建触发器
Build periodically | 定期运行此项目 |
配置格式类似于cron
Examples:
H/15 * * * *
H(0-29)/10 * * * *
H 9-16/2 * * 1-5
H H 1,15 1-11 *
xcode 相关配置
配置Target:即xcode的target
Clean before build 勾上 Configuration Release 或Debug 不同的target可以配置不同的证书、bid等,打出的包供不同用途使用
- Code signing & OS X keychain options
选中Unlock Keychain
配置Keychain path为 ${HOME}/Library/Keychains/login.keychai 及密码,应该就是登录密码 Advanced Xcode build options
Xcode Project Directory ${WORKSPACE}/dev/client/cocos2d-x-2.2.6/projects/client/proj.ios/ Xcode Project File client.xcodeproj
- 上面的步骤相当于Xocde里Cmd-r run,生成app,下面则将生成的app导出成ipa
cd ${WORKSPACE}/dev/client/cocos2d-x-2.2.6/projects/client/proj.ios/build/Release-iphoneos xcrun -sdk iphoneos PackageApplication -v ${WORKSPACE}/dev/client/cocos2d-x-2.2.6/projects/client/proj.ios/build/Release-iphoneos/ZombieCave.app -o ${WORKSPACE}/dev/client/cocos2d-x-2.2.6/projects/client/proj.ios/build/Release-iphoneos/zombiecave.ipa #把生成的ipa copy 到本地site,内网供别人下载(需要本机启用apache服务) [ -d ~/site/zombiecave/${BUILD_ID} ] && rm -rf ~/site/zombiecave/${BUILD_ID} mkdir ~/site/zombiecave/${BUILD_ID} cp zombiecave.ipa ~/site/zombiecave/${BUILD_ID}
上专到fir.im
fir.im Token 从fir.im上取
ExInclude IPA/APK File Nam */*unaligned.apk,**/*unsigned*.apk Build Notes generated by jenkins
构建后的操作
可以选择执行另一个job的构建
xcodebuild 命令行下生成ipa文件
http://www.jianshu.com/p/3f43370437d2
CODE_SIGN_IDENTITY =证书Identity获取:
打开你的钥匙串访问->选中其中一个证书->右键->显示简介,把标题复制出来就可以了。
格式是: iPhone Distribution: Beijing xxoo yyooxx Technology Service CO., Ltd. (UA11AAJJKK8)
PROVISIONING_PROFILE= 获取Provisioning文件UUID
在xcode8.0以上,Provisioning文件的位置是: ~/Library/MobileDevice/Provisioning\ Profiles
在终端上面进入的文件夹。使用/usr/bin/security可以把Provisioning文件解密
文件名的前缀应该就是uuid /usr/bin/security cms -D -i 098a87e3-11fe-463d-75aa-12345678adba.mobileprovision
或者 xcodebuild -target appStore -configuration Release -showBuildSettings|grep PROVISIONING_PROFILE
同样,如果你不需要的指定证书和Provisioning文件,可以把上面的两个参数去掉,它会根据你的Xcode配置去匹配。
xcodebuild archive -scheme appStore \ -target appStore \ -configuration Release \ -archivePath ./build/client.xcarchive \ CODE_SIGN_IDENTITY="iPhone Distribution: Beijing Najia Technology Co., Ltd. (5SF425H5SS)" \ PROVISIONING_PROFILE="3a2c6078-652f-4f33-9a9c-2ea99b35e1e2" xcodebuild -exportArchive -archivePath ./build/client.xcarchive \ -exportPath ./build \ -exportOptionsPlist exportOption.plist CODE_SIGN_IDENTITY="iPhone Distribution: Beijing Najia Technology Co., Ltd. (5SF425H5SS)" \ PROVISIONING_PROFILE="3a2c6078-652f-4f33-9a9c-2ea99b35e1e2"
xcodebuild -target appStore -configuration Release -showBuildSettings|grep TEAM来获得teamid
method 可取 app-store, ad-hoc, package, enterprise, development,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key> compileBitcode</key>
<false/>
<key>method</key>
<string>ad-hoc</string>
<key>teamID</key>
<string>5SF425H5SS</string>
</dict>
</plist>