iOS: Jenkins + xcodebuild打包ipa + 上傳蒲公英

前言:我使用Jenkins做持續(xù)集成,關于jenkins的安裝我這里就不說了。直說一下和iOS打包相關的東西

插件

Keychains and Provisioning Profiles Management

截屏2021-01-08 下午3.25.36.png

如果沒有安裝,在可選插件里搜索安裝,重啟即可。

配置插件

image.png

系統(tǒng)配置=》拉到最下邊選這個

  • 選取 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,拖入終端會顯示整個路徑,復制過來即可。

到此為止整個插件配置完成。


創(chuàng)建一個工程

image.png

選第一個,輸入工程名稱,確定。

丟棄舊的構建(可選)

image.png

源碼管理

image.png

我使用Git,credentials是登錄的賬號密碼,如果沒有添加一個即可,如下圖。


image.png

構建環(huán)境

image.png

選擇剛才插件填寫的內(nèi)容。

構建(核心)

  • 點擊增加構建步驟
  • 選擇 執(zhí)行shell
    image.png
archive 的 -configuration: 默認可以release或者debug,或者你自己的配置。
image.png
-exportArchive有一個文件adhoc_ExportOptions.plist

image.png

如果你不想自己創(chuàng)建,也可以使用xcode導出ipa后,從導出的文件夾里獲取。名字為ExportOptions.plist
method:有四種渠道。我將他們做了區(qū)分,分成四個不同的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"
#創(chuàng)建蒲公英上傳結果日志文件夾
mkdir -p ${PGYERLOG_PATH}
#創(chuàng)建蒲公英上傳結果日志文
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"

如果你有改進或者發(fā)現(xiàn)錯誤,請告訴我,謝謝 :) !


增加

錯誤:pod時候會出現(xiàn) command not found

當你jenkins服務在非OS X系統(tǒng)運行時,使用Mac節(jié)點的配置稍微不一樣。

  • 系統(tǒng)管理-系統(tǒng)配置-全局屬性


    image.png

值:在終端中輸入echo $PATH將輸出內(nèi)容復制填寫。

  • 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
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容