搭建iOS-Fastalne

一、環(huán)境配置

  • 安裝rbenv

    1.安裝rbenv

    rbenv的源代碼托管在github,在終端中,從github上將rbenv源碼克隆到本地,然后設置$ PATH。

    git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
    echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
    echo 'eval "$(rbenv init -)"' >> ~/.bashrc
    
    

    注意zsh用戶是?/ .zshrc

    2.安裝ruby-build

    git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

    3.安裝Ruby

    查看可用的ruby版本

    rbenv install --list

    這里從列表中選擇2.4.2進行安裝:

    rbenv install 2.4.2

    等待一會兒,安裝完畢后可以查看已經安裝的所有Ruby版本:

    rbenv versions

    4.選擇一個Ruby版本

    rbenv中的Ruby版本有三個不同的作用域:全局(global),本地(local),當前終端(shell)。

    查找版本的優(yōu)先級是當前終端>本地>全局。

    4.1設置全局版本

    全局版本是在沒有找到“當前終端”或“本地”作用域的設置時執(zhí)行通過以下命令設置:

    rbenv global 2.1.2

    4.2設置本地版本

    “本地”作用域是針對各個項目的,通過項目文件夾中的.rbenv-version這個文件進行管理,需要將相應的Ruby版本號寫入這個文件。所以一般設置這個選項就可以了,這個過程可以通過以下命令執(zhí)行:

    rbenv local 2.1.2

    4.3設置當前終端版本

    “當前終端”作用域的優(yōu)先級最高通過以下命令設置:

    rbenv shell 2.1.2

    4.4使用系統(tǒng)Ruby

    如果要使用系統(tǒng)原有的Ruby,則通過系統(tǒng)指定:

    rbenv global system

    設置完畢后可以通過以下命令進行驗證:

    which ruby  # ~/.rbenv/shims/ruby 
    
    rbenv version # 2.1.2 (set by ~/.rbenv/version)
    
    

  • 安裝Gem

    使用rbenv后,gem還是按照原有的方式進行安裝、升級,只是gem的安裝路徑是在~/.rbenv 文件夾中當前Ruby版本文件夾下。而且安裝帶有可執(zhí)行文件的gem后,需要執(zhí)行一個特別的命令,告訴rbenv更新相應的映射關系,這個命令在安裝新版本的Ruby后也需要執(zhí)行

    rbenv rehash
    

    安裝rails

    gem install bundler rails
    

    檢查安裝后的軟件版本

    ruby -v gem -v rake -V rails -v
    

    告訴Rubygems安裝軟件包的時候不安裝文檔

    echo "gem: --no-ri --no-rdoc" > ~/.gemrc
    

    安裝后在.zshrc中添加

    export PATH="$HOME/.rbenv/shims:$PATH"

    查看gem源

    gem sources

    刪除默認的gem源

    gem sources --remove https://rubygems.org/

    增加taobao作為gem源

    gem sources -a https://ruby.taobao.org/

    查看當前的gem源

    gem sources

    *** CURRENT SOURCES ***

    http://ruby.taobao.org

    清空源緩存

    gem sources -c

    更新源緩存

    gem sources -u

    ?

  • 配置bundler

    安裝gem后bundler是自帶文件你可以運行

    gem list 查看版本

    刪除/Users/wtj/.bundle/config,或者更改config中的BUNDLE_PATH路徑,要不然會生成一堆項目目錄下文件

    BUNDLE_PATH: "vendor/bundle"

    BUNDLE_DISABLE_SHARED_GEMS: "true"

    項目中的Gemfile文件可通過如下命令生產,也可以自己創(chuàng)建填寫內容

    bundle init 生成Gemfile文件

    bundle install --path /Users/wtj/Public/vendor/bundle 指定路徑

    bundler配置文件:

    • 項目特定配置文件, 放在項目根目錄下的.bundle/config文件中.
    • 全局的配置文件, 放在 ~/.bundle/config文件中.

    比如你在當前項目運行bundle install --without production, 后面的參數"--withou production"會自動被保存到項目根目錄的.bundle/config文件中. 下一次運行bundle install會自動為你加上參數.

  • 安裝xcode-select --install

  • 安裝fastalne

    運行sudo gem install fastlane --verbose

    fastlane是一套自動化打包的工具集,用 Ruby 寫的,用于 iOS 和 Android 的自動化打包和發(fā)布等工作。

    fastlane包含了我們日常編碼之后要上線時候進行操作的所有命令。

    deliver:上傳屏幕截圖、二進制程序數據和應用程序到AppStore
    snapshot:自動截取你的程序在每個設備上的圖片
    frameit:應用截屏外添加設備框架
    pem:可以自動化地生成和更新應用推送通知描述文件
    sigh:生成下載開發(fā)商店的配置文件
    produce:利用命令行在iTunes Connect創(chuàng)建一個新的iOS app
    cert:自動創(chuàng)建iOS證書
    pilot:最好的在終端管理測試和建立的文件
    boarding:很容易的方式邀請beta測試
    gym:建立新的發(fā)布的版本,打包
    match:使用git同步你成員間的開發(fā)者證書和文件配置
    scan:在iOS和Mac app上執(zhí)行測試用例
    

    整個發(fā)布過程可以用fastlane描述成下面這樣

    lane :appstore do
      increment_build_number
      cocoapods
      xctool
      snapshot
      sigh
      deliver
      frameit
      sh "./customScript.sh"
    
      slack
    en
    

