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

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

初識(shí) Xcode Cloud
基于此,蘋果將 CI 的能力集成到了 Xcode 中,推出了 Xcode Cloud,其目標(biāo)是為 Apple 平臺(tái)的開發(fā)者提供完整的開發(fā)流程,包括構(gòu)建、測(cè)試、分發(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ì)的工作情況。我們可以快速啟動(dòng)和運(yùn)行工作流,并在后續(xù)可以根據(jù)需要來個(gè)性配置信息。而構(gòu)建的整個(gè)過程是在 Apple 托管的 Cloud 基礎(chǔ)設(shè)施中運(yùn)行的,這套基礎(chǔ)設(shè)施提供了代碼簽名,以及對(duì)多個(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ì)信息

添加工作流
添加工作流的操作很簡(jiǎn)單
? 在菜單中選擇 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 按鈕

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

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


? 開始一個(gè)構(gòu)建,并指定構(gòu)建分支
這樣就開啟了一個(gè)工作流,我們可以在構(gòu)建組中選擇相應(yīng)的構(gòu)建來查看構(gòu)建詳情。
配置工作流
通過檢測(cè)本地項(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í)行分析、測(cè)試、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)工作流,當(dāng)滿足設(shè)定的條件時(shí),工作流就會(huì)自動(dòng)開始執(zhí)行。可以設(shè)置以下信息:
? 類型
? 代碼分支
? 文件和目錄變更,也可以自定義條件,指定到特定的文件或目錄;
? 是否自動(dòng)取消之前的構(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í)間會(huì)比較長(zhǎng);
? 可擴(kuò)展選項(xiàng),這些擴(kuò)展允許將 Xcode Cloud 與其它工具和系統(tǒng)連接起來;這些選項(xiàng)也可以作為環(huán)境變量,提供給自定義腳本


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

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

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

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

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

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

安全性
有同學(xué)可能會(huì)問,在云端構(gòu)建,那會(huì)不會(huì)造成代碼泄漏等問題。這點(diǎn)可以完全放心,畢竟蘋果在保護(hù)隱私方面也是下了大力氣。而源代碼是項(xiàng)目的核心,確保代碼的安全性也是蘋果重點(diǎn)考慮的問題,為此他們做了以下工作:
? 構(gòu)建環(huán)境是臨時(shí)的;
? 工作流是完全隔離的,構(gòu)建環(huán)境在構(gòu)建前會(huì)被清除并在構(gòu)建時(shí)重新創(chuàng)建;
? 不會(huì)存儲(chǔ)源代碼,Xcode Cloud 僅在臨時(shí)環(huán)境中獲取代碼;
? 構(gòu)建數(shù)據(jù)以過加密并存儲(chǔ)在專用的 CloudKit 數(shù)據(jù)庫中
? 開發(fā)者可以隨時(shí)刪除數(shù)據(jù)
小結(jié)
工作流是 Xcode Cloud 的核心,推動(dòng)持續(xù)集成,使您和您的團(tuán)隊(duì)能夠自動(dòng)構(gòu)建、分析、測(cè)試、存檔和分發(fā)您的應(yīng)用程序和框架。它們靈活且可擴(kuò)展,可以圍繞團(tuán)隊(duì)現(xiàn)有的開發(fā)和分發(fā)流程自定義工作流程。相信熟悉使用 Xcode Cloud 后,可以大大提高開發(fā)效率。
推薦閱讀
? Swift 5.5 新特性搶先看,async/await 將重磅來襲
? iOS 恢復(fù)調(diào)用棧(適配iOS14)
? 正經(jīng)分析iOS包大小優(yōu)化
? oo1/?.? 蘋果意外泄露 homeOS;AVE 漏洞可用于 iOS 系統(tǒng)越獄;HarmonyOS 2 正式發(fā)布
就差您點(diǎn)一下了 ??????
