美文网首页
Fastlane文件的实现-按需求

Fastlane文件的实现-按需求

作者: ZouJgg | 来源:发表于2022-02-24 16:40 被阅读0次

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

    相关文章

      网友评论

          本文标题:Fastlane文件的实现-按需求

          本文链接:https://www.haomeiwen.com/subject/gwngqrtx.html