Fastlane文件的实现-按需求

2022-02-24  本文已影响0人  ZouJgg

使用的是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

上一篇下一篇

猜你喜欢

热点阅读