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點選選擇我們在步驟5的Keychains 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入口
誤區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. 參考博文