Mac下Jenkins+SVN+Xcode構建持續導出環境

每一次新版本要發佈,都被測試部門催成狗,測試部也耐不住了,想本身打包,研發只管提交代碼,聽到這個消息,仍是很開心的,終於不用打包了。跟同事折騰Jenkins三天,終於正常導出ipa包了!!html

由於網上教程可能是依靠Github,並且不少是在Jenkins中配置Xcode參數,至關的麻煩,咱們是用Shell 腳本,很是的easy。在這裏記錄下環境搭建的過程,但願能幫他人減小一點坑。java

1 安裝Jenkins

Jenkins是基於Java開發的一種持續集成工具。因此呢,要使用Jenkins必須使用先安裝JDK。shell

JDK安裝

JDK 下載地址 xcode

jdk 1.8.png
安裝JDK的過程略,別說你不會安裝(若有不會安裝的,自行百度)。

Jenkins安裝

Jenkins 下載地址瀏覽器

Jenkins安裝文件.png
點擊圖中 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

測試Jenkins安裝成功

打開瀏覽器,輸入http://localhost:8080,若是可以正常打開Jenkins,則Jenkins安裝成功。svn

2 安裝Jenkins插件

Jenkins裏有至關多的插件,使用什麼工具就安裝什麼工具的插件。

好比咱們這裏使用SVN,就安裝SVN的插件,若是你使用Git就安裝Git的插件。

由於我已經安裝了SVN,因此安裝插件的過程就用Git來演示。

安裝插件第一步.png

安裝插件第二步.png

第三步,搜索,安裝插件.png

第四步,安裝過程.png

第五步,查看已安裝插件.png

3 Xcode以及開發證書設置

由於要使用Xcode命令,因此必須保證Xcode command Line已安裝。

3.1 設置apple development 證書

在原來Xcode開發所在用戶下,導出發佈證書,若是要打企業包(299刀)和公司/我的版包(99刀),則兩種證書都要導出,而後拷貝到Jenkins用戶環境下,雙擊安裝到Mac 的鑰匙串中。

證書設置第一步.png

證書設置第二步.png

注意:由於用戶訪問鑰匙串中的證書須要權限,而用jenkins構建時,不論是用Xcode插件配置仍是shell腳本,都不能輸入用戶密碼,因此必須設置證書的【訪問控制】爲容許全部應用程序訪問此項目。

3.2 安裝mobileprovision描述文件

一樣須要在Jenkins用戶下,安裝好打包須要的手機描述文件。

4 配置構建項目

下面講解構建項目的配置,可使用本地的項目,也可使用SVN上的項目(只須要填入svn上工程地址便可),而後輸入shell 腳本就能夠開始構建了。

4.1 使用本地項目構建

步驟以下:

配置項目,第一步.png
點擊OK,在【/用戶/共享/Jenkins/Home/jobs】目錄下會生成HelloJenkins的目錄。

配置項目第二步.png

配置第三步.png

其餘的設置項,均不用設置,只須要設置下腳本便可,腳本詳細的內容以下:

# 工程名
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'】

點擊保存,而後點擊左側菜單,當即構建,便可開始構建。

當即構建.png

構建成功.png

構建結果.png

4.2 使用svn地址構建

第一步,新建項目,與上面的同樣。

第二步,不用將工程拷貝到jobs目錄下了,直接在配置裏源碼管理那一欄設置svn地址

SVN配置.png

這裏若是想要構建svn 上某個版本的工程,只須要再路徑後面加上@版本號便可。 例如:http://192.168.1.1:8999/svn/iOS/TestDemo@150。

第三步,設置shell 腳本,與上面的同樣。

第四步,當即構建便可。

提示:構建成功後,還有一些選項能夠設置,好比自動上傳到蒲公英或者fir.im,或者郵件通知等。

還能夠設置構建觸發器,設置在某個時刻自動構建等條件。由於這些設置都挺簡單的,而咱們目前還未用到,你們自行研究一下吧。

相關文章
相關標籤/搜索