通过 Jenkins 实现 iOS 持续集成开发
安装准备
- Yosemite 10.10 or above
- Xcode 6.4
- Homebrew -> http://brew.sh/
安装Jenkins
直接执行brew install jenkins
,并等待执行安装完成。
启动
直接加载Jenkins有两个方法:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
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 Name
、Keychain Password
并保存设置
创建项目
首先新建自由风格的项目,这里没什么好说的…
基本配置
同样没什么好说的,就是一些名称说明之类的配置
高级选项
同样是按需配置
源码管理
在这里我使用了Git,因为我只会用Git,填写Repositories
、Credentials
、Branches 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?:[√]
- Configuration:
Debug
或者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的基本使用就是这样啦~