企業 Mac CI 建置產物保留多久?2026 策略指南
這篇指南協助企業 iOS 團隊決定哪些建置產物需要長期留存,哪些可以在確認可重建後清理。內容涵蓋 archive、dSYM、報告、日誌與快取的風險差異,並提供責任分工表和復原驗收清單。
目錄
本週先檢查期限設定,不要套用單一清理規則
官方 CI 文件列出,日誌與建置產物的留存期限可在組織層級設定,也可針對個別產物設定;這代表期限控制至少涉及兩種設定層級,而不是只有一個全域開關。組織層級的期限設定說明與單項 workflow artifact 的留存說明都指出,具體行為依平台設定而異。
因此,企業 Mac CI 建置產物保留策略不應把所有檔案套用同一期限:已發布版本的 Xcode archive 和匹配 dSYM,應依崩潰診斷及審計需求保存;日誌、測試報告、快取和暫存工作區則按用途分別管理,並把重要發布資料移出可清理的 CI 工作區。
負責 iOS 發布與崩潰診斷的工程負責人,可據此訂出 archive 和 dSYM 的留存規則。
管理 Mac Runner 儲存空間、快取與日誌的平台工程師,可用本文區分必須保存和可清理的資料。
負責發布審計及資料生命週期的 IT、安全或合規人員,可將規則轉成可查核的責任與證據。
留存失效時,診斷和發布證據會一起斷鏈
把建置目錄視為同一批檔案來清理,最容易造成兩類後果:一是已發布版本發生崩潰時,找不到能符號化的檔案;二是發布檢查需要證明交付了什麼,卻只剩下一段無法連回該版本的工作紀錄。相同的原始碼,不代表不同時間、不同設定產出的建置檔案可以互相替代。
dSYM 說明文件指出,建置調試資訊與 archive 的保存,和日後檢查發布版本有關;崩潰報告符號名稱說明則說明如何利用符號資訊協助讀取崩潰報告。換言之,保留一份來源程式碼,不足以取代與已交付版本相符的符號檔。
| 產物類型 | 主要用途 | 清理前要確認的條件 | 建議責任角色 |
|---|---|---|---|
| 已發布版本的 Xcode archive | 回查發布封裝與版本內容 | 是否能依版本及建置識別資訊找回,是否有獨立保存副本 | iOS 發布負責人 |
| 匹配的 dSYM | 對應崩潰報告進行符號化 | UUID 等識別資訊是否與該次建置相符,復原後能否讀取 | iOS 工程負責人 |
| 交付二進位檔及發布紀錄 | 核對實際交付版本與流程 | 是否能關聯到版本、建置及交付結果 | 發布或審計負責人 |
| 測試報告與建置日誌 | 回查測試結果、診斷失敗 | 保存期限是否符合團隊追查與審核需要 | CI 平台負責人 |
| 依賴快取 | 減少重複下載或建置工作 | 清除後能否重新取得或重建,來源是否仍可用 | CI 平台負責人 |
| 暫存工作區 | 執行中的中間檔案及暫存內容 | 是否已確認沒有唯一發布證據或未交接資料 | Mac Runner 管理人 |
留存期限應由恢復、診斷、審計及重建需求決定,而不是用檔案所在目錄來推斷。若 archive 與 dSYM 暫時只能放在 Runner 的工作目錄,清理作業就有機會把發布證據和可重建檔案一併刪除;如果檔案留在單一主機,主機故障也可能讓復原路徑中斷。
產物配對與存放位置決定能否復原
對每個已發布版本,你要建立可由檔案反查建置的關聯,而非只按日期或專案名稱命名資料夾。至少要能從版本資訊或建置識別碼,找到相應的 archive、dSYM、交付檔及必要發布紀錄;復原後還要檢查它們彼此對應,而不是只確認檔案「存在」。
應用程式發布與建立 archive 的官方文件說明 archive 位於發佈流程之中。團隊應將它與匹配的 dSYM、匯出檔及必要紀錄視為同一發布證據組,並明確記下保存位置、存取權限、刪除責任人和復原方法。你不必預設採用特定儲存系統,但不應讓這些資料只存在於單一 Mac 的臨時目錄。
| 保存位置類別 | 優點 | 主要風險 | 應核對的控制 |
|---|---|---|---|
| CI 工作區或暫存目錄 | 建置流程直接產生,短期取用方便 | 清理工作區時可能連帶移除證據;主機故障時不易取回 | 排除長期保存檔案,確認交接完成後才允許清理 |
| 團隊管理的獨立儲存位置 | 可與 Runner 工作生命週期分開管理 | 權限、命名或目錄規則不清時,仍可能找不到配對檔 | 限定讀寫與刪除權限,維護建置識別資訊及目錄規範 |
| CI 平台提供的產物留存功能 | 可在流水線脈絡中取得產物及設定期限 | 期限可能受平台層級或單項設定影響,不一定符合企業留存需求 | 對照實際適用設定,驗證過期時間及到期後復原可能性 |
檔案分散於不同位置,也會增加交接失敗的機會。你需要明確指定誰負責確認 archive 和 dSYM 已保存、誰能刪除、遇到主機故障時由誰執行復原,以及審計時從哪裡取得證據。若團隊正在規劃長期使用 Mac 建置節點,可參考企業 Mac 基礎設施與節點規劃,把產物存放及交接責任納入整體設計。
日誌、報告與快取不能共用同一種期限
把日誌和測試報告過早刪除,會讓建置失敗及測試結果難以回查;反過來,無限期保留所有日誌,又可能增加無人管理的資料、擴大可存取範圍,並讓團隊無法分辨哪些紀錄仍有調查價值。企業要按用途、查閱需要及組織政策訂出期限,不能把某一 CI 平台的預設值當成通用標準。
快取則有不同的判斷基準。官方文件對依賴快取與工作流程產物的用途區別指出,快取是為了重用依賴資料,workflow artifact 則用於保存工作流程產生的檔案。這種用途差異意味著快取通常需要評估能否重建,發布證據則要確認是否仍需調用;兩者不應被同一條目錄清理規則一起處理。
| 資料 | 保存決策的核心問題 | 適合的到期或清理條件 |
|---|---|---|
| 測試報告 | 是否需要追溯測試結果或支援發布審核? | 依測試用途、查核需求及組織資料政策設定 |
| 建置日誌 | 是否仍能協助調查失敗或確認發布過程? | 依診斷需要、存取需求及平台實際設定設定 |
| 依賴快取 | 清除後能否從可用來源重新取得並成功建置? | 確認重建路徑、最後使用情況及清理紀錄後再清 |
| 暫存工作區 | 是否含有未交接的唯一檔案或發布證據? | 完成產物交接並確認不屬長期留存後才清理 |
平台文件也提醒你留意設定邊界:組織層級的日誌與產物期限和單項產物設定並非同一個設定位置。落地時應確認目前平台、儲存庫與單項產物各自採用的規則;不要因為管理介面顯示某個預設期限,就推定所有企業都適用該期限。
可勾選的清理與復原驗收
在調整清理工作之前,先把需要保留的發布證據與可重建資料分開。以下清單可用於 Mac Runner 試點、例行檢查或流程變更後的驗收:
- [ ] 抽查一個已發布版本,確認能依版本或建置識別資訊找回對應的 Xcode archive 與 dSYM。
- [ ] 驗證 dSYM 確實匹配該次建置,並確認診斷流程能讀取復原出的符號檔。
- [ ] 將交付檔及必要發布紀錄與版本、建置資訊關聯保存,並記錄資料所在位置。
- [ ] 列出日誌、測試報告、快取與暫存工作區各自的用途、期限、負責人及清理條件。
- [ ] 核對誰有讀取、修改和刪除權限,避免日常清理作業能直接移除唯一發布證據。
- [ ] 檢查平台層級和個別產物的到期設定是否一致於團隊政策;若不同,記錄例外與原因。
- [ ] 從獨立存放位置復原必要檔案,確認檔案可讀、關聯資訊完整,並留下驗收結果。
- [ ] 清理快取前,實際確認依賴資料仍可重新取得,且清理不會影響 archive、dSYM 或審計資料。
這套檢查的評分重點不是「目錄裡還有多少檔案」,而是關鍵發布資料是否找得到、配得上、可復原。若任一項無法驗證,應先暫停清除相關目錄,再確認交接位置和責任人;不要用擴大保留全部工作區的方式掩蓋缺少復原流程的問題。
常見留存疑義
已發布版本的 Xcode archive 和 dSYM 要保存多久?
不要採用沒有依據的統一期限。先依團隊需要支援的發布版本、崩潰診斷與審計政策訂定規則,並確定 archive 和匹配 dSYM 的保存位置、負責人及復原方式。即使原始碼仍可取得,也要核對符號檔是否真正對應該次建置。
刪除 Xcode archive 後,還能用 dSYM 符號化崩潰嗎?
若手上仍有與該次建置相符的 dSYM,符號化仍可能可行;archive 與 dSYM 不能互相替代。刪除 archive 也代表相應發布封裝不再保留,因此你應先確認 dSYM 的建置識別資訊,並實際驗證崩潰分析流程可使用留存的符號檔。
Mac CI 的日誌、測試報告和快取該用同一個期限嗎?
不應直接共用。日誌用於診斷建置過程,測試報告用於回查結果,快取則通常可以在條件具備時重新建立。你要按用途、存取需求、查核政策及重建成本分別設條件,再檢查平台的組織層級與個別產物設定是否符合這些規則。
怎樣避免清理建置產物時誤刪發布審計證據?
把需長期保存的 archive、匹配 dSYM、交付檔與必要發布紀錄移出可定期清理的工作區,並為它們記錄位置、權限和責任人。清理前確認目錄用途及可重建性;再從獨立位置抽查復原,確保檔案能讀取、彼此配對,且有驗收紀錄可供查核。
現有做法若依賴單台 Mac 的工作目錄,通常會同時暴露於主機故障、工作區清理誤刪和交接紀錄不足等問題。若你需要臨時增加 CI 建置資源,可先檢查現有節點是否具備獨立留存位置及可驗證的復原流程,再評估VPSMAC 遠端 Mac是否適合作為團隊的彈性建置環境;長期固定重負載、依賴特定實體介面的工作,則應先比較自購設備及其他符合需求的方案。
常見問題
已上架的 iOS 版本,其 archive 和 dSYM 要保存多久?
沒有適用所有企業的固定期限。已發布版本的 Xcode archive 與相符 dSYM,應按照你需要支援的版本週期、崩潰診斷需求及審計政策保存;先確認責任人、存放位置與復原方式,再由組織政策訂出期限。不要只因原始碼仍在,就假設日後能重建完全相同的符號檔。
刪除 Xcode archive 後,仍可用 dSYM 符號化崩潰嗎?
若保有與該次建置完全相符的 dSYM,仍可能用它處理崩潰符號化;但 archive 和 dSYM 並非可互換的檔案。刪除 archive 會失去相應的發布封裝與查核材料,因此應按建置識別碼核對配對,並確認符號化流程可實際讀取留存檔案。
Mac CI 的日誌、測試報告與快取可以共用同一保留期限嗎?
不建議。測試報告用於追查結果,日誌用於診斷失敗,快取則通常是為了加快後續建置而保存、在符合條件時可以重建。你應分別訂出用途、存取權、到期條件及恢復方式;平台上的預設值或可設定範圍,不等於企業必須採用的期限。
怎樣避免清理 Mac CI 產物時誤刪發布審計證據?
先把需長期保存的 archive、匹配 dSYM、交付檔及必要發布紀錄移出可定期清理的工作區,並記錄保存位置、刪除權限與負責人。清理前依目錄用途和可重建性分類;再從獨立存放位置抽樣復原,確認檔案可讀、識別資訊相符,並留下驗收紀錄。