iOS項目持续集成思路
- 部署fastlane,实现本地用fastlane匹配证书、描述文件以及打包(主要);
- 部署Jenkins,实现Jenkins的流程和fastlane结合構建;
- 远程构建:考虑是否外网要能访问内网的Jenkins服务。
Fastlane
- 先决条件-fastlane是ruby脚本集合,检查ruby版本➜ ruby -v;检查是否安装了Xcode CLT➜xcode-select --install
- 配置fastlane➜ brew cask install fastlane或➜ sudo gem install -n /usr/local/bin fastlane --verbose
- Ruby源更换➜gem sources --add https://gems.ruby-china.com --remove https://rubygems.org/
- 打开终端并cd进入你的项目位置➜ fastlane init,根据提示操作后会在项目目录下生成fastlane文件夹和Gemfile
- Xcode打开项目,【Manage Schemes】中项目scheme勾选【Shared】
- 编辑Fastfile,创建个性化的lane通道,保存后在终端➜ fastlane+【lane名字】执行lane.
- Appfile -用于存储应用程序标识符和Apple ID。
- Fastfile -用于管理您创建的用于调用某些操作的通道(自定义)
- sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer 确保xcodebuild安装好;
build_app(即gym)打包示例lane
(➜ fastlane action gym 终端可显示所有可配置项http://www.code4app.com/blog-859519-21223.html)
##Fastfile
default_platform(:ios)
platform :ios do
desc "AppStore IPA"
lane :beta do
build_app(workspace: "XX.xcworkspace",
scheme: "XX",
include_bitcode: false,
include_symbols: false,
output_directory: "./fastlane/output_directory",
export_method: "app-store")
end
desc "In-House IPA"
lane :enterprise do
build_app(workspace: "XX.xcworkspace",
scheme: "XX",
include_bitcode: false,
include_symbols: false,
output_directory: "./fastlane/output_directory",
export_method: "enterprise")
end
desc "Ad_Hoc IPA"
lane :adhoc do
build_app(workspace: "XX.xcworkspace",
scheme: "MassOrganizations",
include_bitcode: false,
include_symbols: false,
output_directory: "./fastlane/output_directory",
export_method: "ad-hoc")
end
end
PS--fastlane安装完不默认export的情况下:
Add the following line to your bash profile:
export PATH="PATH"
You can either close the terminal session and restart it or run source ~/.bash_profile to load your configuration and then you can go so you start using fastlane
Jenkins 配置 SVN/GIT
- 安装Jenkins,依赖JDK➜ /usr/libexec/java_home -V 查看java版本,https://link.jianshu.com/?t=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载JDK安装包进行安装,OK后到Jenkins官网下载安装包安装(安装过程中取消勾选start at boot as "jenkins")或➜brew install jenkins; - 安装完成后➜ java -jar /Applications/Jenkins/jenkins.war –httpPort=8080 启动Jenkins(若是brew安装的话直接➜ jenkins启动就好了),
- 打开http://localhost:8080会出现重设初始密码的界面。根据界面中的路径提示去相应文件中取出密码,接着按提示创建管理员用户,配置建议的插件,若失败就retry,确保git和subversion安装。
sudo cat /Users/Shared/Jenkins/Home/secrets/initialAdminPassword
- 【新建任务】构建一个【自由风格的软件项目】
- 项目【配置】
- 【General】-【高级】,勾选【使用自定义的工作空间】,目录输入自定义的工作空间,显示名称可随意;
- 【源代码管理】,勾选【Subversion】,【Repository URL】输入SVN链接,具体到项目路径,【Credentials】添加SVN账户并选择;
- 【构建】可选择【执行shell】,➜ cd 【项目路径】下,通过fastlane打包;
- 若打包完成需要上传,借助curl这个文件传输工具。
PS-卸载Jenkins
➜cd /Library/Application Support/Jenkins/Uninstall.command
➜sudo rm -rf /var/root/.jenkins ~/.jenkins
远程构建
- 最简思路-以融云为媒介实现端到端的连接,从而触发Jenkins项目构建;
- 构建机-创建iOS-Project,集成RongIMLib,实现Token(融云控制台可生成)登录并监听消息,判断是否触发构建相应的Task,若触发则调用WebView加载对应JenkinsToken;
- 触发机-创建iOS-Project,集成RongIMLib,实现Token(融云控制台可生成)登录,由用户点击按钮发送预设消息至构建机融云账号。
后记
懒人整理码字不易,感兴趣的给个赞或者关注O(∩_∩)O哈!
网友评论