1. 程式人生 > >Jenkins + GitLab + CocoaPod 的自動打包平臺配置(從build到export success)

Jenkins + GitLab + CocoaPod 的自動打包平臺配置(從build到export success)

目錄

1. 安裝JAVA環境

2. 安裝Jenkins

3. 管理外掛

4. 專案新建和設定

5. Keychains and Provisioning Profiles Management配置(重點難點)

6. 報錯問題彙總

7. 參考博文

1、安裝JAVA環境

      Jenkins 是一個用Java編寫的持續整合工具,依賴於Java,所以在安裝Jenkins前,需要先安裝Java環境。

     首先,檢查電腦是否已經安裝有環境。

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

     如果已經安裝,則會列印java 版本。如圖1-1。


                                                                     圖1-1. 電腦已經安裝JAVA JDK環境

     否則,會說沒有安裝,如圖1-2。


                                                                      圖1-2.  沒有安裝JAVA環境

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


                                                                               圖1-3. 下載JAVA JDK 

    安裝成功後測試是否安裝,如圖1-1所示。

2、安裝Jenkins

(1) 使用Homebrew的命令列進行安裝

      在終端輸入命令:brew install jenkins

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

     【Homebrew 安裝方法】:前往Homebrew官網,直接拷貝官網頁面上的命令,在終端執行即可。 

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

     在終端輸入命令:jenkins

(3) 瀏覽器輸入http://localhost:8080並進行訪問。瀏覽器會跳轉到圖2-1介面。


圖2-1 Jenkins初始介面

(4) 在檔案系統跳轉到網頁頁面所說的地址(/Users/ageren/.jenkins/secrets/initialAdminPassword),開啟檔案,拷貝文字內容,複製到網頁的"管理員密碼處",點選繼續。

(5) 步驟(4)完成後頁面跳轉到新手入門介面,如圖2-2。點選"Install suggest plugins"(安裝推薦到外掛)。等待其安裝完畢,安裝過程如圖2-3,安裝結束後介面如圖2-4。


圖2-2 新手入門介面


圖2-3. 新手入門外掛安裝過程


圖2-4. 新手入門外掛安裝完成

(6)  點選“開始使用kenkins”,進入管理員賬戶設定頁面。填寫相關資訊,然後點選“儲存並完成”,頁面進入圖2-5。

 PS:這個是管理員使用者,使用者名稱和密碼一定要記住,否則忘了的話找回比較麻煩。


圖2-5. 新手入門建立管理員使用者


3、管理外掛

  Jenkins安裝完成,並且基本設定做好後。接下來我們就先把必要的外掛安裝上。

  我們要安裝的外掛有以下:

(1)Xcode integration
(2)GIT plugin
(3)GitLab Plugin
(4)Gitlab Hook Plugin
(5)Keychains and Provisioning Profiles Management

1.  首頁的左側,點選“系統管理”,如圖3-1。


圖3-1. 系統管理入口

2. 在系統管理介面找到“外掛管理”,點選,如圖3-2所示。


圖3-2. 管理外掛入口

3. 在管理外掛介面,切換到“可選外掛”選項卡,在右上角的過濾搜尋裡面輸入我們要安裝的外掛名稱,回車。找到我們需要的外掛,打勾,點選直接安裝。(有過濾就是好用,否則一個一個找很浪費時間,呵呵噠~~~)如圖3-3所示。


圖3-3. 安裝外掛

4、專案新建和設定

4.1. 新建專案 

(1)點選首頁的“建立一個新任務”。如圖4-1。

(2)選擇“構建一個自由風格的軟體專案”。PS:這裡的任務名稱還是寫我們的APP專案名比較好。後面的配置會用到這個任務名稱。如圖4-2.


圖4-1 新建任務入口


圖4-2 新建任務

4.2. 配置專案

4.2.1 General 引數。

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

(2)設定包(即構建)的保留天數,以及最大保留個數。這個主要按照需要做設定,如圖4-3所示。

PS:“丟棄舊的構建”不勾選也可以。


圖4-3 設定General 引數

4.2.2 原始碼管理

(1)切換到原始碼管理選項。

(2)輸入我們要打包的專案的Git地址。最好SSH的。

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

(4)如圖4-4。點選Add按鈕,Add按鈕會彈出一個按鈕Jenkins,點選它,進行新增SSH key(見4.2.1.1)。


