通过 Jenkins 实现 iOS 持续集成开发

安装准备

  1. Yosemite 10.10 or above
  2. Xcode 6.4
  3. Homebrew -> http://brew.sh/

安装Jenkins

直接执行brew install jenkins,并等待执行安装完成。


启动

直接加载Jenkins有两个方法:

  1. launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
  2. jenkins

如果需要开机自启动,可以执行:

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

以上步骤执行完毕之后可以打开浏览器并输入Jenkins的地址:http://服务器IP:8080/


配置

插件安装在系统管理->管理插件中安装,安装完之后重启Jenkins,更新插件同样

需要安装的插件列表

  • Xcode integration
  • GIT plugin
  • Post-Build Script Plug-in
  • 其他你想装的插件

进入系统设置,跳到Xcode Builder一栏,选择Unlock Keychain,然后分别设置Keychain NameKeychain Password并保存设置


创建项目

首先新建自由风格的项目,这里没什么好说的...

基本配置

同样没什么好说的,就是一些名称说明之类的配置

高级选项

同样是按需配置

源码管理

在这里我使用了Git,因为我只会用Git,填写RepositoriesCredentialsBranches to build

其中Repositories就是项目Git地址,可以用HTTPS或者SSH方式,不过对于Jenkins还是推荐给它弄一个Pull权限的SSH

  • 构建触发器

  • Build after other projects are built:在别的项目构建完成后执行构建

  • Poll SCM:定期检查源码变更并构建

  • Build periodically:定期构建

定期构建有如下固定日期格式:MINUTE HOUR DOM MONTH DOW

最简单的用法,你想它每天晚上20:00构建一次,那么就是H 18 * * *

构建环境

这个玩意就不要勾选了,除非你有特别的需求,因为勾选了之后每次构建成功都会重置一下Keychain,嗯,亲测= =|||

构建

先添加一个Execute Shell构建步骤用于清理Pod

rm -rf ./Pods
pod install

然后添加多一个Execute Shell构建步骤用于修改BundleVersion(格式为:版本号+当天日期)

plist=${WORKSPACE}/ShareJobStudent/Info.plist

Date=$(date +"%Y%m%d%H")
CFBundleShortVersionString=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${plist}")
NextCFBundleVersion=$CFBundleShortVersionString.$Date

/usr/libexec/PlistBuddy -c "Set CFBundleVersion $NextCFBundleVersion" "${plist}"

再添加一个Xcode构建步骤

  • General build settings
    • Clean before build?:[√]
    • ConfigurationDebug或者Release
    • Pack application and build .ipa?:[√]
    • .ipa filename pattern:ipa文件名格式,这里可以设置为xxxxx-${VERSION}就可以了
    • Output directory:ipa文件输出路径,这里可以设置为${WORKSPACE}/Build/Output
  • Code signing & OS X keychain options
    • Unlock Keychain?:[√]
  • Advanced Xcode build options
    • Clean test reports?:[√]
    • Xcode Schema File:项目Schema,可以在Xcode中看到
    • Xcode Workspace File:Workspace文件名
    • Build output directory:构建输出目录,这里可以设置为${WORKSPACE}/Build/Relaese

其他选项保持默认就好啦~

构建后操作

添加一个Execute Shell构建步骤用于清理构建完毕后的工作

git reset --hard
cp ${WORKSPACE}/Build/Output/* ~/Documents/Develop-iOS/IPA/ShareJob-Student-iOS/
mv ${WORKSPACE}/Build/Output/*.ipa ${WORKSPACE}/Build/Output/ShareJobStudent.ipa

curl -F "file=@${WORKSPACE}/Build/Output/ShareJobStudent.ipa" \
-F "uKey=xxxxxxxxxx" \
-F "_api_key=xxxxxxxxxx" \
http://www.pgyer.com/apiv1/app/upload

至此,Jenkins的基本使用就是这样啦~