美文网首页
持续化集成(三):Jenkins + Fastlane 打包

持续化集成(三):Jenkins + Fastlane 打包

作者: ConnerLi | 来源:发表于2018-12-11 14:09 被阅读0次

    Jenkins iOS打包我目前了解的几种方式:

    1.使用jenkins xcode 插件,对应的要添加证书和描述文件,然后对应的填写构建参数。
    2.使用jenkins xcodebuild + xcrun命令 这里我只简单写一些常用的方法 ,中间会遇到xcode一个文件丢失的问题, xcode 9 之后有个文件被移除掉了,这两种方式我就不展开了,想要使用的请自行搜索查下,网上也有很多教程。(下面代码转自手把手教你利用Jenkins持续集成iOS项目

    # 工程名
    APP_NAME="YourProjectName"
    # 证书
    CODE_SIGN_DISTRIBUTION="iPhone Distribution: Shanghai ******* Co., Ltd."
    # info.plist路径
    project_infoplist_path="./${APP_NAME}/Info.plist"
    #取版本号
    bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")
    #取build值
    bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")
    DATE="$(date +%Y%m%d)"
    IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"
    #要上传的ipa文件路径
    IPA_PATH="$HOME/${IPANAME}"
    echo ${IPA_PATH}
    echo "${IPA_PATH}">> text.txt
    //下面2行是没有Cocopods的用法
    echo "=================clean================="
    xcodebuild -target "${APP_NAME}"  -configuration 'Release' clean
    echo "+++++++++++++++++build+++++++++++++++++"
    xcodebuild -target "${APP_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
    //下面2行是集成有Cocopods的用法
    echo "=================clean================="
    xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}"  -configuration 'Release' clean
    echo "+++++++++++++++++build+++++++++++++++++"
    xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
    xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${APP_NAME}.app" -o ~/"${IPANAME}"
    

    使用fastlane 打包,个人觉得是更方便管理,更容易操作。

    Fastlane 的使用,网上已经有很多教程了,我只写一下自己遇到的坑点和总结。其实跟我们安装Cocoapods挺类似的,基本上你装过Pod,环境就基本好了,例如ruby环境,你只需要了解的就是Fastlane 的一些Action。
    如果环境安装失败,请移步查看
    Rvm + Ruby +Gem 相关命令
    下面是自己写的一个 fastfile 文件

    # 定义fastlane版本号
    fastlane_version "2.111.0" 
    # 定义打包平台
    default_platform :ios
    # 任务脚本
    platform :ios do
    #开始前操作  
    before_all do
    end
    
    desc "Jenkins版本打包"
    lane :YLAPP do |options|
        #target
        target = options[:target]
        #scheme
        scheme = options[:scheme]
        #configuration 可以不指定
        # configuration = options[:configuration]
        #时间暂时没用到
        currentTime = Time.new.strftime("%Y%m%d%H%M")
        #修改版本号为打包buildNumber
        increment_build_number(
          build_number: options[:build_number]
        )
        #获取target 版本号
        version_number = get_version_number(target: "#{target}")
        #获取buildNumber
        build_number = get_build_number(xcodeproj: "#{target}.xcodeproj")
        #输出方式如果企业包打包方式改为企业打包
        export_method = "ad-hoc"
        if target == "Enterprise" then
            export_method = "enterprise"
        end
    # 开始打包
    gym(
        #输出的ipa名称
        output_name:"#{scheme}.ipa",
        # 隐藏没有必要的信息
        silent: true,  
        # 是否清空以前的编译信息 true:是
        clean:true,
        #scheme
        scheme: "#{scheme}", 
        # 指定打包方式,Release Debug Test 未指定就按照scheme 指定的configuration
        # configuration:"#{configuration}",
        # 指定打包所使用的输出方式,目前支持app-store, package, ad-hoc, enterprise, development
        export_method:"#{export_method}",
        # 更新描述  
        export_xcargs: "-allowProvisioningUpdates",
        #是否包含调试符号
        include_symbols: false,
        #是否开启bitcode
        include_bitcode: false,
        # 指定输出文件夹
        output_directory:"~/build/#{scheme}/#{version_number}/#{build_number}/",
    ) 
    #上传到firim
    firim(firim_api_token: "******************************")
    end
    
    #结束后的操作
    after_all do |lane|
    # This block is called, only if the executed lane was successful
    
    # slack(
    #   message: "Successfully deployed new App Update."
    # )
    end
    
    error do |lane, exception|
    # slack(
    #   message: exception.message,
    #   success: false
    # )
    end
    end
    

    一些常Action Tips

    #添加版本插件
    fastlane add_plugin versioning
    # 以下两个action来自fastlane-plugin-versioning,
    # 第一个递增 Build,第二个设定Version。
    # 如果你有多个target,就必须指定target的值,否则它会直接找找到的第一个plist修改
    increment_build_number_in_plist(target: 'targetName')
    #增加build版本
    increment_build_number(
        xcodeproj: 'personProject',
        build_number: "#{build}",
    )
    
    increment_version_number_in_plist(
       target: 'target',
       version_number: '1.0'
    )
    
    #指定描述文件
    export_options: {
        provisioningProfiles: {
            "com.test.conner" => "ios_dis",
        }
    },
    
    #添加firim 上传插件
    fastlane add_plugin firim 
    # 上传firim
    firim(firim_api_token: "此处填写fir的用户token"),
    #添加pgyer
    fastlane add_plugin pgyer
    # 上传蒲公英
    pgyer(api_key: "11111122222233333444444", user_key: "111122233344455555", update_description: "#{option[:desc]}")
    #提交到testFlight
    pilot(
        #忽略等待包上传成功
        skip_waiting_for_build_processing: true,
    )  
    
    
    #常用参数:
    scheme :#指定打的哪个scheme
    project :#指定project (未使用cocopods)
    workspace #:指定workspace (使用cocopods)
    clean :#打包前clean
    xcargs : #附加一些参数传递给xcodebuild 如: xcargs: 'DEBUG_INFORMATION_FORMAT="dwarf-with-dsym"',
    export_method :#出包方法 app-store, ad-hoc, package, enterprise, development
    configuration : #指定构建App的配置  Release、Debug、自定义
    output_directory : #输出目录
    output_name :#输出名称
    include_symbols :#是否包含调试符号
    include_bitcode :#是否开启bitcode
    
    
    相关文章:

    持续化集成(一):Jenkins安装
    持续化集成(二):Jenkins 常用配置
    持续化集成(三):Jenkins + Fastlane 打包

    相关文章

      网友评论

          本文标题:持续化集成(三):Jenkins + Fastlane 打包

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