圖4-4 設定原始碼管理

(5)到了這一步,我們應該已經可以正常拉取程式碼了。點選任務頁面的“立即構建”,如圖4-5。點選之後,build History 會顯示build的進度條。如果程式碼能正常拉取,則該構建是藍色的,如圖4-6。


圖4-5 立即構建專案

圖4-6 立即構建後的任務狀態

4.2.1.1 新增SSH Key。

1)選擇新增SSH key,如圖4-7。頁面會彈出新的表單,如圖4-8。

2) Username 可以隨便寫,反正自己記得住就行。Private Key選擇 Enter directly。如圖4-8。


圖4-7 選擇SSH Username with private key

    圖4-8 SSH填寫表單  

3) SSH Key的新增跟GitLab上的新增SSH Key步驟類似(前往資料夾:~/.ssh,然後找到鑰匙檔案拷貝里面的內容,貼上到網頁上)。如圖4-9.


圖4-9. 找到SSH Private Key 檔案

PS1:  要注意的是,這裡的key是指私鑰,不是公鑰。所以我們要拷貝的是~/.ssh/id_rsa,而不是“.pub”結尾的檔案。

PS2:可能有讀者注意到我的~/.ssh檔案下有多個id_rsa檔案。這是因為一臺電腦配置了2個SSH Key,我選擇的那個Key是我的要打包的專案的git下設定的SSH key(用git config設定的),詳情可以看我的另外一片部落格《一臺電腦繫結兩個git帳號(GitHub和GitLab)》。 跟我一樣情況的讀者,請選擇你要打包的那個專案下你繫結的SSH Key。

PS3: 要拷貝的id_rsa檔案,要把所有的都拷貝上,不要落下-----BEGIN RSA PRIVATE KEY----- 和-----END RSA PRIVATE KEY-----。要不然會拉取不到程式碼。

4)新增完成後點選左下角的Add按鈕,如圖4-10。


圖4-10 Add SSH Key

5)最後,新增完成回到主介面,發現介面並沒有什麼變化,如圖4-11。其實不然,點選圖中的下拉框,會看到我們剛剛在新增SSH Key的時候填寫的那個Username。選擇它。如圖4-12。


圖4-11 新增SSH Key 後的介面


圖4-12 選擇我們新增的SSH Key

4.2.3 構建觸發器

(1)切換到“構建觸發器”選項。

(2)這裡只設置最常用的Poll SCM。切換到“構建觸發器”,勾選“Poll SCM”。如圖4-13。

       H/20 * * * *表示:每20分支構建一次。

圖4-13 設定Poll SCM

4.2.4 構建

     其中步驟4.2.4.2  Xcode是充分非必要,為什麼這麼說呢?

  (1)因為在4.2.5裡有一個坑。而這個坑的解決就是,要先設定構建裡Xcode的4.2.4.2.2 Code signing & OS X keychain options才能解決。

  (2)在構建步驟,因為Xcode 9的關係,需要用shell指令碼來編譯打包。shell和Xcode外掛兩者是互斥的。如果是Xcode 9及以上,到後面需要把這個Xcode外掛配置全部刪除掉,使用“Execute shell”.

     如果Xcode版本是在9以下的,不想用shell指令碼構建打包的,按照下面的步驟一步一個腳印配置即可。如果是Xcode 9及以上的,其他步驟不用設定,只設置4.2.4.2.2 Code signing & OS X keychain options這個步驟即可。

4.2.4.1 Excute shell (重點難點,其位置要放到Xcode的前面)

(1)切換到“構建”選項

(2)勾選“增加構建步驟”裡面的“Excute shell”。如圖4-14。勾選“Excute shell”後,頁面也會新增內容。


圖4-14 新增Excute shell

(3)新增命令到Comman上,如圖4-15,新增到命令內容有兩種情況。

圖4-15 新增Excute shell

  情況1. Xcode 9 以下的

#!/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

 情況2. Xcode 9 以及以上的

 PS:添加了xcodebuild -archivePath、xcodebuild -exportArchive -archivePath命令,如果“構建”選項裡選擇有Xcode的話,  需要把Xcode刪除掉

#!/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

