發布驗收
針對要發布的提交與產物執行每項關卡。CI 定義與歷史結果不能證明新版本已通過。
在 validation.md 記錄提交、產物 SHA-256、平台、命令與結果。
- [ ] Rust 工作區測試、格式檢查及無警告的 Clippy 通過。
- [ ] 檢索涵蓋中文/多個關鍵字、區塊偏移量、私密/憑證排除、六字元 ID 衝突、 快取失效、進行中的鎖定/撤銷/來源變更,以及僅限裝置的揭露限制。 驗證本機 EmbeddingGemma 推論與模型檔案雜湊、Proxy/重試行為及答案引用驗證。 記錄是否測試過真實客戶的模型端點。
- [ ] Flutter 分析、格式檢查與 widget 測試通過。
- [ ] 郵件與應用程式簽署作業使用合成身分通過:S/MIME 與 OpenPGP 驗證/解密、 已簽署 APK 驗證,以及由發布管線檢查的真實已簽署 AAB。 在每個桌面平台檢查預覽/核准繫結、失敗清理及僅限擁有者的憑證工作區。
- [ ] 在 macOS 上,使用一次性 Apple 身分、相符描述檔與權限驗證 iOS 簽署, 包含框架順序、鑰匙圈清理及裝置安裝。不可將 Windows 編譯視為 iOS 簽署證據。
- [ ] Wiki 機密取代與複製回歸測試通過 core、CLI/IPC、FFI 與 Flutter。 使用合成資料驗證不可分割的失敗處理、保留編輯對應、目前值解析、MCP 拒絕 及鎖定/背景處理。
- [ ] 在每個出貨平台檢查真實剪貼簿交付,包括 Linux 輔助程式可用性及行動 OS 交付。 僅有模擬剪貼簿測試不足以通過此關卡。使用更新後的用戶端檢查機密參照同步/復原, 並在版本資訊中記錄與舊用戶端不相容的情況。
- [ ] 重建 FFI 後 Android 原生冒煙測試通過,接著重建一般 APK,
並執行
scripts/verify-apk-native.py驗證。 - [ ] iOS Xcode/模擬器檢查使用原生程式庫與 AppAuth 外掛通過。
- [ ] ARM64 Android 硬體與實體 iOS 裝置通過鎖定/背景、安全儲存持久化及復原檢查。
- [ ] 真實 OneDrive 與 Google Drive 原生/桌面註冊完成同意、更新、登出、雙裝置收斂、 離線重試及撤銷測試。使用一次性雲端帳號與合成記錄。 記錄用戶端/平台組合;不可將 iOS OAuth 結果推論至 Android。
- [ ] 儲存效能基準測試結果符合預期支援的資料庫規模。
- [ ] 獨立密碼學/應用程式安全審查與滲透測試發現已解決, 或由發布負責人明確接受。
- [ ] 已簽署產物驗證與獨立備份/復原演練通過。
Validate 工作流程建置 Android 與 iOS 原生用戶端並執行冒煙測試。
Build signed Android release 是針對 release 環境的手動工作流程。
將 ANDROID_KEYSTORE_BASE64、ANDROID_KEY_ALIAS、ANDROID_KEY_PASSWORD
與 ANDROID_STORE_PASSWORD 設定為環境機密。缺少憑證時會失敗,
會驗證 APK 簽章/原生程式庫鏈,並將 APK 與總和檢查碼上傳為工作流程產物。
它不會發布至商店。執行前先審查來源提交的 Validate 結果。
Windows 預先發行版請先提交來源,再從 Windows x86_64 MSVC 主機執行
pwsh -File scripts/package-windows.ps1。
它會重建 Rust 工作區,並封裝 CLI、系統匣、relay、FFI DLL/匯入程式庫、
C 標頭、根目錄 README/安全/授權檔案及 docs/ 下每個受追蹤檔案,保留目錄結構。
封存檔、BUILD-INFO.json(來源提交與個別檔案雜湊)、memories.example.toml
及 SHA256SUMS 寫入 dist/vVERSION/。
將全部四個檔案上傳至對應 GitHub Release 前,驗證封存內容與雜湊。
絕不覆寫既有輸出目錄。
在 macOS 上,bash scripts/package-macos.sh 建置主機架構並建立未簽署的
Memories.app、CLI/relay/FFI 套件、完整文件與字型授權。
在 Linux 上,bash scripts/build-linux.sh 建置原生 x86_64/aarch64 GNU 目標;
--debug 選擇開發建置。從乾淨且已提交的 checkout 執行
bash scripts/package-linux.sh,會建立包含 CLI/relay/FFI、C 標頭、受追蹤文件
與授權的 .tar.gz,存放於 dist/vVERSION-linux-ARCH/ 下,
另附 BUILD-INFO.json、memories.example.toml 與 SHA256SUMS。
在預定的 glibc/OpenSSL 發行版驗證雜湊、Unix 執行權限及執行期相依性。
Linux 使用 WebUI,沒有原生系統匣套件。
手動 Build desktop packages 工作流程執行 Linux/Windows/macOS 檢查,
並將這些套件上傳為工作流程產物;它不會發布 GitHub Release。
散布桌面建置前,請在出貨 OS 驗證系統匣啟動/選單操作/結束及 WebUI 呈現,
並測試權杖/Origin 拒絕、被動閒置到期、鎖定/離線詳細資訊清除,
以及真實 daemon 狀態變更。
iOS 散布需要 macOS 上的 Apple 團隊、憑證/描述檔與佈建設定。
此儲存庫未隨附任何憑證或開發者帳號。啟用雲端功能的散布建置也需要
cloud-authorization.md 中的平台用戶端 ID 與已註冊回呼方案;
一般 CI 建置不包含 OAuth 用戶端註冊。