Fastlane實戰: 一、自動化打包(上)

上篇先說一下打包的周邊問題(也能夠先跳過),下篇再聚焦於打包自己。markdown

配置機器

因爲是在其餘機器上打包,因此須要:app

  1. 將本身電腦和打包機器在同一個局域網下(或者說同一個WIFI)
  2. 系統偏好設置 -> 共享 中打開遠程登陸、屏幕共享、文件共享三個權限
  3. 將馬甲包從新命名放在用戶目錄下,方便單獨打包
  4. 配置好一份別名,方便直接打包

而後平時打包就是經過 訪達->共享屏幕 去訪問,或者說 ssh(遠程登陸) 連接上去。若是須要遠程在家的話,能夠考慮掛一個 TeamViewerssh

遇到的問題

沒法讀取鑰匙串

若是是經過 ssh方式 遠程登陸到其餘macOS機器上,直接打包可能因爲 Keychain 未解鎖的問題致使打包失敗。oop

解決辦法是在遠程機器桌面建立一個登陸密碼文件,假如當前登陸密碼爲 12345678:spa

// 也能夠手動建立一份文件,注意文件名須要和後邊的匹配
echo 12345678 > ~/.keychain_pass_file
複製代碼

而後在腳本最前面,加上:code

注意:腳本第一行會打印密碼出來。若是對這有顧慮的能夠研究換一種方法orm

# 解鎖遠程機器上的鑰匙串
keychain_pass = sh("cat ~/.keychain_pass_file")
sh "security unlock-keychain -p #{keychain_pass}"
unlock_keychain(path: "~/Library/Keychains/login.keychain", password: "$(cat ~/.keychain_pass_file)")
複製代碼

Fastfile共用

因爲有多個馬甲包,且可能由不一樣人負責的,且打包腳本也有可能更新,如何讓他們共用同一份Fastfile呢。get

稍微查了下資料後,發現有一個 環境變量(env)遠程文件 ,徹底知足這個需求。it

環境變量: - 相似於 xcconfig,配置鍵值對,而後在 Fastfile 中經過 ENV["Key"]來獲取不一樣值 - 在打包時,執行 fastlane fir --env weixin , 其中 weixin 必須和 env 文件名一致,如: .env.weixin 遠程文件: 能夠導入遠程文件,來實現始終爲最新版本的打包腳本io

打包在簽名時詢問密碼

初次打包時,可能會詢問密碼,這個時候,能夠用這一行命令來解決

security set-key-partition-list -S apple-tool:,apple: -k "$(cat ~/.keychain_pass_file)" ~/Library/Keychains/login.keychain
複製代碼

也能夠到鑰匙串裏,設置證書的訪問控制權限來達到目的。

fastlane-keychain-access.png

相關文章
相關標籤/搜索