fastlane 打包用於無人值守提交應用包到TestFlight ,蒲公英,fir.im等第三方平臺,感覺覺得速度方面可能會慢一點,但是優勢在於
- 無人值守
- 自動拉取最新代碼
- 自動clean,保證代碼沒有緩存干擾
- 自動打tag標籤
安裝
個人建議,專門用一臺電腦來打包,mac 是支持遠程控制的,或者是用一個配置比較好的電腦,讓他給你建一個用戶,你就可以使用他的電腦了,而且不會耽擱彼此的工作(共享屏幕的方法)
安裝準備
- xcode 插件安裝或更新:
xcode-select --install
- 更新ruby 最好是最新版本吧
正式安裝
sudo gem install fastlane -NV
(如果報錯了就執行:sudo gem install fastlane -n /usr/local/bin
)fastlane init
(如果是swift:fastlane init swift
)- 然後就wait…
使用
以下是在下配置文件,支持發佈發佈不同的環境到不同的平臺
# 該文件用來命令行打包,自動pull add_tag ,commit,auto_uplaod 到(testflight,fir.im,pgy)
# 1. cd 到對應的工程目前下
# 2.執行對應的命令
# a.發佈到蒲公英: (開發環境) fastlane pgy
# b.發佈到fir.im:(測試環境) fastlane fir env:dev/test/prelive/release
# c.發佈到testFlight:(預生產環境) fastlane tf
# d.發佈到testFlight:(正式環境) fastlane store
# f. 同時發佈到testflight 和fir.im fastlane tf_fir
# e.同時發佈到所有環境 fastlane all
#
#
#
#
#
#
#
default_platform(:ios)
platform :ios do
lane :release_ready do
UI.message("----------release_ready----------")
ensure_git_status_clean ## 確保當前的代碼都已經提交完成
git_pull
increment_build_number # 自增build
commit_version_bump # 檢查build
push_to_git_remote
end
lane :release_finsh do
UI.message("----------release_finsh----------")
push_git_tags
end
lane :pgy do
UI.message("----------發佈一個蒲公英 開發版本----------")
release_ready
sync_code_signing(type: "adhoc")
build_app(
workspace: "WeTalk.xcworkspace",
scheme: "WeTalk",
export_method: "ad-hoc",
configuration: "Debug",# Debug, Test,Prelive, ,Release
silent: true,
clean: true,
)
pgyer(api_key: "you api key", user_key: "your user key")
add_git_tag(tag:"dev/#{get_version_number}(#{get_build_number})")
release_finsh
end
lane :fir do |options|
UI.message("----------發佈一個fir.im 測試版本----------")
release_ready
env = options[:env]
config = "Test"
message = "測試環境"
if env == "dev"
config = "Debug"
message = "開發環境"
elsif env == "test"
config = "Test"
message = "測試環境"
elsif env == "prelive"
config = "Prelive"
message = "預生產環境"
elsif env == "release"
config = "Release"
message = "正式環境"
else
config = "Test"
message = "測試環境"
end
sync_code_signing(type: "adhoc")
build_app(
workspace: "WeTalk.xcworkspace",
scheme: "WeTalk",
export_method: "ad-hoc",
configuration: config,
silent: true,
clean: true,
)
firim(firim_api_token: "your token",app_changelog:message)
add_git_tag(tag:"#{env}/#{get_version_number}(#{get_build_number})")
release_finsh
end
lane :tf do
UI.message("----------發佈一個testfligth預生產版本----------")
release_ready
sync_code_signing(type: "appstore")
build_app(
workspace: "WeTalk.xcworkspace",
scheme: "WeTalk",
configuration: "Prelive",
silent: true,
clean: true,
changelog:"預生產環境"
)
upload_to_testflight
add_git_tag(tag:"prelive/#{get_version_number}(#{get_build_number})")
release_finsh
end
lane :store do
UI.message("----------發佈一個appStore預生產版本----------")
release_ready
sync_code_signing(type: "appstore")
build_app(
workspace: "WeTalk.xcworkspace",
scheme: "WeTalk",
configuration: "Release",
silent: true,
clean: true,
changelog:"正式環境"
)
upload_to_testflight
add_git_tag(tag:"release/#{get_version_number}(#{get_build_number})")
release_finsh
end
lane :tf_fir do
UI.message("----------同時發佈testFlight 和 fir.im 版本----------")
fir # fir.im 測試環境
tf # testflight 預生產環境
end
lane :all do
UI.message("----------發佈所有版本----------")
pgy # 蒲公英,開發環境
fir # fir.im 測試環境
tf # testflight 預生產環境
store # 正式環境
end
拓展
不同環境的配置
我們在開發的時候會遇到很多環境,比如有開發環境,測試環境,預生產環境,生產環境,很明顯,Xcode 默認的Debug 和release 是不夠用的,幸運的是,我們可以對其進行擴展,如下:
- 添加你想要的配置,你可以duplicate 系統的debug or release ,如果你要發佈應用,建議選擇duplicate release,因爲release 會多一些優化配置
- 設置他們對應的宏定義,系統默認只有一個
DEBUG
- 配置不同的環境
#ifdef DEBUG // 開發環境
your code
#elif TEST // 測試環境
your code
#elif PRELIVE // 預生產環境
your code
#elif RELEASE // 正式環境
your code
#else // 默認也是正式環境
your code
#endif
- 結果,你就在可以不用修改任何代碼,在開發或者發佈的時候隨意切換了
製作可執行的腳本
- 創建一個
.sh
後綴的腳本文件 - 使用命令:
sudo chmod 777 yourfile.sh
修改權限 - 編寫你想要執行的腳本
- 修改雙擊打開方式:
- 收工,雙擊試試
問題記錄
附件
我之前配置的其他fastlane 腳本,都放在這裏了,或許對你有一些幫助github 地址
參考資料
- 官網地址:>https://docs.fastlane.tools/getting-started/ios/setup/