拾遗笔记

jenkins打包xcode项目

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 相关配置

  1. 配置Target:即xcode的target

    Clean before build 勾上  
    Configuration Release 或Debug

    不同的target可以配置不同的证书、bid等,打出的包供不同用途使用

  2. Code signing & OS X keychain options
    选中Unlock Keychain
    配置Keychain path为 ${HOME}/Library/Keychains/login.keychai 及密码,应该就是登录密码
  3. Advanced Xcode build options

    Xcode Project Directory ${WORKSPACE}/dev/client/cocos2d-x-2.2.6/projects/client/proj.ios/
    Xcode Project File client.xcodeproj
  1. 上面的步骤相当于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

  1. 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>

Comments

comments powered by Disqus