每一次新版本要發佈,都被測試部門催成狗,測試部也耐不住了,想本身打包,研發只管提交代碼,聽到這個消息,仍是很開心的,終於不用打包了。跟同事折騰Jenkins三天,終於正常導出ipa包了!!html
由於網上教程可能是依靠Github,並且不少是在Jenkins中配置Xcode參數,至關的麻煩,咱們是用Shell 腳本,很是的easy。在這裏記錄下環境搭建的過程,但願能幫他人減小一點坑。java
Jenkins是基於Java開發的一種持續集成工具。因此呢,要使用Jenkins必須使用先安裝JDK。shell
JDK 下載地址 xcode
安裝JDK的過程略,別說你不會安裝(若有不會安裝的,自行百度)。Jenkins 下載地址瀏覽器
點擊圖中 Mac OS X,會自動下載【jenkins-1.644.pkg】 安裝過程略(雙擊jenkins-1.644.pkg後,下一步就OK了)。注意:bash
一、Jenkins 安裝成功後,會建立一個Jenkins用戶,而Jenkins的工做區間默認是在【/用戶/共享/Jenkins/Home/jobs】目錄下,能夠用Finder-->前往,進入。oracle
二、Jenkins目錄下的文件夾的讀寫權限只對Jenkins用戶開放,因此後面apple證書等必須在Jenkins用戶下安裝,項目的ipa導出也得在Jenkins用戶下操做。(或者用管理員權限修改該目錄針對用戶的權限)app
三、Jenkins的使用是每個用戶均可以使用,因此有可能致使構建版本的時候報錯,仍是老老實實在Jenkins用戶下操做吧。iphone
打開瀏覽器,輸入http://localhost:8080,若是可以正常打開Jenkins,則Jenkins安裝成功。svn
Jenkins裏有至關多的插件,使用什麼工具就安裝什麼工具的插件。
好比咱們這裏使用SVN,就安裝SVN的插件,若是你使用Git就安裝Git的插件。
由於我已經安裝了SVN,因此安裝插件的過程就用Git來演示。
由於要使用Xcode命令,因此必須保證Xcode command Line已安裝。
在原來Xcode開發所在用戶下,導出發佈證書,若是要打企業包(299刀)和公司/我的版包(99刀),則兩種證書都要導出,而後拷貝到Jenkins用戶環境下,雙擊安裝到Mac 的鑰匙串中。
注意:由於用戶訪問鑰匙串中的證書須要權限,而用jenkins構建時,不論是用Xcode插件配置仍是shell腳本,都不能輸入用戶密碼,因此必須設置證書的【訪問控制】爲容許全部應用程序訪問此項目。
一樣須要在Jenkins用戶下,安裝好打包須要的手機描述文件。
下面講解構建項目的配置,可使用本地的項目,也可使用SVN上的項目(只須要填入svn上工程地址便可),而後輸入shell 腳本就能夠開始構建了。
步驟以下:
點擊OK,在【/用戶/共享/Jenkins/Home/jobs】目錄下會生成HelloJenkins的目錄。其餘的設置項,均不用設置,只須要設置下腳本便可,腳本詳細的內容以下:
# 工程名
APP_NAME="HelloJenkins"
# 證書
CODE_SIGN_DISTRIBUTION="iPhone Distribution: XXXXXXXXXXXX"
# info.plist路徑
project_infoplist_path="./${APP_NAME}/Info.plist"
if [ ! -f "$project_infoplist_path" ]
then
echo "*************************************"
echo "*** plist文件路徑錯誤! ****"
echo "*** plist文件路徑錯誤! ****"
echo "*************************************"
exit
fi
#取版本號
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")
#取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")
DATE="$(date +%Y%m%d%H%M%S)"
IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"
# 導出路徑
IPA_PATH=~/"${IPANAME}"
echo "=================clean================="
xcodebuild -target "${APP_NAME}" -configuration 'Release' clean
echo "+++++++++++++++++build+++++++++++++++++"
xcodebuild -target "${APP_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${APP_NAME}.app" -o "${IPA_PATH}"
if [ -f "$IPA_PATH" ]
then
echo "*************************************"
echo "* iPa 導出成功 *"
echo "* iPa 導出成功 *"
echo "* iPa 導出成功 *"
echo "* iPa 導出成功 *"
echo "*************************************"
echo "安裝文件路徑:${IPA_PATH}"
#要上傳到蒲公英的ipa文件路徑
echo "${IPA_PATH}">> text.txt
else
echo "*************************************"
echo "* iPa 導出失敗 *"
echo "* iPa 導出失敗 *"
echo "* iPa 導出失敗 *"
echo "* iPa 導出失敗 *"
echo "*************************************"
echo "安裝文件路徑:${IPA_PATH}"
fi
複製代碼
注意1:【-o ~/$IPANAME】表示導出的ipa文件在當前用戶的目錄下,即【/用戶/共享/Jenkins/】下。 其中CODE_SIGN_IDENTITY="iPhone Distribution: xxxxxxxxxx"是你打包使用的證書在鑰匙串中的經常使用名稱。 導出的ipa,叫【HelloJenkins_V1.2_20160118.ipa】。
注意2:若是如上圖【配置項目第二步.png】那樣,在xcodeproj相同目錄下,新建一個sh腳本文件,用【sh xxx.sh】命令的話,見下一篇介紹。 若是你的項目中用到了cocoapods,那腳本有幾個參數須要調整一下,詳情見下一篇。
注意3(2016.02.17更新):CODE_SIGN_IDENTITY 這個屬性能夠不設置,直接設置profile就能夠了,編譯時會自動去匹配對應的CODE_SIGN_IDENTITY,須要注意的是設置profile時,設置的是其UUID值。例如【PROVISIONING_PROFILE='f035763e-e847-4db8-ac10-0004809fdc90'】
點擊保存,而後點擊左側菜單,當即構建,便可開始構建。
第一步,新建項目,與上面的同樣。
第二步,不用將工程拷貝到jobs目錄下了,直接在配置裏源碼管理那一欄設置svn地址
這裏若是想要構建svn 上某個版本的工程,只須要再路徑後面加上@版本號便可。 例如:http://192.168.1.1:8999/svn/iOS/TestDemo@150。
第三步,設置shell 腳本,與上面的同樣。
第四步,當即構建便可。
提示:構建成功後,還有一些選項能夠設置,好比自動上傳到蒲公英或者fir.im,或者郵件通知等。
還能夠設置構建觸發器,設置在某個時刻自動構建等條件。由於這些設置都挺簡單的,而咱們目前還未用到,你們自行研究一下吧。