Jenkins+GitLab+fir.im 持續集成

寫在前面

最近公司搞自動化打包,從0開始折騰了幾天終於完成了,準備整理一下,寫成文檔。

 

1、下載Jenkins並安裝

Jenkins下載地址:https://jenkins.io

在主頁面點擊Download Jenkins選擇Mac OS。

安裝沒有什麼好介紹的,雙擊安裝包,按照提示進行就好了。

2、下載Java SDK

Jenkins 需要運行 Java 5以及以上的版本。

下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

3、啓動Jenkins

默認安裝完Jenkins會在瀏覽器打開網頁:http://localhost:8080/

如果沒有自動打開,可以在瀏覽器打開http://localhost:8080/

或者

命令行啓動Jenkins:

 

啓動:

sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

停止:

sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist

/var/root/.jenkins/secrets/initialAdminPassword

啓動後按照提示文件路徑,找到key激活,(文件如果沒有權限,可以右鍵顯示簡介,下面的用戶開啓權限)

然後設置Jenkins的管理員賬號。

安裝Jenkins的默認插件。

注意:我們前往文件夾你會發現是找不到的解鎖需要的文件的,因爲我們沒有其操作權限。終端進入var:
 

sudo chmod -R 777 root

 

4、Jenkins配置

 

4.1、系統管理

4.1.1、管理插件

選擇系統管理->管理插件->可選插件,在需要的插件前點擊,選中,點擊直接安裝

 

  • iOS專用:Xcode integration
  • Android專用:Gradle plugin
  • Gitlab插件:GitLab Plugin 和 Gitlab Hook Plugin
  • Git插件: Git plugin
  • GitBuckit插件: GitBuckit plugin
  • 簽名證書管理插件: Credentials Plugin 和Keychains and Provisioning Profiles Management
  • FTP插件: Publish over FTP
  • 腳本插件: Post-Build Script Plug-in
  • 修改Build名稱/描述(二維碼): build-name-setter / description setter plugin
  • 獲取倉庫提交的commit log: Git Changelog Plugin
  • 自定義全局變量: Environment Injector Plugin
  • 自定義郵件插件: Email Extension Plugin
  • 獲取當前登錄用戶信息: build-user-vars-plugin
  • 顯示代碼測試覆蓋率報表: Cobertura Plugin
  • 來展示生成的單元測試報表,支持一切單測框架,如junit、nosetests等: Junit Plugin
  • 其它: GIT plugin / SSH Credentials Plugin

 

 

 

 

 

 

點擊高級-> 選擇文件-> 選擇從fim.im中下載的Jenkins插件fir-plugin-1.9.5.hpi ->點擊上傳

 

4.1.2 、鑰匙串和配置文件管理

選擇系統管理->點擊 Keychains and Provisioning Profiles Management 

點擊選擇文件按鈕,在彈出的文件選擇框中選擇系統的System.keychain或者login.kenchain。完成後,點擊upload上傳。

System.keychain文件在目錄:

Macintosh HD/Library/Keychains/

Code Signing Identity:打開鑰匙串,右擊->顯示簡介->複製常用名稱,粘貼到下面就OK了

 

 

然後,在本頁面再次點擊選擇文件->在彈出的文件選擇框中,選擇蘋果開發中心的配置文件->點擊upload。

Provisioning Profiles Directory Path:可以寫成:/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles

點擊save 保存就好了。

4.2、 Credentials

這裏是可以使用SSH訪問GitLab的關鍵。在key一欄的輸入框裏面粘貼私有key的內容就好了。生成ssh的方法:

 

 

 

4.3、新建Job

4.3.1 選擇類型

這裏講主要內容,其他一些設置可以自己摸索研究。

點擊新建 ->輸入名字-> 選擇第一個 自由風格 ->點擊OK

 

4.3.2 配置Git

選源碼管理->選擇Git -> Repository URL爲項目的Git地址(SSH類型)-> Credentials 選擇上面創建的

 

4.3.3 構建環境

選擇構建環境,選中兩項 Keychains and Code Signing Identities和Mobile Provisioning Profiles

 

選擇下面截圖中的Keychain和Provisioning Profile兩項,點擊保存,再次進來就會發現其他項已經自動填充了,沒有填充的項不是必須填寫的

 

4.3.4 構建腳本

選擇構建-> 選擇Execute shell

在Command的輸入框填寫打包腳本。

 

 

打包的腳本:

1)沒有使用workspace的打包腳本

 

# 工程名

APP_NAME="JenkinsDemo"

# 證書

