<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          oo?/???? WWDC | 初識(shí) Xcode Cloud

          共 3210字,需瀏覽 7分鐘

           ·

          2021-06-11 12:56


          本文基于 《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)一下了 ??????


          瀏覽 65
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  盛世大厦洗手间王经理视频 | 五月天天| 天天躁日日躁人妻久久澡 | 亚洲逼| 欧洲一级毛片 |