Mac下使用Jenkins踩坑 Fastlane自動化iOS打包

2018.4.17更新:
解決MAC下使用pkg安裝權(quán)限問題

踩坑記錄
Fastlane+蒲公英+Jenkins
fastlane command not found
mac下Jenkins 主目錄導(dǎo)致的權(quán)限問題

寫在前面

本文同步博客,掘金,簡書

最近項目在做新項目時經(jīng)常發(fā)現(xiàn)有很多小bug需要改動纽匙,一改就要重新打包桃煎,哪怕是一個很小的項目柱恤,光是編譯打包導(dǎo)出刑棵,再上傳到測試平臺沒個十幾分鐘也是下不來的沙热。本來的話也只是想找個自動打包的腳本,找了幾個發(fā)現(xiàn)都不怎么理想改淑,于是就瞄準(zhǔn)了 Jenkins + Fastlane

Jenkins是用于管理宠互,如果只需要打包的話Fastlane就足夠了

本文也主要是記錄自己踩的坑,而且大部分是來自于Jenkins的静盅,
有興趣的童靴可以繼續(xù)往下看~

當(dāng)前環(huán)境

名稱 版本
macOS 10.13.4
Xcode 9.3
ruby 2.4.0
fastlane 2.91.0

使用Fastlane

先說說Fastlane良价,畢竟Jenkins是持續(xù)化管理的,相信很多小伙伴的初衷也只是想要自動化的快速快速編譯打包蒿叠,省去漫長等待而已

準(zhǔn)備工作

  • 安裝RVM
    使用rvm來管理ruby環(huán)境明垢,macOS雖然有自帶的ruby環(huán)境,但是會出現(xiàn)各種權(quán)限問題
    安裝完成后記得 使用
    source ~/.rvm/scripts/rvm
    完了后 關(guān)閉終端跑一下rvm -v看看是否正常
    如果出現(xiàn)command not found那就是有問題了市咽,
    具體情況需要具體分析還是google吧

  • 安裝ruby
    有了rvm安裝后 直接安裝ruby
    安裝好后 執(zhí)行which ruby 看看ruby是否由rvm管理

如果顯示為
/Users/xxxxxx/.rvm/rubies/ruby-2.4.0/bin/ruby
那就可以了

  • 安裝fastlane
    上面都搞定后執(zhí)行安裝命令
    gem install fastlane -NV

至此痊银,我們已經(jīng)可以使用fastlane自動化打包了

準(zhǔn)備打包

  • cd 到工程主目錄
  • 執(zhí)行fastlane init 我這里選擇的是手動配置
  • 執(zhí)行fastlane add_plugin pgyer 安裝蒲公英插件

編輯Fastfile

# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
#     https://docs.fastlane.tools/actions
#

# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane

default_platform(:ios)

platform :ios do
desc "上傳到測試版本到蒲公英"
  desc "生成本地版本"
  lane :topgyer do|option|
    
    #自動增加build
    # increment_build_number

    #自動生成證書
#cert

    #自動生成配置文件
#sigh(force: true)//我使用的是手動配置關(guān)閉這個。如需自動則打開即可

    #gym配置,打包輸出施绎。

    #fastlane gym --export_method ad-hoc
    #fastlane gym --export_method enterprise
    #fastlane gym --export_method app-store
    scheme_name = "你的scheme名字"

    #獲取version和build版本號
    version = get_info_plist_value(path: "./#{scheme_name}/Info.plist", key: "CFBundleShortVersionString")
    build = get_info_plist_value(path: "./#{scheme_name}/Info.plist", key: "CFBundleVersion")
    
    #導(dǎo)出路徑
    output_directory = "./build"
    
    #導(dǎo)出名稱
    output_name = "#{scheme_name}_#{version}_#{build}_#{option[:desc]}_#{Time.now.strftime('%Y%m%d%H%M%S')}.ipa"

    gym(
      export_method: "ad-hoc",     #這里填寫導(dǎo)出方式溯革,我使用的是ad-hoc
    export_xcargs: "-allowProvisioningUpdates",
    export_options:{
       provisioningProfiles: {
           "cn.com.kkk" => "iPhone Distribution: kkk. (77777XXRRR)"
       }
},
      scheme: scheme_name,
      clean: true,
      output_directory: output_directory,
      output_name: output_name
     )

    pgyer(api_key: "11111122222233333444444", user_key: "111122233344455555", update_description: "#{option[:desc]}")
end
end

回到項目項目主目錄 執(zhí)行fastlane topgyer desc:更新

編譯完成后就會自動上傳到蒲公英

Jenkins 踩坑

Mac 下的 Jenkins真是一個大坑了。
重復(fù)過多種安裝方法來進行構(gòu)建谷醉,一會是github拉不到代碼致稀,一會又是fastlane command not found ,又或者是報了一堆ruby的錯誤俱尼,心累啊抖单。

最后嘗試了各種方法 總算是有點眉目了

pkg安裝

首先我們說說最坑爹的pkg安裝

Jenkins下載 LTS的macOS版本,很方便 直接是一個.pkg文件号显,安裝一下臭猜。

