jenkins
1.1. 直接到官網下載安裝包,經過安裝包安裝 1.2. 經過Homebrew
使用命令行安裝1. 安裝Homebrew
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2. 安裝Jenkins
$ brew install jenkins
三、啓動Jenkins
$ jenkins
複製代碼
jenkins
須要java
環境,若是沒有安裝會有提示,java安裝地址一切順利的話,打開瀏覽器輸入:http://localhost:8080/
就能看到jenkins
已經運行起來了,若是你更換了端口就是你後來設置的端口。接下來打開Jenkins
後會讓去一個填寫password
的頁面以下圖,存儲password
的地方就是圖片上那行紅色字體目錄 html
而後將咱們獲得的password
輸入到Administrator password
中,便可進入以下界面,接着安裝一些建議的插件左邊的
,安裝過程當中,有的插件可能會安裝失敗,強烈建議點擊右下角的重試,直到把建議安裝的都裝好 java
插件安裝完成後,可能不會自動跳轉,刷新下界面便可,在刷新後的界面中註冊,輸入用戶名和密碼,建議輸入後點藍色按鈕保存完成git
jenkins
插件 若是要使用Jenkins
的插件構建工程的,須要在開始新建工程前安裝一些Jenkins
插件,在可選插件中選擇咱們須要的插件進行安裝1. Xcode integration
2. GIT plugin
3. GitLab Plugin
4. Gitlab Hook Plugin
5. Keychains and Provisioning Profiles Management
複製代碼
咱們今天使用Execute shell
Shell腳本
構建工程github
jenkins
的使用 3.1. 構建一個自由風格的軟件項目
3.2. General
參數
能夠設置包的保留天數和最大保留個數,這些能夠根據須要進行調整,能夠不要選jenkins
插件配置多個項目extended choice parameter
插件主要是構建的時候能夠多選框來選擇要構建的項目模塊
3.3. 源碼管理
3.4. 構建觸發器設置 觸發器可自定義的地方不少,能夠根據項目須要選擇可省略
SVN
或Git
中數據有無變化,均執行定時化的構建任務SCM
:只要SVN
或Git
中數據有更新,則執行構建任務 日程表的填寫內容有5
個參數,從左到右的參數含義以下: ⦁ 第1
個參數:分鐘minute
,取值0~59
⦁ 第2
個參數:小時hour
,取值0~23
⦁ 第3
個參數:天day
,取值1~31
⦁ 第4
個參數:月month
,取值1~12
⦁ 第5
個參數:星期week
,取值0~7
,0
和7
都是表示星期天 5
個參數可選擇性設定,不寫死的參數用*
號代替,參數之間用空格隔開。例如:"0 21 * * *"表示每晚21點0分自動化構建一次
"0 * * * *"表示每一個小時的第0分鐘執行一次構建
"H/5 * * * *"每隔5分鐘構建一次
"H H/2 * * *"每兩小時構建一次
"H H 30 * *"每個月30號構建一次
"H(0-29)/10 * * * *"每一個小時的前半個小時內的每10分鐘
"0 8-17/2 * * 1-5"週一到週五,8點~17點,兩小時構建一次
"H H 1,15 1-11 *"每個月1號、15號各構建一次,除12月等
複製代碼
3.5. 構建環境設置 本文使用的是
shell
腳本構建工程,因此該項能夠省去 3.6. 構建 有兩種方式打包,一是用
Xcode
插件打包,二是用
Shell
腳本打包,本文選擇第二種
iOS
自動打包—Jenkins Shell
以下:## !/bin/sh
## 項目名
TARGET_NAME=NNAlgorithm
## Scheme名
SCHEME=NNAlgorithm
##=======================
## 編譯類型
BUILD_TYPE=Release
## 當前目錄
SORCEPATH=${WORKSPACE}
## workspace名
SPACE=${WORKSPACE}/${TARGET_NAME}.xcodeproj
##xcarchive文件的存放路徑
ARCHIVEPATH=$SORCEPATH/build/$SCHEME.xcarchive
## ipa文件的存放路徑
EXPORTPATH=$SORCEPATH/build/$SCHEME
## ExportOptions.plist文件的存放路徑,該文件要存放在這個路徑下內容以下
EXPORTOPTIONSPLIST=$SORCEPATH/build/ExportOptions.plist
## 導出後的ipa路徑
EXPORTPATHIPA=$SORCEPATH/build/$SCHEME/$SCHEME.ipa
echo -e "============First Build Clean============"
## 清理緩存
## 若是工程使用的是cocoapods,則'-project %s.xcodeproj'替換爲'-workspace %s.xcworkspace'
xcodebuild clean -project $SPACE -scheme ${SCHEME} -configuration ${BUILD_TYPE}
echo -e "============Build Clean============"
## 輸出關鍵信息
echo -e " TARGET_NAME : ${TARGET_NAME}"
echo -e " BUILD_TYPE : ${BUILD_TYPE}"
echo -e " SORCEPATH : ${SORCEPATH}"
echo -e " ARCHIVEPATH : ${ARCHIVEPATH}"
echo -e " EXPORTPATH : ${EXPORTPATH}"
echo -e " EXPORTOPTIONSPLIST : ${EXPORTOPTIONSPLIST}"
echo -e "============Build Archive============"
## 導出archive包
xcodebuild archive -project ${SPACE} -scheme ${SCHEME} -archivePath $ARCHIVEPATH
echo -e "============Build Archive Success============"
echo -e "============Export IPA============"
## 導出IPA包
xcodebuild -exportArchive -archivePath $ARCHIVEPATH -exportPath ${EXPORTPATH} -exportOptionsPlist ${EXPORTOPTIONSPLIST}
echo -e "============Export IPA SUCCESS============"
## 編譯完成時間 20181030_0931
BUILD_DATE="$(date +'%Y%m%d_%H%M')"
## info.plist路徑
PROJECT_INFOPLIST_PATH="${SORCEPATH}/${TARGET_NAME}/Info.plist"
## 取版本號
BUNDLESHORTVERSION=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${PROJECT_INFOPLIST_PATH}")
## 取build值
VERSION=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${PROJECT_INFOPLIST_PATH}")
## ipa改名規則 項目名V版本_年月日_時分
IPANAME="${TARGET_NAME}V${BUNDLESHORTVERSION}_${BUILD_DATE}.ipa"
## 改名後ipa路徑
EXPORTPATHNEWIPA=$EXPORTPATH/$IPANAME
echo -e "============Export end :${BUILD_DATE}============"
echo -e "============IPA Old Name: ${EXPORTPATHIPA}============"
echo -e "============IPA New Name: ${EXPORTPATHNEWIPA}============"
## IPA改名
cp $EXPORTPATHIPA $EXPORTPATHNEWIPA
echo -e "============Create New Name Success============"
## 刪除老IPA
rm $EXPORTPATHIPA
echo -e "============Delete Old Name Success============"
#userKey和apiKey須要在蒲公英的帳號設置中查找
userKey="xxx"
apiKey="xxx"
#蒲公英打包
curl -F "file=@${EXPORTPATHNEWIPA}" \
-F "uKey=${userKey}" \
-F "_api_key=${apiKey}" \
-F "isPublishToPublic=2" \
http://www.pgyer.com/apiv1/app/upload
複製代碼
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>provisioningProfiles</key>
<dict>
<key>com.Y***ane</key>
<string>azur***_dev</string>
</dict>
<key>method</key>
<string>development</string>
<key>signingCertificate</key>
<string>iPhone Developer</string>
<key>signingStyle</key>
<string>manual</string>
<key>teamID</key>
<string>42***ZL</string>
<key>compileBitcode</key>
<false/>
<key>uploadSymbols</key>
<false/>
</dict>
</plist>
複製代碼
其中plist
文件中的method
參數有以下幾個方法:app-store, ad-hoc, enterprise, development
3.7. 構建後操做shell
郵件通知系統,經過系統管理
→系統設置
,進行郵件配置api
設置jenkins
地址和管理員郵箱地址 xcode
設置發件人等信息 這裏的發件人郵箱地址切記要和系統管理員郵件地址保持一致 瀏覽器
注:上圖的Password爲郵箱的SMTP受權祕鑰,至此係統管理處的內容已配置完成緩存
配置Jenkins
自帶的郵件功能(測試郵件功能是否正常使用,能夠不配置,不影響) ruby
Extended E-mail Notification
配置同樣便可,點擊Test configuration
,收到郵件而且顯示Email was successfully sent
,表明郵件配置成功,接下來能夠去項目中具體配置就能夠使用了 進入項目,而後找到構建後操做,點擊增長構建後的操做步驟
,點擊Editable Email Notification
至此全部的配置已完成,點擊應用後保存,enjoy it!
Project Recipient List:這個項目的須要發送郵件給哪些人,能夠在這裏輸入多個郵箱,中間以英文逗號隔開
Project Reply-To List:保持默認便可,這個是收到郵件的人回覆郵件時候回覆給誰用的,通常不會回覆郵件
Content Type:能夠選擇Html或者Default也行,由於咱們在jenkins系統設置中的默認格式就是html
Default Subject: 郵件主題,能夠書寫成:XXX項目iOS打包通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS! 分析下這幾個參數什麼意思:$PROJECT_NAME 構建項目的名稱;$BUILD_NUMBER 構建的號碼;$BUILD_STATUS 構建狀態,這幾個參數,它會自動讀取,按照這種格式書寫便可
Default Content:郵件內容,如下內容爲模板,可直接複製修改使用:
<hr/>
本郵件是程序自動下發的,請勿回覆!<br/><hr/>
項目名稱:$PROJECT_NAME<br/><hr/>
構建編號:$BUILD_NUMBER<br/><hr/>
構建狀態:$BUILD_STATUS<br/><hr/>
觸發緣由:${CAUSE}<br/><hr/>
構建日誌地址:<a href="${BUILD_URL}console">${BUILD_URL}console/</a><br/><hr/>
構建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><hr/>
構建報告:<a href="${BUILD_URL}testReport">${BUILD_URL}testReport/</a><br/><hr/>
變動集:${JELLY_SCRIPT,template="html"}<br/><hr/>
複製代碼
brew
安裝的,能夠執行如下命令$ brew uninstall jenkins