iOS Jenkins 自動打包上傳至蒲公英 持續(xù)集成

參考文章

1. 安裝JAVA環(huán)境

Jenkins 是一個用Java編寫的持續(xù)集成工具,依賴于Java,所以在安裝Jenkins前,需要先安裝Java環(huán)境。

首先,檢查電腦是否已經(jīng)安裝有環(huán)境。

在終端輸入命令:java -version。

如果已經(jīng)安裝,則會打印java版本。

image

否則,會說沒有安裝

如果沒有安裝Java環(huán)境的話,需要去官網(wǎng)下載JAVA JDK(注意是JDK,不是JRE)。在下載前注意勾選上方的 Accept License Agreement。否則,無法下載。

image

2. 安裝Jenkins

1. 使用Homebrew的命令行進行安裝
  1. 在終端輸入命令:brew install jenkins

  2. 如果沒有安裝Homebrew,則需要先安裝。

  3. 【Homebrew 安裝方法】:前往Homebrew官網(wǎng),直接拷貝官網(wǎng)頁面上的命令,在終端運行即可。

2. 啟動jenkins,等待其安裝完畢。

在終端輸入命令:jenkins

3. 瀏覽器輸入http://localhost:8080并進行訪問。
4. 安裝插件

Xcode integration
GIT plugin
GitLab Plugin
Gitlab Hook Plugin
Keychains and Provisioning Profiles Management

  1. 首頁的左側(cè),點擊系統(tǒng)管理
  2. 在系統(tǒng)管理界面找到插件管理
  3. 在管理插件界面,切換到可選插件選項卡,在右上角的過濾搜索里面輸入我們要安裝的插件名稱,回車。找到我們需要的插件,打勾,點擊直接安裝。

3. 項目新建和設(shè)置

  1. 點擊首頁的創(chuàng)建一個新任務(wù)
  2. 選擇構(gòu)建一個自由風格的軟件項目。PS:這里的任務(wù)名稱還是寫我們的APP項目名比較好。后面的配置會用到這個任務(wù)名稱。
image

4. 配置項目

1. General 參數(shù)。

切換到General選項。勾選“丟棄舊的構(gòu)建”。

設(shè)置包(即構(gòu)建)的保留天數(shù),以及最大保留個數(shù)。這個主要按照需要做設(shè)置

“丟棄舊的構(gòu)建”不勾選也可以。

image
2. 源碼管理

切換到源碼管理選項。

輸入我們要打包的項目的Git地址。最好SSH的。

填寫我們要打包的分支(branch)。

點擊Add按鈕,Add按鈕會彈出一個按鈕Jenkins,點擊它,進行添加SSH key

image
3. 構(gòu)建觸發(fā)器

切換到“構(gòu)建觸發(fā)器”選項。

這里只設(shè)置最常用的Poll SCM。切換到“構(gòu)建觸發(fā)器”,勾選“Poll SCM”。

   H/20 * * * *表示:每20分支構(gòu)建一次。
image
4. 構(gòu)建環(huán)境
image
image
5. Excute shell

切換到“構(gòu)建”選項

勾選“增加構(gòu)建步驟”里面的Excute shell。

添加命令到Comman上。

image

打包

#!/bin/bash -l  
export LANG=en_US.UTF-8  
export LANGUAGE=en_US.UTF-8  
export LC_ALL=en_US.UTF-8  
  
pod install --verbose --no-repo-update 

# 打包環(huán)境
#config="Release"
config="Debug"
  
#構(gòu)建  
#!/bin/bash -l  
export LANG=en_US.UTF-8  
export LANGUAGE=en_US.UTF-8  
export LC_ALL=en_US.UTF-8  
  
pod install --verbose --no-repo-update 

# 打包環(huán)境 (核心)
#config="Release"
config="Debug"
  
#構(gòu)建  
xcodebuild -archivePath "/Users/(用戶名)/.jenkins/workspace/iOS-lighthouse-ci_beta/build/Debug-iphoneos/(項目名稱).xcarchive" -workspace (項目名稱).xcworkspace -sdk iphoneos -scheme "(項目名稱)" -configuration ${config} archive

xcodebuild -exportArchive -archivePath "/Users/(用戶名)/.jenkins/workspace/iOS-lighthouse-ci_beta/build/Debug-iphoneos/(項目名稱).xcarchive" -configuration ${config} -exportPath "/Users/(用戶名)/.jenkins/workspace/iOS-lighthouse-ci_beta/build/(項目名稱)_debug" -exportOptionsPlist '/Users/(用戶名)/.jenkins/workspace/iOS-lighthouse-ci_beta/build/ExportOptions.plist' -allowProvisioningUpdates

上傳至蒲公英平臺

# 通過api上傳到蒲公英當中
echo "===上傳至蒲公英平臺==="

# 蒲公英userkey
pgyerUserKey="userkey"
# 蒲公英apiKey
pgyerApiKey="apiKey"

#指定ipa輸出地址
project_path=$(pwd)
#指定項目名
project_name="項目名"
#描述信息
des=`cat ci-beta-description.txt`
echo "des:+$des"
packageTime="打包時間:【`date \"+%Y-%m-%d %H:%M:%S\"`】---"
echo $packageTime

ipa_path="${project_path}/build/(項目名稱)_debug"

if [ -e ${ipa_path}/${project_name}.ipa ]; then

    RESULT=$(curl -F "_api_key=${pgyerApiKey}" \
    -F "file=@${ipa_path}/${project_name}.ipa" \
    -F "buildInstallType=2" \
    -F "buildPassword=1230" \
    -F "buildUpdateDescription=${packageTime}${des}" \
    https://www.pgyer.com/apiv2/app/upload)

    # echo ${RESULT}
    if [ "${RESULT}" ]; then
        echo "===完成蒲公英平臺上傳==="
    else
        echo "===上傳蒲公英平臺失敗==="
    fi
    # open ${ipa_path}
else
    echo "===上傳蒲公英平臺失敗==="
fi
5. Keychains and Provisioning Profiles Management

login.keychain 文件路徑 /Users/(用戶名)/Library/Keychains

image
image

問題

error: Couldn't load -exportOptionsPlist: The file “ExportOptions.plist” couldn’t be opened because there is no such file.
Error Domain=NSCocoaErrorDomain Code=260 "The file “ExportOptions.plist” couldn’t be opened because there is no such file." UserInfo={NSFilePath=/Users/ageren/.jenkins/workspace/Vol_Chat/build/ExportOptions.plist, NSUnderlyingError=0x7fb479178710 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

解決

/Users/(用戶名)/.jenkins/workspace/(項目名稱)/build/路徑新建ExportOptions.plist文件

<?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>development</string>
    <key>provisioningProfiles</key>
    <dict>
        <key>(APP bundle ID)</key>
        <string>(描述文件名稱)</string>
    </dict>
    <key>signingCertificate</key>
    <string>iPhone Developer</string>
    <key>signingStyle</key>
    <string>manual</string>
    <key>stripSwiftSymbols</key>
    <true/>
    <key>teamID</key>
    <string>(組織編號)</string>
    <key>thinning</key>
    <string>&lt;none&gt;</string>
</dict>
</plist>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容