美文网首页
iOS 最新Jenkins自动化打包总结

iOS 最新Jenkins自动化打包总结

作者: 宥落 | 来源:发表于2020-09-17 23:45 被阅读0次

    本文主要内容:

    1.Xcode和Jenkins的相关设置,以及环境切换
    2.通过shell脚本将证书和描述文件拷贝到自动化打包的机器,并archive导出ipa包
    3.上传到蒲公英
    4.解决Swift不支持use_frameworks!的问题

    开搞!

    1.Xcode和Jenkins的相关设置,以及环境切换。开始之前需要先到处p12证书,将p12证书和描述文件拷贝进工程里,很重要

    以下内容都是release版本的企业包,环境切换我选择了,通过shell脚本修改json文件,判断。如果你只需要在两个环境之间切换,可以通过release、debug包的方式切换。
    先在Xcode添加一个json文件


    image
    image

    生成ExportOptions.plist文件,这个包的主要功能是shell脚本打包导出ipa的时候,获取证书和描述文件的相关信息。这个文件可以手动创建,配置起来麻烦,这里选用从导出包的方式获取。先手动打一个企业包,并导出到桌面,然后拷贝到工程目录同级


    image
    在jenkins上配置环境变量的参数:
    a.分支参数
    image
    b.环境参数,以实际情况为准,可以配置多个
    image

    配置git地址:


    image

    2.通过shell脚本将证书和描述文件拷贝到自动化打包的机器,并archive导出ipa包

    选用shell脚本构建,可配置型较强。插件不是很好用!


    image

    本文重点,shell脚本!

    这里主要完成了证书和描述文件的拷贝,打包等过程,内容非常重要,里面的相关配置,路径仔细核对!

    #bin/bsah - l
    
    export LANG=en_US.UTF-8
    
    export LANGUAGE=en_US.UTF-8
    
    export LC_ALL=en_US.UTF-8
    
    #先更新pod
    cd $WORKSPACE
    /usr/local/bin/pod install --verbose --no-repo-update
    
    #设置配置文件,environmentType即在上面配置的参数信息
    cd $WORKSPACE
    echo "{\"environmentType\":\"$environmentType\"}" > jenkinsCofig.json
    
    #注意:参数请仔细核对,path不清楚可拖到终端查看,报错请仔细核对path
    #工程名
    ProjectName=""
    
    #identifier
    BundleIdentifier=""
    
    #ExportOptions.plist路径
    ExportOptionsPlistPath="${WORKSPACE}/ExportOptions.plist"
    
    #打包服务器管理员名称
    JenkinsServeName="admin"
    
    #打包服务器管理员密码
    JenkinsServePass="admin1234"
    
    #在钥匙串里查看复制证书的名字如:iPhone Distribution:InvestmentManagement Co., Ltd.
    SigningCertificateName=""
    
    #工程中p12证书的名字,起个狗名字再引入工程
    CertificateName="cer_dis"
    
    #P12证书密码
    CertificatePassword="666666"
    
    #工程中P12证书的路径
    CertificatePath="${WORKSPACE}/${ProjectName}/${CertificateName}.p12"
    
    #描述文件的udid,前往~/Library/MobileDevice/Provisioning Profiles查看,拷贝进工程
    ProfileUdid="01282b59-3a9c-4939-bd3c-fb673886043e"
    
    #描述文件的全名
    ProfileName="${ProfileUdid}.mobileprovision"
    
    #描述文件在工程的目录,以实际目录为准
    ProfilePath="${WORKSPACE}/${ProjectName}/${ProfileName}"
    
    #build目录
    BuildPath=${WORKSPACE}/build
    
    #配置环境Release
    Configuration="Release"
    
    #删除历史bulid
    if [ -d ${BuildPath} ];then
    rm -rf ${BuildPath}
    echo clean build_path success.
    fi
    
    
    #将证书拷贝到服务器的钥匙串
    security unlock-keychain -p ${JenkinsServePass} /Users/${JenkinsServeName}/Library/Keychains/login.keychain
    security list-keychains -s /Users/${JenkinsServeName}/Library/Keychains/login.keychain
    security import ${CertificatePath} -k /Users/${JenkinsServeName}/Library/Keychains/login.keychain -P ${CertificatePassword} -T /usr/bin/codesign
    security find-identity -p codesigning /Users/${JenkinsServeName}/Library/Keychains/login.keychain
    
    #将描述文件copy到服务器的目录,~/Library/MobileDevice/Provisioning Profile
    cp ${ProfilePath} "/Users/${JenkinsServeName}/Library/MobileDevice/Provisioning Profiles/${ProfileUdid}.mobileprovision"
    
    
    #打包导出ipa
    xcodebuild -workspace ${ProjectName}.xcworkspace -scheme ${ProjectName} -configuration ${Configuration} -archivePath ${BuildPath}/${ProjectName}-inhouse.xcarchive clean
    
    xcodebuild archive -workspace ${ProjectName}.xcworkspace -scheme ${ProjectName} -configuration ${Configuration} -archivePath ${BuildPath}/${ProjectName}-inhouse.xcarchive CODE_SIGN_IDENTITY="${SigningCertificateName}" PROVISIONING_PROFILE="${ProfileName}" PRODUCT_BUNDLE_IDENTIFIER="${BundleIdentifier}"
    
    xcodebuild -exportArchive -archivePath ${BuildPath}/${ProjectName}-inhouse.xcarchive -exportPath ${BuildPath} -exportOptionsPlist ${ExportOptionsPlistPath}
    
    

    3.上传到蒲公英,很简单,不做说明

    image.png

    4.解决Swift不支持use_frameworks!的问题

    参考:iOS Jenkins打包遇到的坑

    其它相关参考资料:
    iOS打包脚本思路
    jenkins iOS打包

    相关文章

      网友评论

          本文标题:iOS 最新Jenkins自动化打包总结

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