從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.swift和end.swift,恩,感覺還是不錯的