#構建  
xcodebuild -archivePath "/Users/ageren/.jenkins/workspace/Vol_Chat/build/Debug-iphoneos/TestChat.xcarchive" -workspace 
TestChat.xcworkspace -sdk iphoneos -scheme "TestChat" -configuration "Release.Adhoc" archive
xcodebuild -exportArchive -archivePath "/Users/ageren/.jenkins/workspace/Vol_Chat/build/Debug-iphoneos/TestChat.xcarchive" -exportPath "/Users/ageren/.jenkins/workspace/Vol_Chat/build/TestChat_debug" -exportOptionsPlist '/Users/ageren/.jenkins/workspace/Vol_Chat/build/ExportOptions.plist' -allowProvisioningUpdates

【注意】:xcodebuild -archivePath、xcodebuild -exportArchive -archivePath命令格式為:

xcodebuild -archivePath "/Users/你的電腦使用者名稱/.jenkins/workspace/你新建的Jenkins的專案名(如果你新建的時候跟你的應用名字不一樣,那就不是你的應用名)/build/Debug-iphoneos/你的應用名.xcarchive" -project 你的應用名.xcodeproj -sdk iphoneos -scheme "你的應用的scheme名字” -configuration "Debug" archive

xcodebuild -exportArchive -archivePath "/Users/你的電腦使用者名稱/.jenkins/workspace/你新建的Jenkins的專案名(如果你新建的時候跟你的應用名字不一樣,那就不是你的應用名)/build/Debug-iphoneos/BasketballLeague.xcarchive" -exportPath "/Users/你的電腦使用者名稱/.jenkins/workspace/你新建的Jenkins的專案名(如果你新建的時候跟你的應用名字不一樣,那就不是你的應用名)/build/你的應用名_debug" -exportOptionsPlist '/Users/你的電腦使用者名稱/.jenkins/workspace/你新建的Jenkins的專案名(如果你新建的時候跟你的應用名字不一樣,那就不是你的應用名)/build/ExportOptions.plist' -allowProvisioningUpdates

【舉個例子】:

xcodebuild -archivePath "/Users/ageren/.jenkins/workspace/Vol_Chat/build/Debug-iphoneos/TestChat.xcarchive" -workspace TestChat.xcworkspace -sdk iphoneos -scheme "TestChat" -configuration "Release.Adhoc" archive

xcodebuild -exportArchive -archivePath "/Users/ageren/.jenkins/workspace/Vol_Chat/build/Debug-iphoneos/TestChat.xcarchive" -exportPath "/Users/ageren/.jenkins/workspace/Vol_Chat/build/TestChat_debug" -exportOptionsPlist '/Users/ageren/.jenkins/workspace/Vol_Chat/build/ExportOptions.plist' -allowProvisioningUpdates

4.2.4.2  Xcode(充分非必要)

(1)切換到“構建”選項

(2)勾選“增加構建步驟”裡面的Xcode。如圖4-16。勾選Xcode後,頁面也會新增內容。


圖4-16 構建新增Xcode

4.2.4.2.1 General build settings的設定

 (1)General build settings 點選右下方“settings...”按鈕

(2)勾選“Pack application, build and sign .ipa?”,頁面會新增加的內容。填寫內容如圖4-17。


圖4-17 填寫Xcode的General build settings

4.2.4.2.2 Code signing & OS X keychain options(解決坑的這個步驟!!!!)

(1)點選右下方“code signing settings...”按鈕

(2)勾選“Unlock Keychain?”,頁面會增加新的內容。填寫內容如圖4-18。

(3)然後點選頁面左下角的“儲存/應用”按鈕。

 PS:其中,Development Team ID 需要的是釋出證書的TeamID,去鑰匙串找到該證書,拷貝這個證書的括號裡面的ID,如圖4-19。

圖4-18 填寫Xcode的 Code signing & OS X keychain options


圖4-19 獲取證書的Team ID 

4.2.4.2.3 Advanced Xcode build options

(1)點選右下方“advanced build settings...”按鈕,頁面會增加信內容。填寫內容如圖4-20。


圖4-20 填寫Xcode 的Advanced Xcode build options

4.2.5 構建環境-Keychains and Code Signing Identities(重點難點)

配置Keychains and Code Signing Identities的兩個前提:

前提1: 按照步驟5配置好Keychains and Provisioning Profiles Management配置。因為這裡的資料是從Keychains and Provisioning Profiles Managemen傳過來的。它不可以手動輸入的,而是通過點選輸入域,等它彈出一個列表,我們來選擇item。