CODE_SIGN_DISTRIBUTION="iPhone Distribution: Beijing ****"

# info.plist路徑

project_infoplist_path="./${APP_NAME}/platforms/ios/${APP_NAME}/${APP_NAME}-Info.plist"

#取版本號

#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)"

IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"

#要上傳的ipa文件路徑

IPA_PATH="$HOME/${IPANAME}"

echo ${IPA_PATH}

echo "${IPA_PATH}">> text.txt

 

cd ${APP_NAME}

 

# 修改build版本號
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "${APP_NAME}/${APP_NAME}-Info.plist"
# 修改版本號
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $VERSION" "${APP_NAME}/${APP_NAME}-Info.plist"

echo "=================clean================="

xcodebuild -target ${APP_NAME}  -configuration 'Release' clean

echo "+++++++++++++++++build+++++++++++++++++"

#xcodebuild -target ${APP_NAME} -scheme "${APP_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'

xcodebuild -project ${APP_NAME}.xcodeproj -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 ~/"${IPANAME}"

 

//————————————————————————————————

2)使用workspace的打包腳本(包括cordova混合開發結構)

 

# 工程名

APP_NAME="Jira_app"

# 證書

CODE_SIGN_DISTRIBUTION="iPhone Distribution: Beijing ****"

# info.plist路徑

#project_infoplist_path="./${APP_NAME}/platforms/ios/${APP_NAME}/${APP_NAME}-Info.plist"

#取版本號

#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)"

IPANAME="${APP_NAME}.ipa"

#要上傳的ipa文件路徑

IPA_PATH="$HOME/${IPANAME}"

echo ${IPA_PATH}

echo "${IPA_PATH}">> text.txt

 

cd ${APP_NAME}/platforms/ios/

# 修改build版本號
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "${APP_NAME}/${APP_NAME}-Info.plist"
# 修改版本號
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $VERSION" "${APP_NAME}/${APP_NAME}-Info.plist"

echo "=================clean================="

xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}"  -configuration 'Release' clean

echo "+++++++++++++++++build+++++++++++++++++"

xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'

xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${APP_NAME}.app" -o ~/"${IPANAME}"

 

3)xcode8後的打包命令

 

echo ${VERSION}.${BUILD_NUMBER}

 

#widget

WIDGET="RTSgccWidget"

 

# 工程名

PROJECT_NAME="sgcc-app"

APP_NAME="RTSgcc"

# 證書

CODE_SIGN_DISTRIBUTION="iPhone Distribution: Beijing Rowena Technology Co., Ltd. (K749AEADAX)"

# info.plist路徑

project_infoplist_path="./${APP_NAME}/platforms/ios/${APP_NAME}/${APP_NAME}-Info.plist"

#取版本號

#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)"

IPANAME="${APP_NAME}.ipa"

#要上傳的ipa文件路徑

IPA_PATH="$HOME/${IPANAME}"

echo ${IPA_PATH}

echo "${IPA_PATH}">> text.txt

 

 

cd ${PROJECT_NAME}/platforms/ios/

# 修改build版本號

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "${APP_NAME}/${APP_NAME}-Info.plist"

# 修改版本號

/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $VERSION" "${APP_NAME}/${APP_NAME}-Info.plist"

 

 

 

echo "=================clean================="

xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -configuration 'Release' clean

echo "+++++++++++++++++build+++++++++++++++++"

xcodebuild archive -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -configuration Release -archivePath "${APP_NAME}.xcarchive"

echo "+++++++++++++++++export ipa+++++++++++++++++"

xcodebuild -exportArchive -archivePath "${APP_NAME}.xcarchive" -exportPath build_app  -exportOptionsPlist 'exportOptionsPlist.plist'

 

需要配置exportOptionsPlist.plist文件

 

//xcode 9支持自動簽名打包

在命令後面添加:

-allowProvisioningUpdates

 

 

4.3.5 上傳fir.im

選擇構建後操作步驟- > 選擇Upload to fir.im 

fir.im Token爲註冊登錄後,可以查看的API Token。

IPA/APK Files (optional) 填寫的是.ipa文件的路徑

Build Notes 爲版本更新的更新日誌,會在fir.im上顯示

 

點擊保存 - > 立即構建 ->  構建的過程可以在Console Output中查看。

fir.im出現上傳速度慢的時候,參照http://blog.fir.im/turbo-qiniu/  解決。

在Mac執行:

sh -c "$(curl -sSL https://gist.githubusercontent.com/trawor/5dda140dee86836b8e60/raw/turbo-qiniu.sh)"

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章