Jenkins iOS打包问题(更新)

这次在新版 Xcode 的中又遇到了一些问题。简单的总结下吧。

一、前言

  • 有段时间没有使用过 Jenkins 打包,有的生疏。
  • 这次是由于领导要求更新下 App 的基本内容,重新使用打包。

二、两个关键点

  • 更换开发者账号 (旧开发者账号由于不可抗力,无法继续使用。重新申请了新的开发者账号。)
  • 打包配置更新

三、打包的曲折之路

错误一

Code Signing Error: No certificate for team '' matching '' found: Select a different signing certificate for CODE_SIGN_IDENTITY

Check dependencies
Code Signing Error: No certificate for team 'TVJxxxxxG43' matching 'iPhone Developer: develop@kxxxxe.com (VVPxxGM)' found:  Select a different signing certificate for CODE_SIGN_IDENTITY, a team that matches your selected certificate, or switch to automatic provisioning.
Code Signing Error: Code signing is required for product type 'Application' in SDK 'iOS 11.4'

** ARCHIVE FAILED **
错误一

可能出现问题的原因:

  • teamID 配置失败?
  • 证书导入错误?

解决方案:
由于是新开发者账号,需要将开发者账号相关信息配置到 Jenkins 中。

  • 在Jenkins -- 系统管理 -- Keychains and Provisioning Profiles Management 中添加配置。
    • 上传 login.keychain
    • 更新identities ;注意 (开发的证书:有两个 ,一个是团队的team开发证书,一个是person开发证书;不要选错)


      开发证书
    • 上传更新 Provisioning Profiles 描述文件
    • 复制描述文件到 Jenkins 对应的 MobileDevice 的目录下
 /Users/Shared/Jenkins/Library/MobileDevice/Provisoning Profiles

确保 Jenkins 环境下的login.keychain 上传并更新


错误二

No profile for team matching 'xxx' found

Check dependencies
Code Signing Error: No profile for team 'X5656X29T3' matching 'PatientClientDev' found:  Xcode couldn't find any provisioning profiles matching 'X5656X29T3/PatientClientDev'. Install the profile (by dragging and dropping it onto Xcode's dock item) or select a different one in the General tab of the target editor.
Code Signing Error: Code signing is required for product type 'Application' in SDK 'iOS 11.4'

** ARCHIVE FAILED **

出现原因:

  • 描述文件没有上传到Jenkins中
  • 描述文件没有复制
  • 打包中的 shell 脚本配置是否正确

解决方案:

  • 上传最新的描述文件
  • 复制描述文件到 Jenkins 的 MobileDevice 对应的目录中

错误三

codesign failed with exit code 1

archive 过程中签名失败

codesign 的过程中需要对应的权限

解决方案:
查看 Jenkins 的login.keychain 中的证书 是否 给 codesign 相应的权限,没有的话请添加 codesign 如下图


添加 codesign

备注

打包环境:

Mac os 10.13.6
Xcode 9.4.1
jenkins 2.150.3

目前,自己的Xcode 是10.1,服务器的Xcode 暂时没有升级。


macOS Sierra中 login.keychain-db 是旧版本的 login.keychain

系统的 keychain 路径 :

/Users/用户名/Library/Keychains/login.keychain

/Users/用户名/Library/Keychains/login.keychain-db

Jenkins 的keychain 路径:

/Users/Shared/Jenkins/Library/Keychains/login.keychain

/Users/Shared/Jenkins/Library/Keychains/login.keychain-db

下面是部分打包的shell脚本,可以一起研究讨论下。谢谢。

# Project Configuration
PROJECT_DIR=${WORKSPACE}

CONFIGURATION="Debug"
PROJECT_SCHEME="xxxxxxx"
APP_DISPLAY_NAME="xxx开发"
PROVISIONING_PROFILE_ID="edd8af66-xxxxxxx-9eb7094ae03c"
BUNDLE_IDENTIFIER="com.xxxx.xx"
RELEASE_METHOD="development"
TEAM_ID="XxxxxxxT3"
PROVISIONING_PROFILE_NAME="Doxxxxxxxev"

PROJECT_INFO_PATH="${PROJECT_DIR}/xxxxxx/Info.plist"
PROJECT_NAME="xxxxxxx"
DEVELOPPER_NAME="iPhone Developer: Yxxxxxxx (4SJxxxxxxx75)"
UPLOAD_URL="https://dn-xxxxx.qbox.me"
RELEASE_SUFFIX="dev"
RELEASE_NAME="xxxxx"

# Release Configuration
BUILD_DIR="${PROJECT_DIR}/build"

RELEASE_DATE=$(date "+%Y%m%d-%H%M%S")

RELEASE_VERSION=$(defaults read "${PROJECT_INFO_PATH}" CFBundleShortVersionString)
BUILD_VERSION_TEMP=$(defaults read "${PROJECT_INFO_PATH}" CFBundleVersion)

BUILD_VERSION=${BUILD_NUMBER}

# Update build version
defaults write "${PROJECT_INFO_PATH}" CFBundleVersion "${BUILD_VERSION}"

APPLICATION_NAME="${RELEASE_NAME}-${RELEASE_SUFFIX}-${BUILD_VERSION}-${RELEASE_DATE}"

IPA_DIR="${BUILD_DIR}/src/${RELEASE_VERSION}"
RELEASE_PATH="${BUILD_DIR}/www/${RELEASE_VERSION}"

# Clean & Build
echo "Cleaning"
/bin/rm -rf "${BUILD_DIR}/"

echo "Building"
cd "${PROJECT_DIR}" && mkdir -p "${BUILD_DIR}"

echo '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>compileBitcode</key>
    <false/>
<key>method</key>
<string>'${RELEASE_METHOD}'</string>
<key>teamID</key>
<string>'${TEAM_ID}'</string>
    <key>provisioningProfiles</key>
    <dict>
        <key>'${BUNDLE_IDENTIFIER}'</key>
        <string>'${PROVISIONING_PROFILE_NAME}'</string>
    </dict>
</dict>
</plist>' > ${BUILD_DIR}/exportOptions.plist

# Sign & Pack
/usr/bin/xcodebuild -scheme "${PROJECT_SCHEME}" -workspace "${PROJECT_NAME}.xcworkspace" -configuration "${CONFIGURATION}" clean archive -archivePath "${IPA_DIR}/${APPLICATION_NAME}" CODE_SIGN_IDENTITY="${DEVELOPPER_NAME}" PROVISIONING_PROFILE="${PROVISIONING_PROFILE_ID}"

/usr/bin/xcodebuild -exportArchive -archivePath "${IPA_DIR}/${APPLICATION_NAME}.xcarchive" -exportPath "${IPA_DIR}" -exportOptionsPlist "${BUILD_DIR}/exportOptions.plist" -allowProvisioningUpdates

# Release
mkdir -p "${RELEASE_PATH}"
echo "Release Path ${RELEASE_PATH}"

mv "${IPA_DIR}/${PROJECT_SCHEME}.ipa" "${RELEASE_PATH}/${APPLICATION_NAME}.ipa"
cd "${IPA_DIR}" && zip -r "${APPLICATION_NAME}.zip" "${APPLICATION_NAME}.xcarchive"


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容