前提2: 按照步驟4.2.4.2.2 Code signing & OS X keychain options進行了設定,並且最後點選了“儲存/應用”。

上面兩個前提缺少一個,下面的配置步驟都走不了。  

      構建環境裡,我們只設置跟證書相關的東西:Keychains and Code Signing Identities。Mobile Provisioning Profiles也是跟證書相關的,但是這個可以不配置。

(1) 切換到“構建環境”選項。

(2)勾選Keychains and Code Signing Identities,頁面會新增新的內容。

(3)在介面的Keychain點選選擇我們在步驟5Keychains and Provisioning Profiles Management上傳的Keychain的名字。

(4)點選Code Signing Identity,按照打包需求,選擇開發者/釋出證書的code siging identity,如圖4-21


圖4-21 配置構建環境的Keychains and Code Signing Identities

4.2.6 調整配置

4.2.4 構建中我們提到,Xcode的設定是充分非必要的。到了這裡,我們在此檢查下,主要檢查2個方面。

(1)我們的Execute Shell 是否設定了適配Xcode 9的xcodebuild -archivePath、xcodebuild -exportArchive -archivePath命令。如果設定了這些命令,並且設定了Xcode。那麼在需要把整個Xcode設定刪除掉。

(2)構建中Execute Shell 的位置是否在Xcode的前面。如果不是需要進行調整(長按拖動)。

5. Keychains and Provisioning Profiles Management配置(重點難點)

這個地方很重要,也是容易入坑的地方。很多跟證書有關的報錯都是因為這裡沒有配置正確。

首頁的左側,點選“系統管理”。 在系統管理裡面找到 Keychains and Provisioning Profiles Management,如圖5-1。點選進入到圖5-2所示介面。


圖5-1 Keychains and Provisioning Profiles Management入口


圖5-2 Keychains and Provisioning Profiles Management介面

誤區1:可能有小夥伴有配置過別的東西,像極光推送之類的。看到有Provisioning Profile  File,就以為另外一個要上傳的是cer證書檔案/p12檔案。

But1:但是!但是!但是!(注意,重要的事情說3遍!!)Keychain是指login.keychain檔案,而Provisioning Profile  File才是我們平常用的那個Provisioning Profile  File。

誤區2:從圖中可以看出,這裡需要Keychain or(或者)Provisioning Profile  File。

But2:但是!但是!但是!(注意,重要的事情說3遍!!)這裡是要兩個都要上傳,而且分兩步走。先上傳login.keychain,再上傳Provisioning Profile  File

5.1 上傳 login.keychain檔案

    login.keychain檔案位於【/使用者/電腦使用者名稱/Library/keychains/login.keychain】。

 (1)點選介面的“選擇檔案”,找到login.keychain

 (2)點選“upload”。

 (3)配置如圖5-3。


圖5-3  上傳login.keychain後到配置

PS1:login.keychain檔案上傳後,介面會新增新的東西(Filename、Password等)。有的電腦會自動新增Code Signing Identity的資料,有的電腦不會自動新增;有的添加了,但是隻添加了一個。可以通過點選介面的“Add Code Signing Identity”來新增上。

PS2:證書名字我們可以到鑰匙串,找到對應的證書,複製證書的名字(整個名字都要複製上),貼上到介面的Code Signing上。如圖5-4。


圖5-4 拷貝證書的名字

5.2 上傳Provisioning Profile  File檔案

5.2.1 操作前的困惑

困惑1要上傳的Provisioning Profile  File到底是開發者Provisioning Profile,還是ADHoc Provisioning Profile?

這個要看我們要打包的ipa上傳的應用託管平臺而定。如果託管平臺既支援開發者打包又指出ADHoc,那我們需要上傳兩個Provisioning Profile。否則我們可以只上傳託管平臺支援的那個Provisioning Profile。如fir,只支援成ADHoc,那麼我們就只上傳ADHoc就可以了。 不過保險起見,我把2個都上傳了。

困惑2: 介面沒有Add Provisioning Profile的相關按鈕。既然可以上傳2個檔案。如何上傳多個Provisioning Profile  File?

要有多個Provisioning Profile的話,我們需要走多次上傳流程。(同樣的上傳流程。先上傳第一個Provisioning Profile,然後再上傳第二個Provisioning Profile)。

5.2.2 操作起來

(1)點選介面的“選擇檔案”,找到我們的ADHoc Provisioning Profile  File 

