iOS開發Jenkins+Gitlab+shell+蒲公英,持續集成自動打包(簡稱CI)

一、摘要:作為一個開發人員,想想如果配置了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
image.png

image.png

image.png

3、創建任務:
3.1、
image.png

image.png

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
image.png

image.png

image.png

image.png

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命令

四、以上是對自己配置jenkins過程的一個記錄,歡迎有問題的小伙伴留言一起探討進步,如果文章對你有幫助請給個小??????。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容