前言简介
fastlane是一款运用ruby完结的跨渠道的继续集成东西,支持安卓和iOS渠道项目的继续集成实践,fastalne处理供给包含:初始设置、屏幕截图、打包、上传到测试渠道、部署等功能。本篇主要介绍fastlane的集成,以及合作jenkins主动化的搭建
iOS fastlane装置及运用:
(一)装置晋级bundle
-
fastalne需求在ruby环境下才干装置,并且系统ruby版别需求高于2.6.2。假如bundle版别过低,需求先晋级bundle
-
装置晋级bundle履行指令行
sudo gem install bundler -n/usr/local/bin
-
cd到项目根目录输入bundle init 生成Gemfile文件,在此文件写入
source "[https://gems.ruby-china.com](https://gems.ruby-china.com/)" gem "fastlane"
-
装置依靠库,履行指令行
bundle install
-
更新Gemfile.lock文件的版别和依靠履行指令行
bundle update
(二)Fastlane装置、初始化项目
-
运用HomeBrew装置(办理各种包)履行指令行
brew install fastlane
进行装置。能够用指令fastlane --version
来检查是否装置成功 -
装置成功今后cd到工程目录下初始化履行指令行
fastlane init
出现下图挑选你所需求的功能模块⬇️
- 1、主动化截图 2、主动化beta分发至TestFlight 3、主动化App Store 分发 4、手动写主动化脚本(自定义发布渠道如pgyer,firm等)。
- 本篇介绍的是iOS上传到TestFLight,所以直接挑选2
- 输入苹果账号,等候一会儿,然后一直回车就能够了
- 构建完结会主动生成如下文件:⬇️
(三)运用fastlane主动化构建
- 初始化完结后,在Appfile文件内设置对应的开发者账号以及bundle id。fastFile中增加绕开二次验证的脚本。
注:(假如挑选是2主动化beta分发至testFlight则不需求手动填写)
- 注:keyid和issuer_id还有.p8文件是经过登陆苹果开发者中心-用户与访问-密钥,需账户持有者去创立并生成,生成一次能够所有项目通用
- 终端输入指令行
fastlane beta
,等候上传成功即可
(四)项目装备
-
电脑如已经装置fastalne,直接cd到项目跟目录下,运转
fastalne init
,即可生成对应文件,直接复制公用脚本文件,修正SCHEME
称号,拷贝.p8文件到fastlane文件夹下即可
iOS jenkins合作fastlane主动化出包:
-
在jenkins中创立独自的任务,用来专门上传到testFlight分发,将脚本写到jenkins本地。将项目称号、git地址、代码分支,开发环境写成变量在脚本中去适配不同的项目,装备好了今后如下⬇️
-
项目需求分发时直接切换项目称号,和对应的选项,即可直接构建,等候上传成功即可
问题总结:
- Check out the few lines of raw
xcodebuild
output above for potential hints
- 描述文件装备问题,项目内的描述文件需求装备正确,均运用distribution描述文件
-
jenkins构建时分报错
13:57:17: Transporter transfer failed.
13:57:17: Please sign in with an app-specific password. You can create one atappleid.apple.com. (-22910)
13:57:17: Your account has 2 step verification enabled
13:57:17: Please go toappleid.apple.com/account/man…
13:57:17: and generate an application specific password for
13:57:17: the iTunes Transporter, which is used to upload builds
13:57:17: To set the application specific password on a CI machine using
13:57:17: an environment variable, you can set the
13:57:17: FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD variable
- 是因为苹果的双重身份验证导致的问题,需求在苹果开发者中心,用户中心,获取到对应的密钥
key_id
、issuer_id
、还有.p8
文件,注:(p8文件需求保存到本地进行备份)放到对应的方位上,获取方式如上。获取完结的.p8文件放在fastlane脚本文件同目录下,然后在Fastfile文件中增加脚本
Fastlane相关脚本:
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
SCHEME = "项目称号"
Method = "app-store"
default_platform(:ios)
def updateBuild
currentTime = Time.new.strftime("%Y%m%d%H%M%S")
increment_build_number(
build_number: "#{currentTime}"
)
end
api_key = app_store_connect_api_key(
key_id: "xxx",
issuer_id: "xxx",
key_filepath: "./fastlane/xxx.p8",
duration: 1200,
in_house: false
)
platform :ios do
desc "Description of what the lane does"
lane :beta do
updateBuild
gym(
scheme: SCHEME,
workspace: "#{SCHEME}.xcworkspace",
output_directory: "./fastlane/release",
output_name: "#{SCHEME}.ipa",
export_method: Method,
export_xcargs: "-allowProvisioningUpdates",
silent: true,
clean: true
)
upload_to_testflight(
api_key: api_key,
ipa: "./fastlane/release/#{SCHEME}.ipa",
skip_waiting_for_build_processing: true,
skip_submission: true
)
end
end