- 安裝
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
3、啟動Jenkins
$ jenkins
-
jenkins
需要java
環境,如果沒有安裝會有提示,java安裝地址
一切順利的話,打開瀏覽器輸入:http://localhost:8080/
就能看到jenkins
已經運行起來了,如果你更換了端口就是你后來設置的端口。接下來打開Jenkins
后會讓去一個填寫password
的頁面如下圖,存儲password
的地方就是圖片上那行紅色字體目錄
然后將我們得到的password
輸入到Administrator password
中,即可進入如下界面,接著安裝一些建議的插件左邊的
,安裝過程中,有的插件可能會安裝失敗,強烈建議點擊右下角的重試,直到把建議安裝的都裝好
插件安裝完成后,可能不會自動跳轉,刷新下界面即可,在刷新后的界面中注冊,輸入用戶名和密碼,建議輸入后點藍色按鈕保存完成
- 安裝
jenkins
插件
如果要使用Jenkins
的插件構建工程的,需要在開始新建工程前安裝一些Jenkins
插件,在可選插件中選擇我們需要的插件進行安裝
Git Parameter
這是一個參數構建擴展,可以在構建的時候選擇git的某一個分支來構建服務。
Git Parameter
官方地址:http://wiki.jenkins-ci.org/display/JENKINS/Git+Parameter+Plugin
安裝方式:在Jenkins插件當中直接搜索即可安裝。
功能說明:在參數化構建步驟當中,可添加Git的branch或者tag來作為參數進行構建。
Active Choices
官方地址:https://wiki.jenkins.io/display/JENKINS/Active+Choices+Plugin
安裝方式:在Jenkins插件當中直接搜索即可安裝。
功能說明:根據所選參數,自動調出對應參數所依賴的后續參數。
我們今天使用Execute shell
Shell腳本
構建工程
-
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. 構建后操作郵件通知系統,通過
系統管理
→系統設置
,進行郵件配置-
設置
jenkins
地址和管理員郵箱地址
-
設置發件人等信息
這里的發件人郵箱地址切記要和系統管理員郵件地址保持一致
注:上圖的Password為郵箱的SMTP授權秘鑰,至此系統管理處的內容已配置完成
-
配置
Jenkins
自帶的郵件功能(測試郵件功能是否正常使用,可以不配置,不影響)
和上面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
-
注:Jenkins修改工程的工作空間
在項目的配置中點擊高級,選擇使用自定義工作空間,輸入工作空間路徑即可
注意:使用
Jenkins Pipeline
動態參數傳遞Git
分支時,需要取消Pipeline
的輕量級檢出
選項,不然git
分支參數傳遞會有問題