二、fastlane腳本編寫

fastlane文件夾下在新建一個Fastfile

# Customise this file, documentation can be found here:
# https://github.com/fastlane/fastlane/tree/master/fastlane/docs
# All available actions: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Actions.md
# can also be listed using the `fastlane actions` command

# Change the syntax highlighting to Ruby
# All lines starting with a # are ignored when running `fastlane`

# If you want to automatically update fastlane if a new version is available:
# update_fastlane

# This is the minimum version number required.
# Update this, if you use features of a newer version
fastlane_version "1.110.0"

default_platform :ios

platform :ios do

  before_all do
    ENV["SLACK_URL"] = "https://hooks.slack.com/services/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" # Webhook URL created in Slack
  end

  # 編譯測試版本
  desc "Jenkins"
  lane :jenkins do |options|
    branch = 'master'

    ensure_git_branch(branch: branch)
    ensure_git_status_clean
    git_pull
    #increment_build_number
    # commit_version_bumpi
    # push_to_git_remote(remote:'origin', local_branch: branch, remote_branch: branch)
    # add_badge(shield: "v#{get_version_number}-#{get_build_number}-orange", no_badge: true)

    ipaFileName = “ test.ipa”;#”DailyBuild_v#{get_version_number}.#{get_build_number}.ipa";
    gym(
      workspace: './test.xcworkspace',
      scheme: 'test',
      clean: true,
      output_directory: ENV['SP_OUTPUT_DIRECTORY'],
      output_name: ipaFileName,
      configuration: 'Release',
      include_symbols: 'true',
      include_bitcode: 'false',
      archive_path: ENV['SP_ARCHIVE_PATH'],
      export_method: 'ad-hoc',
      codesigning_identity: 'XXXX(123456)',
      xcargs: "PROVISIONING_PROFILE_SPECIFIER='ad-hoc' DEVELOPMENT_TEAM='123456'",
      export_options: {
      provisioningProfiles: {"com.XXXX.XXXX" => "ad-hoc"},
      method:'ad-hoc',
      signingStyle:'manual'
   }
    )
    
    pgyer(
      api_key: "", 
      user_key: "",
      ipa: "#{ENV['SP_OUTPUT_DIRECTORY']}#{ipaFileName}")
  end

end

安裝Plugin

到目前為止,大約有30個Plugin發(fā)布到了RubyGems下,我們可以通過如下命令來查找:

fastlane search_plugins [query]

詳情可以看這里
AvailablePlugins

假設我們的項目中需要使用一個名叫version_from_last_tag,用于獲取git的最近一個tag,那么我們在終端的項目目錄下執(zhí)行:

fastlane add_plugin version_from_last_tag

添加完成后,項目中會多出一個Gemfile,Gemfile.lock,fastlane/Pluginfile三個文件,其中這個Pluginfile實際上就是一個Gemfile,里面包含對于Plugin的引用,格式如下:

# Autogenerated by fastlane
#
# Ensure this file is checked in to source control!

gem 'fastlane-plugin-version_from_last_tag'
gem 'fastlane-plugin-badge'
gem 'fastlane-plugin-pgyer'

而Pluginfile本身又被Gemfile引用,所以又印證上上文中的那句話:對Plugin的管理其實就是對RubyGem的管理。

此后的Plugin是實際用法和使用Action是一致的,所以就不在此贅述了。

三、Xcode工程配置

在Product —>Scheme —>Manage Schemes —>你的工程Scheme的Shared為YES

在.gitignore添加如下兩句,防止report.xml和README.md自動生成每次commit帶入

fastlane/report.xml

fastlane/README.md

參考:

升級Cocoapods 1.1.0

http://bundler.io/

使用 rbenv 安裝和管理Ruby版本

使用rbenv安裝和管理Ruby版本

Fastlane入門:安裝篇

fastlane 之截圖自動化(看著很蛋疼)

fastlane deliver 上傳app到App Store

Fastlane自動化構建工具(完整解決測試和發(fā)布流程)

使用 Jenkins 實現持續(xù)集成 (iOS)

Fastlane實戰(zhàn)(五):高級用法

fastlane docs

Fastlane實戰(zhàn)(四):自動化測試篇

深入淺出 Fastlane 一看你就懂

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容