(2)點選“upload”。上傳完成後,介面也會新增新的內容(Filename、UUID)。如圖5-5。

(3)上傳完Provisioning Profile,我們還需要填寫Provisioning Profiles Directory Path。這個地址是固定死的,比較簡單,統一填寫【/Users/Shared/Jenkins/Library/MobileDevice】即可。

5.3 點選儲存

點選左下方“儲存”按鈕。至此,Keychains and Provisioning Profiles Management配置完成。從一開始到這裡,整個Jenkins也配置完成了!(撒花~~~~~!!!)

6 報錯問題彙總

6.1 Jenkins 配置和一般的問題

1.【問題】:在【4.2.5 構建環境-Keychains and Code Signing Identities】一節裡。我按照【5 Keychains and Provisioning Profiles Management配置】配置好了系統的Keychains and Provisioning Profiles Management外掛。然後就開始配置Keychains and Code Signing Identities。網上很多教程都是一選擇Keychain,介面會自動填寫Variables,點選Code Signing Identity的時候,會有列表出來。我的介面的資料幾乎都是空白的(如圖6-1)。我懷疑五我沒有配置對,又反覆配置了好幾次。結果沒有任何效果。


圖6-1 沒有資料出來的Keychains and Code Signing Identities

     【解決方法】:只要我們做過4.2.4.2.2 Code signing & OS X keychain options步驟,並且點選了頁面左下方的“儲存/應用”按鈕。問題就能得到解決。

  2.【問題】:瀏覽器輸入http://localhost:8080並進行訪問,瀏覽器頁面無法訪問:無法訪問loacalhost伺服器。

    【解決方法】:沒有開啟Apache的話,瀏覽器就不能訪問本地。Apache是Mac自己預設安裝有的。一般來說不用做多餘的安             裝。

            因此只需啟動Apache:
            在終端輸入命令:sudo apachectl start
            等到Apache啟動完成,再重新整理一次。瀏覽器就會跳轉到Jenkins到介面。

 3.【問題】:啟動了Apache,瀏覽器地址輸入http://localhost:8080,依然無法訪問。

【解決方法】:因為Jenkins沒有啟動。命令列輸入命令啟動。

                    在終端輸入命令:Jenkins

4. 在外掛管理裡面,解除安裝了外掛的話,要重啟Jenkins才算真正的解除安裝。

5.【問題】:如何重啟Jenkins

  【解決方法】:瀏覽器地址輸入以下地址,回車。

                                    http://localhost:8080/exit //退出Jenkins
                                    http://localhost:8080/restart //重啟
                                   http://localhost:8080/reload //重新載入


6.【問題】:我忘記了使用者名稱,但是記得密碼

   【解決方法】:/Users/ageren/.jenkins/users下面有資料夾,名字就是使用者名稱

6.2 Jenkins 日誌報錯的問題

1.【問題】:

archive error

 Check dependencies The file “Pods-Swarm_swift.release.xcconfig” couldn’t be opened because there is no such file. (/Users/HW/.jenkins/workspace/SWARM/Pods/Target Support Files/Pods-Swarm_swift/Pods-Swarm_swift.release.xcconfig) ------ diff: /../Podfile.lock: No such file or directory diff: /Manifest.lock: No such file or directory error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. ** ARCHIVE FAILED **

【解決方法】:“構建”新增“Excute shell”,並放到最前面。 將pod 相關的命令複製到shell 區域。

【shell 命令】:

#!/bin/bash -l
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
#pod 更新 

pod install --verbose --no-repo-update

2.【問題】:requires a provisioning profile with the Push Notifications and Associated Domains features問題

  【報錯如下】:

     Error Domain=IDEProvisioningErrorDomain Code=9 ""TestChat.app" requires a provisioning profile with the Push           Notifications and Associated Domains features." UserInfo={NSLocalizedDescription="TestChat.app" requires a      provisioning profile with the Push Notifications and Associated Domains features., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}

   【原因分析】:  新版的Xcode 9不會允許你訪問鑰匙串裡的內容,除非設定allowProvisioningUpdates。

   【解決方法】:使用指令碼代替外掛(外掛本質是幫助我們生成打包指令碼程式碼)。

    【做法】:

           (1)在專案的配置裡,切換到“構建”選項。如果已經添加了Xcode的設定,需要把Xcode刪除掉。沒有新增“Excute                          Shell”的話則新增上“Excute Shell”。在“Excute Shell”的command裡新增xcodebuild -archivePath,

                 xcodebuild -exportArchive -archivePath的指令碼命令,輸出ipa包。

           (2)具體命令為(命令的順序不能出錯):

