初識 Xcode Cloud
作者丨小集
來源丨知識小集(ID:zsxjtip)
本文基于 《Meet Xcode Cloud》與 《Explore Xcode Cloud workflows》兩個(gè) Session 整理而成,更詳細(xì)信息,請觀看視頻。
相信很多朋友都用過 CI/CD 工具做持續(xù)集成、持續(xù)交付和持續(xù)部署工作,不管是使用哪種語言來開發(fā)。大公司一般會選擇在現(xiàn)在工具的基礎(chǔ)上自建,小公司或個(gè)人可以選擇一些公開的工具,類似于 Jenkins、Travis CI 等。使用這些工具和方法,可以定期集成代碼變更進(jìn)行測試工具,以及早發(fā)現(xiàn)和修復(fù)問題,可以說,通過一整套的 CI/CD 方法,可以讓團(tuán)隊(duì)在創(chuàng)造高質(zhì)量產(chǎn)品的同時(shí),很好地協(xié)同工作。
CI 工作流
典型的 CI 工作流是一組可自動化的步驟,在將代碼變更推送到代碼倉庫后會自動運(yùn)行。這整套流程包括自動構(gòu)建、代碼分析、運(yùn)行測試、存檔等等,甚至可通過腳本來自定義流程,以確保整個(gè)流程按照團(tuán)隊(duì)預(yù)定的要求來執(zhí)行。

對于一個(gè)開發(fā)團(tuán)隊(duì)來說,我們的目標(biāo)是在完成產(chǎn)品需求的同時(shí),保證高質(zhì)量的代碼,而這需要不斷地迭代更新并獲取有效反饋。Apple 平臺的開發(fā)者要獲取這些反饋,可能是來自于 Xcode,或者是團(tuán)隊(duì)的代碼審核、或者是測試人員、亦或者是通過 TestFlight 分發(fā)新版本從用戶那邊獲得。

初識 Xcode Cloud
基于此,蘋果將 CI 的能力集成到了 Xcode 中,推出了 Xcode Cloud,其目標(biāo)是為 Apple 平臺的開發(fā)者提供完整的開發(fā)流程,包括構(gòu)建、測試、分發(fā)、收集反饋等。

相關(guān)的幾個(gè) Session 都是以一個(gè)名為 Fruta 的應(yīng)用作為示例,要介紹 Xcode Cloud 的主要功能。
Xcode Cloud 是集成在 Xcode 中(App Store Connect 中也有)。在這里我們可以了解 Xcode Cloud 運(yùn)行的各項(xiàng)信息及相關(guān)配置,包括工作流、構(gòu)建情況及問題反饋,以及整個(gè)團(tuán)隊(duì)的工作情況。我們可以快速啟動和運(yùn)行工作流,并在后續(xù)可以根據(jù)需要來個(gè)性配置信息。而構(gòu)建的整個(gè)過程是在 Apple 托管的 Cloud 基礎(chǔ)設(shè)施中運(yùn)行的,這套基礎(chǔ)設(shè)施提供了代碼簽名,以及對多個(gè)操作系統(tǒng)版本和 Xcode 版本的支持。
在 Xcode 的 Report Natigator 中選擇 Cloud 選項(xiàng)卡來打開信息面板,左側(cè)是所有工作流和最新構(gòu)建的狀態(tài),

而在右側(cè)可以查看以下一些信息:
? 構(gòu)建組概覽,顯示所有的工作流,當(dāng)然還可以點(diǎn)擊面板左上角來做一些過濾操作。

? 單次運(yùn)行的構(gòu)建報(bào)告,可以看到構(gòu)建的所有詳細(xì)信息

添加工作流
添加工作流的操作很簡單
? 在菜單中選擇 Product -> Xcode Cloud -> Create Workflow

? 在彈出的面板中選擇要加載的應(yīng)用,點(diǎn)擊“Next”

? 在新的面板中可以看到 Start Condition、Environment、Actions、Post-Actions 幾個(gè)項(xiàng),這里主要包括各項(xiàng)配置信息。點(diǎn)擊 “Next”

? 授權(quán) Xcode Cloud 訪問源代碼,點(diǎn)擊右側(cè) Grant Access 按鈕

? 接下來會跳轉(zhuǎn)到 App Store Connect 中,以完成代碼訪問權(quán)限工作

? 授權(quán)完成后,回到 Xcode。


