使用的是Jenkins+Fastlane实现打包的方法
在Jenkins中的脚本实现
# 打包本地
# fastlane local_build
# 打包开发环境
# fastlane develop_build
# 打包生成环境
# fastlane product_build
# 打包上传testflight
# 打包之前在终端输入:fastlane spaceauth -u xxxxxxxx@163.com 命令 允许登录AppleID 并输入6位验证码
# fastlane product_testFlight
# 如需要打包上传符号化文件
# fastlane product_testFlight uploadsydm:true
Fastlane具体实现,符号化与上传蒲公英需要实现插件
# 定义打包平台
default_platform(:ios)
def updateProjectBuildNumber
currentTime = Time.new.strftime("%Y%m%d")
build = get_build_number()
if build.include?"#{currentTime}"
# => 为当天版本 计算迭代版本号
lastStr = build[build.length-2..build.length-1]
lastNum = lastStr.to_i
lastNum = lastNum + 1
lastStr = lastNum.to_s
if lastNum < 10
lastStr = lastStr.insert(0,"0")
end
build = "#{currentTime}#{lastStr}"
else
# => 非当天版本 build 号重置
build = "#{currentTime}01"
end
puts("*************| 更新build #{build} |*************")
# => 更改项目 build 号
increment_build_number(
build_number: "#{build}"
)
end
#指定项目的scheme名称
scheme="XXXXX"
workspace="XXXXX.xcworkspace"
platform :ios do
lane :local_build do |options|
branch = options[:branch]
puts "开始打local ipa"
updateProjectBuildNumber #更改项目build号
# 开始打包
gym(
#输出的ipa名称
output_name:"#{scheme}_#{get_build_number()}",
# 是否清空以前的编译信息 true:是
clean:true,
# 指定打包方式,Release 或者 Debug
configuration:"Debug",
workspace: workspace,
# 指定打包所使用的输出方式,目前支持app-store, package, ad-hoc, enterprise, development
export_method: "development", #这里填写导出方式,我使用的是ad-hoc
export_xcargs: "-allowProvisioningUpdates",
# 指定输出文件夹
output_directory:"./fastlane/local_build",
)
if options[:uploadsydm]
uploadsydm_test "./fastlane/local_build"
end
end
lane :develop_build do |options|
branch = options[:branch]
puts "开始打Test ipa"
updateProjectBuildNumber #更改项目build号
# 开始打包
gym(
#输出的ipa名称
output_name:"#{scheme}_#{get_build_number()}",
# 是否清空以前的编译信息 true:是
clean:true,
# 指定打包方式,Release 或者 Debug
configuration:"Test",
workspace: workspace,
# 指定打包所使用的输出方式,目前支持app-store, package, ad-hoc, enterprise, development
export_method: "development", #这里填写导出方式,我使用的是ad-hoc
export_xcargs: "-allowProvisioningUpdates",
# 指定输出文件夹
output_directory:"./fastlane/develop_build",
)
if options[:uploadsydm]
uploadsydm_test "./fastlane/develop_build"
end
end
lane :product_build do |options|
branch = options[:branch]
puts "开始打development ipa"
updateProjectBuildNumber #更改项目build号
# 开始打包
gym(
#输出的ipa名称
output_name:"#{scheme}_#{get_build_number()}",
# 是否清空以前的编译信息 true:是
clean:true,
# 指定打包方式,Release 或者 Debug
configuration:"Release",
workspace: workspace,
# 指定打包所使用的输出方式,目前支持app-store, package, ad-hoc, enterprise, development
export_method: "development", #这里填写导出方式,我使用的是ad-hoc
export_xcargs: "-allowProvisioningUpdates",
# 指定输出文件夹
output_directory:"./fastlane/product_build",
)
if options[:uploadsydm]
uploadsydm_test "./fastlane/product_build"
end
#蒲公英api_key和user_key
#api_key="0f27a7807fxxxxxxxxxxxxxxxx042ed1fdf1ab"
#user_key="4ab6ba60f2xxxxxxxxxxxxxxxxxxxxx53b4f2d"
# 开始上传蒲公英
#puts "开始上传蒲公英"
#pgyer(api_key: "#{api_key}", user_key: "#{user_key}")
end
lane :product_testFlight do |options|
cocoapods(use_bundle_exec: false)
#更改项目build号
updateProjectBuildNumber
# 开始打包
gym(
#输出的ipa名称
output_name:"#{scheme}_#{get_build_number()}",
# 是否清空以前的编译信息 true:是
clean:true,
# 指定打包方式,Release 或者 Debug
configuration:"Release",
# 指定打包所使用的输出方式,目前支持app-store, package, ad-hoc, enterprise, development
export_method:"app-store",
export_xcargs: "-allowProvisioningUpdates",
# 指定输出文件夹
output_directory:"./fastlane/testFlight_build",
)
# 发布到Apple Store 会先上传到testFlight
puts "开始上传到TestFlight"
pilot
if options[:uploadsydm]
uploadsydm_product "./fastlane/testFlight_build"
end
end
end
def uploadsydm_test(d_path)
puts "上传dysm文件测试环境"
sentry_upload_dsym(
dsym_path: "#{d_path}",
url: 'https://sentry.xxxxtest.cn/',
auth_token: '60e5fb582xxxxxxxxxxxxxxxxxxxxx49f7ac13306d0fb31351',
org_slug: 'sentry',
project_slug: 'dcbapp-ios',
)
end
def uploadsydm_product(d_path)
puts "上传dysm文件正式环境"
sentry_upload_dsym(
dsym_path: "#{d_path}",
url: 'https://sentry.xxxxxx.com/',
auth_token: '10f0cc598xxxxxxxxxxxxxxxxxxxxxx18576d901083571c0',
org_slug: 'sentry',
project_slug: 'dcbapp-ios',
)
end
网友评论