搭建iOS-Fastalne

一、環(huán)境配置

  • 安裝rbenv

    1.安裝rbenv

    rbenv的源代碼托管在github洁灵,在終端中,從github上將rbenv源碼克隆到本地掺出,然后設(shè)置$ 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

    等待一會兒苫费,安裝完畢后可以查看已經(jīng)安裝的所有Ruby版本:

    rbenv versions

    4.選擇一個Ruby版本

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

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

    4.1設(shè)置全局版本

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

    rbenv global 2.1.2

    4.2設(shè)置本地版本

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

    rbenv local 2.1.2

    4.3設(shè)置當前終端版本

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

    rbenv shell 2.1.2

    4.4使用系統(tǒng)Ruby

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

    rbenv global system

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

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

  • 安裝Gem

    使用rbenv后聂抢,gem還是按照原有的方式進行安裝钧嘶、升級,只是gem的安裝路徑是在~/.rbenv 文件夾中當前Ruby版本文件夾下琳疏。而且安裝帶有可執(zhí)行文件的gem后有决,需要執(zhí)行一個特別的命令,告訴rbenv更新相應(yīng)的映射關(guān)系空盼,這個命令在安裝新版本的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文件可通過如下命令生產(chǎn),也可以自己創(chuàng)建填寫內(nèi)容

    bundle init 生成Gemfile文件

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

    bundler配置文件:

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

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

  • 安裝xcode-select --install

  • 安裝fastalne

    運行sudo gem install fastlane --verbose

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

    fastlane包含了我們?nèi)粘>幋a之后要上線時候進行操作的所有命令篱瞎。

    deliver:上傳屏幕截圖苟呐、二進制程序數(shù)據(jù)和應(yīng)用程序到AppStore
    snapshot:自動截取你的程序在每個設(shè)備上的圖片
    frameit:應(yīng)用截屏外添加設(shè)備框架
    pem:可以自動化地生成和更新應(yīng)用推送通知描述文件
    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

假設(shè)我們的項目中需要使用一個名叫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自動化構(gòu)建工具(完整解決測試和發(fā)布流程)

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

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

fastlane docs

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

深入淺出 Fastlane 一看你就懂

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碳胳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子沫勿,更是在濱河造成了極大的恐慌挨约,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件产雹,死亡現(xiàn)場離奇詭異诫惭,居然都是意外死亡,警方通過查閱死者的電腦和手機蔓挖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門夕土,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瘟判,你說我怎么就攤上這事怨绣。” “怎么了拷获?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵篮撑,是天一觀的道長。 經(jīng)常有香客問我刀诬,道長咽扇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任陕壹,我火速辦了婚禮质欲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘糠馆。我一直安慰自己嘶伟,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布又碌。 她就那樣靜靜地躺著九昧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毕匀。 梳的紋絲不亂的頭發(fā)上铸鹰,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音皂岔,去河邊找鬼蹋笼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的剖毯。 我是一名探鬼主播圾笨,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逊谋!你這毒婦竟也來了擂达?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤胶滋,失蹤者是張志新(化名)和其女友劉穎板鬓,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體究恤,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡穗熬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了丁溅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡探遵,死狀恐怖窟赏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情箱季,我是刑警寧澤涯穷,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站藏雏,受9級特大地震影響拷况,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掘殴,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一赚瘦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧奏寨,春花似錦起意、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至套菜,卻和暖如春亲善,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逗柴。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工蛹头, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓掘而,卻偏偏與公主長得像挟冠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子袍睡,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容