iOS - 自動化編譯打包(Jenkins)


從xcodebuild到shenzhen,再到Jenkins,完美演繹自動化操作。

Features

xcodebuild自動構建命令

確保項目證書等配置都沒問題,可以完美運行。

簡介

首先說明下使用文檔:

man xcodebuild

 

基本上現在的包管理都是以pod來的,也就是以workspace的形式,所以基本的形式為:

xcodebuild [-project projectname] [-target targetname ...] 
[-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction ...] 
[setting=value ...] [-userdefault=value ...]

 

解釋兩個參數:

  • target,可以通過 xcodebuild -list 查看
  • configrtion,也可以通過 xcodebuild -list 查看
  • sdk,可用 xcodebuild -showsdks,一般默認就行

可以查看項目配置選項:

xcodebuild -target Demo -configuration Debug -showBuildSettings

 

構建

基本的構建命令:

xcodebuild -workspace Demo.xcworkspace -scheme Demo -configuration Debug -sdk iphoneos10.1

 

命令運行成功后會提示 ** BUILD SUCCEEDED **,一般會在項目目錄下生成build文件夾,可以在里面看到你的生成的包。

對於workspace的形式來說,基本上也差不多:

xcodebuild -workspace Demo.xcworkspace -scheme Demo -configuration Debug -sdk iphoneos10.1

 

好像對workspace構建后不會在項目目錄下生成build文件夾,可以在你的命令后面添加SYMROOT=buildDir指定一個build文件夾)。

生成IPA文件

生成文件的命令是xrun

xcrun -sdk iphoneos -v PackageApplication ./build/Release-iphoneos/Demo.app -o ~/Desktop/Demo.ipa

 

打包成功后,會在桌面找到你的ipa。

利用 shenzhen 進行打包

利用github上一個開源項目:  shenzhen 可以在命令行為ios項目進行打包並發布。 具體安裝步驟如下:

gem install shenzhen

 

如果安裝過程出現錯誤有可能是ruby的源找不到,可以到  RubyGems 鏡像 改變ruby源。

如果還是出現問題可以更新下gem即可(sudo gem update)。

一切准備完畢就能在控制台上運行ipa命令了:

$ ipa 

Build and distribute iOS apps (.ipa files)

Commands:
build                    Create a new .ipa file for your app
distribute:crashlytics   Distribute an .ipa file over Crashlytics
distribute:deploygate    Distribute an .ipa file over deploygate
distribute:fir           Distribute an .ipa file over fir.im
distribute:ftp           Distribute an .ipa file over FTP
distribute:hockeyapp     Distribute an .ipa file over HockeyApp
distribute:itunesconnect Upload an .ipa file to iTunes Connect
distribute:pgyer         Distribute an .ipa file over Pgyer
distribute:rivierabuild  Distribute an .ipa file over RivieraBuild
distribute:s3            Distribute an .ipa file over Amazon S3
distribute:testfairy     Distribute an .ipa file over TestFairy
help                     Display global or [command] help documentation
info                     Show mobile provisioning information about an .ipa file

 

可以看出通過bulid參數就能創建ipa文件,比如輸入命令:

ipa build

 

會直接在當前目錄下生成ipa文件以及dSYM文件。

如果你的工程項目有很多targets,則ipa bulid命令會列出現在所有targets,我們可以選擇一個進行打包。

如簡單的打包蒲公英事例:

ipa distribute:pgyer -u USER_KEY -a APP_KEY

 

iTunes Connect Distribution:

ipa distribute:itunesconnect -a me@email.com -p myitunesconnectpassword -i appleid --upload

 

Jenkins自動化

安裝

在 Mac 環境下,我們需要先安裝 JDK,在Jenkins 的官網下載最新的 war 包。下載完成后,打開終端,進入到 war 包所在目錄,執行以下命令:

java -jar jenkins.war --httpPort=8080
#或簡單的寫法
java -jar jenkins.war

 

待Jenkins啟動后,在瀏覽器中輸出一下地址: http://localhost:8080

這樣就打開Jenkins管理頁面了。

基本界面如下:

Jenkins開始頁面

創建項目

點擊左上角的新建,或是店家開始創建一個新任務,出現下面的頁面:

Jenkins新建頁面

這里輸入的名字為Demo,並選擇 構建一個自由風格的軟件項目,點擊OK進入到下一頁面:

Jenkins新建頁面

其中這里在General中,點擊高級,先使用本地項目做測試:

Jenkins新建本地頁面

源碼管理暫選None,構建觸發器和構建環境不需要選擇:

Jenkins新建本地頁面

構建,選擇shell形式,使用shenzhen來構建並直接上傳到蒲公英:

Jenkins使用shenzhen構建

其中,USER_KEY 和 API_KEY 可以在蒲公英的「賬戶設置」中找到,之后進行相應替換。

構建后的操作我們也不需要,直接點擊保存。

構建

保存之后進入到項目工作目錄,點擊立即構建:

Jenkins構建

會在構建歷史中顯示構建結構,點擊進入查看:

Jenkins

點擊 Console Output 查看日志信息:

Jenkins

會有一堆信息,成功的話會提示去蒲公英查看。

進入到蒲公英后台,會發現我們的應用已經發布上去,可以進行測試了。

配置遠程倉庫

首先配置SSH:

Jenkins

創建global的類型:

Jenkins

進去后點擊左側的 ` Add Credentials`:

Jenkins

選擇SSH類型,輸入自己的用戶名,Private Key 直接從 ~/.ssh 目錄下讀取就好。

工程的配置,跟本地的區別就是不需要配置自定義的工作空間,同時選擇源碼管理中的Git,填寫對應的地址信息:

Jenkins

然后其他的構建、查看過程都一致。

到蒲公英上檢查,果然存在。完美!

便捷設置

以上面的方式運行的Jenkins的,命令行是不能關閉的,為了方便的話,需要設置在后台運行:

nohup java -jar jenkins.war &

 

將命令寫入到sh文件中,比如就叫 start.sh,運行的時候直接跑腳本就好,附上文件內容:

#!/bin/sh
nohup java -jar /Users/home/Desktop/jenkinsWorkspace/jenkins/jenkins.war &

 

同樣的,關閉命令也可以直接使用,不過在使用關閉之前,需要下載個 jenkins-cli.jar文件:

首頁 -> 系統管理 -> Jenkins CLI

里面同樣包含好多其他命令,可以根據自己需要來調試。

設置關閉 Jenkins 的腳本:

#!/bin/sh
java -jar /Users/home/Documents/jenkins/jenkins-cli.jar -s http://localhost:8080/ shutdown

 

別忘記修改為自己的路徑。

一般的命令可以直接在網址上體現出來,比如重啟: http://localhost:8080/restart

上面既然用了iOS的打包,所以腳本感覺也是用swift來寫也是比較配套的,在這里就不貼出來了,喜歡研究的童鞋就google一下~,我將之命名為begin.swiftend.swift,恩,感覺還是不錯的

參考:

iOS 自動構建命令——xcodebuild

分享查詢網

蒲公英


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM