iOS上架

iOS: Jenkins + xcodebuild打包ipa +

2021-01-08  本文已影响0人  LionPig
前言:我使用Jenkins做持续集成,关于jenkins的安装我这里就不说了。直说一下和iOS打包相关的东西

插件

Keychains and Provisioning Profiles Management

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

配置插件

image.png

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

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

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

image.png

可以添加多个。

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

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


创建一个工程

image.png

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

丢弃旧的构建(可选)

image.png

源码管理

image.png

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


image.png

构建环境

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也是在这个页面
我还保存了蒲公英返回的结果
具体情况参考最终脚本

最终脚本

#!/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节点的配置稍微不一样。

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

export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

不然会报错类似下图:


1761610121081_.pic_hd.jpg
上一篇 下一篇

猜你喜欢

热点阅读