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的目錄是默認(rèn)安裝/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.itdecent.cn/p/dc6f3fea7aa9
http://www.itdecent.cn/p/3b4a131653e0

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容