美文网首页iOS上架
iOS: Jenkins + xcodebuild打包ipa +

iOS: Jenkins + xcodebuild打包ipa +

作者: LionPig | 来源:发表于2021-01-08 17:08 被阅读0次
    前言:我使用Jenkins做持续集成,关于jenkins的安装我这里就不说了。直说一下和iOS打包相关的东西

    插件

    Keychains and Provisioning Profiles Management

    截屏2021-01-08 下午3.25.36.png
    如果没有安装,在可选插件里搜索安装,重启即可。

    配置插件

    image.png

    系统配置=》拉到最下边选这个

    • 选取 login.keychain

      image.png
    • 路径

      image.png
      ~/Library/Keychains,如果没有login.keychain,复制一个新的login.keychain-db,然后把-db删掉,将这个文件上传。
    • Identities


      image.png

    上传后,FilenamePassword都会自动填充,这个Password就是电脑登录的密码(当前用户)。

    Identities是你添加的证书,打开keychain->我的证书->右键证书->显示简介->复制常用名称。

    image.png

    可以添加多个。

    • Provisioning Profiles


      image.png

    ~/Library/MobileDevice/Provisioning Profiles,拖入终端会显示整个路径,复制过来即可。

    到此为止整个插件配置完成。


    创建一个工程

    image.png

    选第一个,输入工程名称,确定。

    丢弃旧的构建(可选)

    image.png

    源码管理

    image.png

    我使用Git,credentials是登录的账号密码,如果没有添加一个即可,如下图。


    image.png

    构建环境

    image.png

    选择刚才插件填写的内容。

    构建(核心)

    • 点击增加构建步骤
    • 选择 执行shell
      image.png
    archive 的 -configuration: 默认可以release或者debug,或者你自己的配置。
    image.png
    -exportArchive有一个文件adhoc_ExportOptions.plist
    image.png
    如果你不想自己创建,也可以使用xcode导出ipa后,从导出的文件夹里获取。名字为ExportOptions.plist
    method:有四种渠道。我将他们做了区分,分成四个不同的plist文件。

    类别有development ad-hoc app-store enterprise

    到此为止打包成功

    上传至蒲公英

    我使用cURL直接上传到蒲公英,附蒲公英API,获取_api_key也是在这个页面
    我还保存了蒲公英返回的结果
    具体情况参考最终脚本

    最终脚本

    • {USERNAME}需要替换为你自己的路径
    • shell
    #!/bin/sh
    
    # 文件名前缀
    APP_NAME="MainProject"
    
    TARGET_NAME="MainProject"
    
    # info.plist路径
    #project_infoplist_path="./${TARGET_NAME}/Info.plist"
    #取版本号
    #bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")
    
    #bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")
    
    DATE=$(date +%Y%m%d-%H-%M-%S)
    ARCHIVE_NAME="${APP_NAME}_${DATE}.xcarchive"
    IPANAME="${APP_NAME}_${DATE}_IPA"
    
    
    #步骤1-获取iOS工程
    cd /Users/{USERNAME}/.jenkins/workspace/TEST
    pod install --verbose --no-repo-update
    #mkdir -p build
    #要上传的ipa文件路径
    ROOT_PATH="/Users/{USERNAME}/Desktop/Jenkins"
    ARCHIVE_PATH="${ROOT_PATH}/Archive/${ARCHIVE_NAME}"
    IPA_PATH="${ROOT_PATH}/Export/${IPANAME}"
    echo "ARCHIVE_PATH: ${ARCHIVE_PATH}"
    echo "IPA_PATH: ${IPA_PATH}"
    echo "IPA_PATH:\n${IPA_PATH}">> export_history.txt
    
    #步骤2-打包ipa
    xcodebuild clean
    
    xcodebuild archive -workspace ${APP_NAME}.xcworkspace -scheme ${APP_NAME} -configuration release -archivePath ${ARCHIVE_PATH}
    
    xcodebuild -exportArchive -archivePath ${ARCHIVE_PATH} -exportPath "${IPA_PATH}" -exportOptionsPlist "${ROOT_PATH}/ExportOptions/adhoc_ExportOptions.plist" -allowProvisioningUpdates 
    
    #步骤3-上传至蒲公英
    PGYERLOG_PATH="${IPA_PATH}/upload_pgyer_log"
    #创建蒲公英上传结果日志文件夹
    mkdir -p ${PGYERLOG_PATH}
    #创建蒲公英上传结果日志文
    touch "${PGYERLOG_PATH}/log.txt"
    #上传至蒲公英
    curl -F "_api_key=你的key" -F "file=@${IPA_PATH}/${TARGET_NAME}.ipa" https://www.pgyer.com/apiv2/app/upload 2>&1 | tee "${PGYERLOG_PATH}/log.txt"
    

    如果你有改进或者发现错误,请告诉我,谢谢 :) !


    增加

    错误:pod时候会出现 command not found

    当你jenkins服务在非OS X系统运行时,使用Mac节点的配置稍微不一样。

    • 系统管理-系统配置-全局属性


      image.png

    值:在终端中输入echo $PATH将输出内容复制填写。

    • pod install之前添加命令
    export LANG=en_US.UTF-8
    export LANGUAGE=en_US.UTF-8
    export LC_ALL=en_US.UTF-8
    

    不然会报错类似下图:


    1761610121081_.pic_hd.jpg

    相关文章

      网友评论

        本文标题:iOS: Jenkins + xcodebuild打包ipa +

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