但是安裝后會直接啟動jenkins的web站,然后你會發(fā)現(xiàn)jenkins的目錄是默認安裝/Users/Shared/jenkins的(就是共享文件夾)押蚤,也就是在你的用戶目錄之外, 接下來等你安裝完成后一構(gòu)建就是各種報錯羹应。揽碘。。

所以。雳刺。劫灶。

不要使用pkg安裝。掖桦。本昏。。

2018.4.17更新

需要注意的是安裝時不使用Shared用戶 (當(dāng)然用了也無妨)

自定義

把share用戶關(guān)閉 防止權(quán)限問題


取消jenkins用戶

安裝完成后就會發(fā)現(xiàn)秘鑰就也在用戶目錄下了

如果忘記勾選了你會發(fā)現(xiàn)秘鑰的位置是在shared/jenkins目錄下枪汪。
沒關(guān)系涌穆,設(shè)置里面刪掉用戶,shared 中 把jenkins 目錄刪了
回到Finder的Application雀久,找到Jenkins文件夾 雙擊jenkins.jar

繼續(xù)回到localhost:8080中也能看到秘鑰地址回到用戶目錄下了

接下來就是正常的安裝插件和語言宿稀。

由于本地使用rvm來管理ruby,也是深坑一大堆赖捌,構(gòu)建時會出現(xiàn)這些報錯祝沸。



找了很多方法 原因大概是ruby的問題,加過全局變量越庇,還是不行


最后發(fā)現(xiàn)罩锐,其實很簡單。卤唉。涩惑。一個插件搞定。
插件管理中搜索 rvm

rvm插件

安裝完成后 在項目配置的構(gòu)建環(huán)境中選擇rvm的ruby版本就行了搬味。境氢。


選擇ruby版本

接下來就可以愉快的構(gòu)建了。

命令行安裝

brew install jenkins

后端執(zhí)行
nohup java -jar /usr/local/Cellar/jenkins/版本號/libexec/jenkins.war --httpPort=8080 &

接著 新開一個終端執(zhí)行
open /Library/LaunchDaemons
新建一個plist文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>StandardOutPath</key>
    <string>/var/log/jenkins/jenkins.log</string>
    <key>StandardErrorPath</key>
    <string>/var/log/jenkins/jenkins.log</string>
    <key>EnvironmentVariables</key>
    <dict>
      <key>JENKINS_HOME</key>
      <string>/Users/leon/Documents/FuckingJenkins/Jenkins/Home</string>
    </dict>
    <key>GroupName</key>
    <string>daemon</string>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>org.jenkins-ci</string>
    <key>ProgramArguments</key>
    <array>
      <string>/bin/bash</string>
      <string>/Library/Application Support/Jenkins/jenkins-runner.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>UserName</key>
    <string>jenkins</string>
    <key>SessionCreate</key>
    <true/>
  </dict>
</plist>

接著更改plist的權(quán)限
sudo chown root:wheel /Library/LaunchDaemons/org.jenkins-ci.plist

最后執(zhí)行啟動jenkins
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

回到localhost:8080

Screen Shot 2018-04-16 at 3.54.19 PM.png

直接查看密碼 輸入 進入安裝插件界面碰纬。

安裝完成后萍聊,先去插件管理中 安裝個 漢化


Screen Shot 2018-04-16 at 4.07.07 PM.png

配置一下中文

Screen Shot 2018-04-16 at 4.08.07 PM.png

接下來就是正常創(chuàng)建項目了。

create

這里可以直接填寫托管平臺的賬號的密碼悦析,或者使用sshkey

執(zhí)行腳本

這里就直接執(zhí)行fastlane命令就可以

shell

至此就足夠了寿桨。

點擊立即構(gòu)建,查看控制臺强戴,所有的日志都會打印出來亭螟。

等待成功就ok了

后記

踩了好幾遍的坑 對于pkg的安裝一直不死心,來來回回重裝了好幾遍骑歹。最終還是放棄了预烙。還是老老實實用jar

參考文章:
http://www.reibang.com/p/dc6f3fea7aa9
http://www.reibang.com/p/3b4a131653e0

最后編輯于
?著作權(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é)果婚禮上,老公的妹妹穿的比我還像新娘呀闻。我一直安慰自己化借,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布捡多。 她就那樣靜靜地躺著蓖康,像睡著了一般。 火紅的嫁衣襯著肌膚如雪垒手。 梳的紋絲不亂的頭發(fā)上蒜焊,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音科贬,去河邊找鬼泳梆。 笑死,一個胖子當(dāng)著我的面吹牛榜掌,可吹牛的內(nèi)容都是我干的优妙。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼憎账,長吁一口氣:“原來是場噩夢啊……” “哼套硼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起胞皱,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤熟菲,失蹤者是張志新(化名)和其女友劉穎看政,沒想到半個月后朴恳,有當(dāng)?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
  • 正文 我出身青樓贪染,卻偏偏與公主長得像,于是被迫代替她去往敵國和親催享。 傳聞我的和親對象是個殘疾皇子杭隙,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

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