一、摘要:作為一個開發人員,想想如果配置了Jenkins,就能一鍵打包發布到蒲公英或者fir,是不是美滋滋呢!
主要優點:
(1)對于開發人員來說,測試什么時候想要測試包,我只要一鍵構建,它就自動打包發布到蒲公英上去,是不是美滋滋;
(2)對于產品質量來說,持續集成自動打包,可以減少很多低級錯誤,如:證書配置,編譯錯誤,安裝問題等,因為這些問題在構建的時候就幫你做了檢查;
(3)對于測試人員來說,測試用例,自動測試,自動跑回歸測試,這方面的問題,我還沒深入研究。
二、步驟
四大步驟梗概:
1、安裝Jenkins并啟動
2、下載插件
3、創建任務
4、配置任務
四大步驟詳細配置:
1、安裝Jenkins并啟動:
1.1、使用homebrew安裝(如果已經安裝,跳過此步),打開終端輸入如下:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
1.2、安裝 Jenkins,打開終端輸入如下:
brew install jenkins
1.3、啟動 Jenkins,打開終端輸入如下:
jenkins
1.4、訪問Jenkins:當Jenkins啟動后,瀏覽器中輸入 http://localhost:8080/
1.5、打開瀏覽器之后需要創建用戶,這里就不細講了,具體可參考鏈接:創建Jenkins步驟
2、下載插件
2.1、系統設置-》插件管理-》Available(可選插件)-》Filter分別所說安裝如下三個插件:
(1) GitLab
(2) Xcode integration
(3). Keychains and Provisioning Profiles Management
3、創建任務:
3.1、
4、配置任務:
4.1、設置源碼管理(這里我們使用的是git)
注意:
- 這里需要注意的是Repository URL這里填寫的是ssh下的git地址
-
沒有選擇添加的credentials(憑據)時,輸入Repository URL會有一堆紅色的報錯
ssh下的git地址
沒有選擇憑據時會報錯
4.2、添加憑據
注意:
- ID一欄在填寫key的時候的會自動補齊
- private key的獲取方式,記得復制key的時候連BEGIN開始和結尾的都要復制上
終端輸入 open ~/.ssh/id_rsa
4.3、build environment(構建環境)
注意:
- 先配置:Keychains and Code Signing Identities
-
如果login.keychain-db上傳不了文件,把-db去掉在上傳
4.3.1、配置Keychains and Code Signing Identities:
1、系統設置-》Keychains and Code Signing Identities
image.png
image.png
2、在/Users/Shared/Jenkins文件夾下如圖:
如果不存在Keychains和MobileDevice:
1、直接將/Users/‘你的用戶名’/Library/Keychains文件夾拷貝到/Users/Shared/Jenkins文件夾下;
2、直接將/Users/‘你的用戶名’/Library/MobileDevice文件夾拷貝到/Users/Shared/Jenkins文件夾下;
image.png
3、Code Signing Identities填寫,到鑰匙串中找到對應的證書名
image.png
image.png
4.4、build(構建方式選擇shell,最開始嘗試使用的是xcode配置比較麻煩,而且配置一致不成功,網上有說是因為xcode9.0以上版本和Jenkins搭配存在問題,但是本人沒有親自去驗證,索性直接使用了shell來構建了)
image.png
image.png
shell命令:
## !/bin/sh
## 項目名
TARGET_NAME=jenkins_demo
## Scheme名
SCHEME=jenkins_demo
##=======================
## 編譯類型
BUILD_TYPE=Debug
## 當前目錄
SORCEPATH=${WORKSPACE}
## workspace名
SPACE=${WORKSPACE}/${TARGET_NAME}.xcworkspace
##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============"
## 清理緩存
xcodebuild clean -workspace $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 -workspace ${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============"
###
### 上傳蒲公英
###
#蒲公英上的User Key
uKey="xxx"
#蒲公英上的API Key
apiKey="xxx"
#要上傳的ipa文件路徑
IPA_PATH=$SORCEPATH/build/$TARGET_NAME/$IPANAME
#執行上傳至蒲公英的命令,這句不需要修改
curl -F "file=@${IPA_PATH}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" https://www.pgyer.com/apiv1/app/upload
三、參考鏈接(安裝、配置主要參考鏈接一,shell命令主要參考鏈接三)
一:Jenkins+Gitlab+Xcode+蒲公英
二:Jenkins+Gitlab+Xcode+蒲公英/fir
三:shell命令