Jenkins + Git + fastlane + 蒲公英實現自動化打包上傳

Moshimol發表於2018-07-10

搭建Jenkins環境

安裝jenkins(需要安裝java環境)

jenkins官網下載或者是從清華大學開源映象網站進行下載下載地址

我自己安裝的jenkins的包版本是jenkins-2.121.1.pkg

安裝完成後,Safari可能會自動開啟,如果沒有自動開啟,開啟瀏覽器,輸入http://localhost:8080

如果頁面提示不能連線伺服器的錯誤,重啟電腦。然後再輸入http://localhost:8080進入登入頁面。

根據提示,找到/Users/Shared/Jenkins/Home/ 這個目錄,找到secrets檔案,顯示簡介,設定所有人都可以讀與寫的許可權,並找到initialAdminPassword檔案,同樣放開許可權,複製出密碼,登入進去,一路安裝過來,輸入使用者名稱、密碼、郵件等。最後點選Save and Finish。

jenkins打包的相關外掛

  1. 證照管理外掛 連結

  2. xcode外掛 連結

  3. 指令碼執行外掛 連結

  4. git外掛 連結

安裝這幾個外掛,並且重啟jenkins,下面是幾個jenkins的相關東西

1、重啟Jenkies

    http://localhost:8080/restart

2、重新載入配置資訊

    http://localhost:8080/reload
複製程式碼
證照管理外掛

WechatIMG8.jpeg

注 developer只是一個用於測試開發的證照,password 一定要填寫正確的鑰匙串的密碼,Code Signing Identity 是從鑰匙 找到相應的證照,然後顯示簡介複製來,這 Identities少要填兩項,是因為這放個的話後的設定Code Signing Identity能動對應上。

/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles
複製程式碼

移動複製相關檔案

把需要的檔案移動到對用目錄下

一 、將/Users/使用者名稱/Library的MobileDevice資料夾拷貝到/Users/Shared/Jenkins/Library下

注意:是將MobileDevice這個資料夾拷貝過去,而不是MobileDevice裡的檔案,/Users/Shared/Jenkins/Library 目錄下是沒有MobileDevice這個資料夾,所以先建立一個MobileDevice資料夾。

在終端輸入

sudo mkdir /Users/Shared/Jenkins/Library/MobileDevice
sudo cp -r /Users/xxx/Library/MobileDevice/ /Users/Shared/Jenkins/Library/MobileDevice/
複製程式碼

如果沒有mobileDevice這個資料夾,應該就是沒有安裝xcode

二 、將/Users/使用者名稱/Library/Keychains/下的login.keychain及login.keychain-db這兩個檔案拷貝到/Users/Shared/Jenkins/Library/Keychains資料夾下面
注意:Mac OS 10.12以下的沒有login.keychain-db這個檔案,只需要拷貝login.keychain檔案。
複製程式碼

在終端輸入:

cd /Users/Shared/Jenkins/Library/
sudo mkdir Keychains
sudo cp /Users/xxx/Library/Keychains/login.keychain ./Keychains/
sudo cp /Users/xxx/Library/Keychains/login.keychain-db ./Keychains/
複製程式碼

再將這個login.keychain拷貝到桌面上 如果沒有login.keychain,請把login.keychain -db改為login.keychain

三 、 鑰匙串許可權、~/Library許可權以及電腦使用者管理許可權

WechatIMG6.jpeg

點選顯示簡介,更改相關許可權

WechatIMG7.jpeg

四 、 找到Library資源庫資料夾,設定共享與訪問許可權,everyone讀與寫都可以,並且應用於下層目錄

開始構建專案

構建操作,起名字點選輸入一個任務名稱,選擇構建一個自由風格

WechatIMG9.jpeg

git拉取程式碼,並且把相關git相關上傳到全域性變數

WechatIMG13.jpeg

把這個東西作為全域性變數複製到對應的地方

WechatIMG10.jpeg

Keychains and Code Signing Identities

WechatIMG11.jpeg

注意第一次選擇,可能不會出現Code Signing Identity,這個時候,儲存專案再退出來後再進去就是可以看到了

上傳蒲公英的相關操作

WechatIMG12.jpeg

fastlane搭建

fastlane 介紹

fastlane 是一款為 iOS 和 Android 開發者提供的自動化構建工具,它可以幫助開發者將 App 打包、簽名、測試、釋出、資訊整理、提交 App Store 等工作完整的連線起來,實現完全自動化的工作流,如果使用得當,可以顯著的提高開發者的開發效率。

依賴環境: Xcode7+ macOS or Linux with Ruby 2.0.0 +

安裝fastlane
$ sudo gem install fastlane

如果報錯:ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/commander 
使用: sudo gem install -n /usr/local/bin fastlane
複製程式碼

cd到對應的目錄,使用fastlane init 我選擇的是4。目錄的結構是

WechatIMG14.jpeg

fastlane的檔案程式碼操作 注意:一定要安裝執行下面的命令

fastlane add_plugin pgyer
複製程式碼

fastlane

# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
#     https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
#     https://docs.fastlane.tools/plugins/available-plugins
#

# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane

default_platform(:ios)

# 定義fastlane版本號
fastlane_version “2.99.0”

# 定義打包平臺
default_platform :ios

lane :beta do
  gym(
#輸出的ipa名稱
output_name:”QKiOS_IPA”,
# 是否清空以前的編譯資訊 true:是
clean:true,
# 指定打包方式,Release 或者 Debug
configuration:"Debug",
# 指定打包所使用的輸出方式,目前支援app-store, package, ad-hoc, enterprise, development
export_method:"development",
# 指定輸出資料夾
output_directory:"./fastlane/build",
)
pgyer(api_key: "蒲公英的api_key", user_key: "蒲公英的user_key")

複製程式碼

Jenkins的shell指令碼

先執行pod操作,如果是使用cocoapod安裝的話

#bin/bsah - l

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8

cd $WORKSPACE/

echo ++++++++++++++++++

#/usr/local/bin/pod install
/usr/local/bin/pod update --verbose --no-repo-update

echo begin
echo ++++++++++++++++++

複製程式碼

解鎖keychain

#bin/security - l
/usr/bin/security unlock-keychain -p q1234 ~/Library/Keychains/login.keychain-db
複製程式碼

fastlane 進行打包

#bin/bsah - l

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8

cd $WORKSPACE/

pwd

PATH="/usr/local/bin:$PATH"

# 進行打包操作
/usr/local/bin/fastlane beta 

複製程式碼

整合成功的顯示

整合成功的控制檯輸出

WechatIMG15.jpeg

jenkin成功的標誌

WechatIMG16.jpeg

整合的時候遇到的問題

  1. CodeSign 簽名失敗,執行解鎖keychain的shell指令碼
CodeSign /Users/Shared/Jenkins/Library/Developer/Xcode/DerivedData/QKiOS-ceqftwbkurbqjxfyflrsrfuzezvs/Build/Intermediates.noindex/ArchiveIntermediates/QKiOS/InstallationBuildProductsLocation/Applications/QKiOS.app```複製程式碼

相關文章