? 開始一個(gè)構(gòu)建,并指定構(gòu)建分支
這樣就開啟了一個(gè)工作流,我們可以在構(gòu)建組中選擇相應(yīng)的構(gòu)建來查看構(gòu)建詳情。
配置工作流
通過檢測本地項(xiàng)目,Xcode Cloud 可以定制初始工作流的默認(rèn)設(shè)置以匹配團(tuán)隊(duì)的現(xiàn)有配置。我們可以去修改這些配置信息,以構(gòu)建我們自己的工作流。右鍵點(diǎn)擊 Cloud 導(dǎo)航中配置文件,選擇 Edit Workflow... ,在彈出的面板中可以修改一些通用信息、Start Condition 和 Environment 等,還可以添加 Action 以執(zhí)行你想要的操作。例如,如果想為團(tuán)隊(duì)創(chuàng)建 Pull request 工作流,以完成以下工作:
? 每次 pull request 時(shí)運(yùn)行;
? 執(zhí)行分析、測試、archive App 操作;
? 構(gòu)建完成時(shí)通知團(tuán)隊(duì)成員
? 將應(yīng)用版本分發(fā)給團(tuán)隊(duì)成員
在建好工作流后,可以在配置面板中修改配置的信息。在 General 面板中,可以設(shè)置以下信息:
? 工作流名稱

? 如果有需要,還要以限制編輯,以防止一些意外更新

? 默認(rèn)情況下,Xcode Cloud 使用本地信息來設(shè)置倉庫信息和項(xiàng)目信息,這些可以根據(jù)實(shí)際情況來設(shè)置。

Start Condition 配置
在 Start Condition 面板中,我們可以設(shè)置何時(shí)啟動工作流,當(dāng)滿足設(shè)定的條件時(shí),工作流就會自動開始執(zhí)行。可以設(shè)置以下信息:
? 類型
? 代碼分支
? 文件和目錄變更,也可以自定義條件,指定到特定的文件或目錄;
? 是否自動取消之前的構(gòu)建

Environment 選項(xiàng)
Environment 決定了工作流如何運(yùn)行,Xcode Cloud 在蘋果的 Cloud 基礎(chǔ)設(shè)施上運(yùn)行,并提供各種版本的 macOS 和 Xcode。這里可以設(shè)置以下信息:
? Xcode 版本
? macOS 版本
? 是否選擇干凈的構(gòu)建;這類似于 Xcode 本地的 Clean 操作,在大型工作中,重新構(gòu)建可能花費(fèi)的時(shí)間會比較長;
? 可擴(kuò)展選項(xiàng),這些擴(kuò)展允許將 Xcode Cloud 與其它工具和系統(tǒng)連接起來;這些選項(xiàng)也可以作為環(huán)境變量,提供給自定義腳本


Action
Action 定義了在執(zhí)行工作流時(shí)希望完成的一些操作,主要有四類操作:構(gòu)建、分析、測試、存檔。

可以點(diǎn)擊配置面板左側(cè) Action 旁邊的 + 來添加。

添加后,會顯示操作相關(guān)的配置,可以根據(jù)自身需要來設(shè)置。

Post-Action
我們可以配置一些通知,以在執(zhí)行完成工作流,不管成功與否,來推送通知告訴開發(fā)者執(zhí)行結(jié)果。可以是 Slack,與可以是郵件形式

另外,Xcode Cloud 還與 TestFlight 嘗試整合,可以使用 TestFlight 來自動部署

App Store Connect
除了與 Xcode 深入融合外,在 App Store Connect 中也可以看到 Xcode Cloud 的構(gòu)建信息,并可以做一些設(shè)置,比如設(shè)置個(gè)人通知(在失敗時(shí)將消息推送到 Slack 中)等等。

安全性
有同學(xué)可能會問,在云端構(gòu)建,那會不會造成代碼泄漏等問題。這點(diǎn)可以完全放心,畢竟蘋果在保護(hù)隱私方面也是下了大力氣。而源代碼是項(xiàng)目的核心,確保代碼的安全性也是蘋果重點(diǎn)考慮的問題,為此他們做了以下工作:
? 構(gòu)建環(huán)境是臨時(shí)的;
? 工作流是完全隔離的,構(gòu)建環(huán)境在構(gòu)建前會被清除并在構(gòu)建時(shí)重新創(chuàng)建;
? 不會存儲源代碼,Xcode Cloud 僅在臨時(shí)環(huán)境中獲取代碼;
? 構(gòu)建數(shù)據(jù)以過加密并存儲在專用的 CloudKit 數(shù)據(jù)庫中
? 開發(fā)者可以隨時(shí)刪除數(shù)據(jù)
小結(jié)
工作流是 Xcode Cloud 的核心,推動持續(xù)集成,使您和您的團(tuán)隊(duì)能夠自動構(gòu)建、分析、測試、存檔和分發(fā)您的應(yīng)用程序和框架。它們靈活且可擴(kuò)展,可以圍繞團(tuán)隊(duì)現(xiàn)有的開發(fā)和分發(fā)流程自定義工作流程。相信熟悉使用 Xcode Cloud 后,可以大大提高開發(fā)效率。
-End-
最近有一些小伙伴,讓我?guī)兔φ乙恍?nbsp;面試題 資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來,可以說是程序員面試必備!所有資料都整理到網(wǎng)盤了,歡迎下載!

面試題】即可獲取