xcodebuild -archivePath "/Users/你的電腦使用者名稱/.jenkins/workspace/你新建的Jenkins的專案名(如果你新建的時候跟你的應用名字不一樣,那就不是你的應用名)/build/Debug-iphoneos/你的應用名.xcarchive" -project 你的應用名.xcodeproj -sdk iphoneos -scheme "你的應用的scheme名字” -configuration "Debug" archive

xcodebuild -exportArchive -archivePath "/Users/你的電腦使用者名稱/.jenkins/workspace/你新建的Jenkins的專案名(如果你新建的時候跟你的應用名字不一樣,那就不是你的應用名)/build/Debug-iphoneos/BasketballLeague.xcarchive" -exportPath "/Users/你的電腦使用者名稱/.jenkins/workspace/你新建的Jenkins的專案名(如果你新建的時候跟你的應用名字不一樣,那就不是你的應用名)/build/你的應用名_debug" -exportOptionsPlist '/Users/你的電腦使用者名稱/.jenkins/workspace/你新建的Jenkins的專案名(如果你新建的時候跟你的應用名字不一樣,那就不是你的應用名)/build/ExportOptions.plist' -allowProvisioningUpdates

     【舉個例子】:

xcodebuild -archivePath "/Users/ageren/.jenkins/workspace/Vol_Chat/build/Debug-iphoneos/TestChat.xcarchive" -workspace TestChat.xcworkspace -sdk iphoneos -scheme "TestChat" -configuration "Release.Adhoc" archive

xcodebuild -exportArchive -archivePath "/Users/ageren/.jenkins/workspace/Vol_Chat/build/Debug-iphoneos/TestChat.xcarchive" -exportPath "/Users/ageren/.jenkins/workspace/Vol_Chat/build/TestChat_debug" -exportOptionsPlist '/Users/ageren/.jenkins/workspace/Vol_Chat/build/ExportOptions.plist' -allowProvisioningUpdates

3.【問題】: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"}}

原因分析】:這裡還有一個問題就是命令裡面提到的ExportOptions.plis檔案。這個檔案目前為止,在Jenkins目錄下是沒有的。所以需要我們自己去新增一個。怎麼新增?

【解決方法】:我們在本地電腦的Xcode上,archive改App專案的development(開發者)的archive 包。從這個包的資料夾裡面就有一個ExportOptions.plist如圖,直接拷過來,貼上到命令所說的資料夾('/Users/ageren/.jenkins/workspace/Vol_Chat/build/ExportOptions.plist')裡去,如圖6-2。


圖6-2 拷貝archive裡面的ExportOptions.plist檔案

4. 【問題】:Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value., NSFilePath=/var/folders/rn/1xn_nml56wn1zg61j9zdw7yw0000gn/T/ipatool-json-filepath-iLJOAn}。

【解決方法】:archive 完成,要export包的時候,在彈出的選擇機型裡面,App Thinning要選擇None,而且其他地方不要打勾,如圖6-3。我當時選擇了“All compatible device variant”, 然後EXPORT FAILED,


圖6-3. archive的時候App Thinning要選擇None

5.【問題】:/var/folders/rn/1xn_nml56wn1zg61j9zdw7yw0000gn/T/jenkins4182776149634329822.sh: line 10: shell_session_update: command not foundBuild step 'Execute shell' marked build as failureFinished: FAILURE

 【解決方法】:有2種。

(1)設定Jenkins的環境變數。

       方法1:在系統設定全局裡面新增。“系統管理”-“系統設定”-“全域性屬性”-“環境變數”,如圖6-4。

         1)在命令列下執行 echo $PATH,記錄下輸出的結果
         2)在 jenkins 中系統管理-系統設定中,找到 環境變數(Environment variables)
         3)在 key 中填寫 $PATH,在 value 中填寫第一步中輸出的結果

         4)儲存即可


圖6-4 環境變數的位置

       方法2:在shell設定裡面新增。

(2)更新RVM。【這個方法解決了我的問題】。命令後先後輸入以下命令:

curl -sSL https://get.rvm.io | bash

source ~/.bashrc  

source ~/.bash_profile 

7. 參考博文