Jenkins+Fastlane

iOS項目持续集成思路

  1. 部署fastlane,实现本地用fastlane匹配证书、描述文件以及打包(主要);
  2. 部署Jenkins,实现Jenkins的流程和fastlane结合構建;
  3. 远程构建:考虑是否外网要能访问内网的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哈!

猜你喜欢

转载自blog.csdn.net/weixin_34203426/article/details/87137647