美文网首页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