美文网首页
Jenkins二:参数化构建iOS自动打包

Jenkins二:参数化构建iOS自动打包

作者: 独孤流 | 来源:发表于2018-12-06 15:56 被阅读60次

    前一篇:Jenkins一:iOS自动打包完整实践
    后一篇:Jenkins三:不同角色不同视图及不同权限设置

    前言

    在之前文章Jenkins一:iOS自动打包完整实践中记录了使用Jenkins自动iOS打包的完整过程及遇到的问题,在实际项目中因为维护的iOS项目是一份代码管理了多个target和scheme,而前一篇文章是固定写死的针对某个分支或tag打指定scheme的包,不满足当前项目需求,所以需要用到参数化构建打包

    参考文章:

    一、git分支或tag参数化构建

    先按照插件Git Parameter


    image.png

    安装好插件后开始创建一个任务并配置git参数


    image.png
    配置使用Tag或Branch打包
    image.png
    二、多个scheme或target

    先安装一个插件Extended Choice Parameter(非必须,也可以使用其他插件或者Jenkins默认安装的多选插件)

    image.png
    image.png
    image.png

    也可以使用Jenkins默认的插件选项参数


    image.png
    image.png

    参数完成后的展示结果:


    image.png

    在自动打包的shell脚本里使用参数


    image.png

    完整shell脚本

    # 工程名
    APP_NAME="xxxx"
    
    
    #***************动态配置部分*********************
    # 不勾上自动管理证书
    CODE_SIGN_DISTRIBUTION="iPhone Distribution: xxxxx"
    # 代码文件夹名称
    #scheme#Info文件名称
    platformParams=(${iOS_TARGET_INFOS//\#/ })
    # schema名称
    SCHEMECA=${platformParams[0]}
    #info.plist文件名称
    INFO_FILENAME=${platformParams[1]}
    code_folder = "TestStudy"
    #*************************************
    
    project_infoplist_path="./${code_folder}/xxxxx/${INFO_FILENAME}.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-%H%M%S)"
    IPANAME="${APP_NAME}_${SCHEMECA}_V${bundleShortVersion}_${DATE}.ipa"
    
    #要上传的ipa文件路径
    IPA_PATH="/Users/Shared/Jenkins/Home/xxxxxxx/${IPANAME}"
    echo ${IPA_PATH}
    echo "${IPA_PATH}">> text.txt
    
    #下面2行是没有Cocopods的用法
    #echo "=================clean================="
    #xcodebuild -target "${TARGET_NAME}"  -configuration 'Release' clean
    #
    #echo "+++++++++++++++++build+++++++++++++++++"
    #xcodebuild -target "${TARGET_NAME}" -sdk iphoneos -configuration 'Release'  CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
    
    #下面2行是集成有Cocopods的用法
    echo "=================clean================="
    security unlock-keychain -p 开机密码 /Users/Shared/Jenkins/Library/Keychains/login.keychain
    xcodebuild -workspace "./${code_folder}/${APP_NAME}.xcworkspace" -scheme ${SCHEMECA}  -configuration 'Release' clean
    
    echo "+++++++++++++++++build+++++++++++++++++"
    xcodebuild -workspace "./${code_folder}/${APP_NAME}.xcworkspace" -scheme ${SCHEMECA} -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
    
    xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${SCHEMECA}.app" -o ${IPA_PATH}
    
    #自动打包后上传到SVN上
    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8
    cd /Users/Shared/Jenkins/Home/xxxxx/
    svn up
    svn add . --no-ignore --force
    svn ci -m "jenkins ios auto commit"
    

    相关文章

      网友评论

          本文标题:Jenkins二:参数化构建iOS自动打包

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