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

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

Features

xcodebuild自動構建命令

確保項目證書等配置都沒問題,能夠完美運行。ios

簡介

首先說明下使用文檔:git

man xcodebuild

 

基本上如今的包管理都是以pod來的,也就是以workspace的形式,因此基本的形式爲:github

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

 

解釋兩個參數:shell

  • target,能夠經過 xcodebuild -list 查看
  • configrtion,也能夠經過 xcodebuild -list 查看
  • sdk,可用 xcodebuild -showsdks,通常默認就行

能夠查看項目配置選項:swift

xcodebuild -target Demo -configuration Debug -showBuildSettings

 

構建

基本的構建命令:xcode

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

 

命令運行成功後會提示 ** BUILD SUCCEEDED **,通常會在項目目錄下生成build文件夾,能夠在裏面看到你的生成的包。瀏覽器

對於workspace的形式來講,基本上也差很少:ruby

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

 

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

生成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

分享查詢網

蒲公英

相關文章
相關標籤/搜索