構建與簽名
EvoX Desktop、Linux 產物、內嵌 sidecar、Evolver npm 包和文檔網站由不同流水線負責。一個對象構建成功不能替代其他對象的產物與簽名檢查。
當前平台產物
| 平台 | 需要的交付 |
|---|---|
| macOS arm64 | 使用 Developer ID Application 簽名、公證並 staple 的 DMG;PKG 單獨核驗 Installer 簽名。 |
| macOS x64 | 獨立 Intel DMG,簽名與公證要求相同;PKG 不能用 DMG 的驗證結論替代。 |
| Windows x64 | 正式簽名的完整 NSIS 安裝包,以及負責下載校驗的在線引導器。 |
Linux GNU 內核產物屬於內核發佈矩陣,不代表提供 Linux 桌面安裝包。桌面內嵌 sidecar 必須核對對應版本的內核 bundle。
構建記錄
每個產物應能回到以下信息:
source repository and revision
release version and channel
build environment and toolchain
target platform / architecture
artifact filename and size
SHA-256
signature identity and verification method
簽名邊界
簽名密鑰只能由所屬發佈系統使用,不進入倉庫、普通日誌、構建緩存或文檔。構建者與最終晉級者應儘量分離;至少要由第二人或獨立流水線驗證下載字節和簽名。
簽名、摘要和來源各自證明什麼
源碼提交説明構建基於哪一份代碼;構建記錄説明使用了哪些依賴、工具鏈和目標;摘要用於確認核對的是同一份字節;簽名與平台驗證用於核對發佈身份及平台接受條件。它們互相補充,不能只保留其中一個結果。
例如,文件的 SHA-256 與候選記錄一致,説明取得的文件沒有偏離候選字節,但不證明簽名身份正確。平台簽名通過,也不證明產物來自預定提交。發佈交接應讓驗證人員把源碼、構建任務、簽名產物和最終下載逐項關聯起來。
場景:同一版本需要重新構建
先確認重新構建是修復構建環境、簽名步驟還是軟件代碼。代碼變化必須對應新的明確來源;即使版本字符串相同,也不能把新文件當成此前已驗證的字節。重新簽名或重新打包後,按最終文件重新計算摘要並執行驗證。
已經發布的不可變產物不得覆蓋成另一份文件。失敗產物保留記錄,修復通過所屬倉庫的發佈流程生成新的可追溯候選。驗證交接同時説明哪些證據仍適用、哪些步驟已經重新執行,避免沿用舊報告造成來源斷裂。
構建順序
- 固定源碼修訂、依賴鎖和工具鏈。
- 分平台構建,不用一個平台的成功推斷其他平台。
- 簽名並生成候選清單數據。
- 上傳不可變產物,再交給獨立驗證步驟重新下載。
- 驗證本次交付平台後寫入候選記錄;公開桌面更新指針須等同號 macOS 雙架構和 Windows x64 齊套。
不同發佈對象
文檔網站部署只説明網頁已更新;它不會生成或驗證 EvoX 安裝包。Evolver npm 包發佈也不等於 Desktop 或 sidecar 已更新。發佈台賬應分開記錄對象、倉庫、版本和負責人。
交給驗證環節的材料
為每個平台提供固定源碼 SHA、依賴與內核 bundle 版本、構建任務記錄、安裝包最終地址、大小、SHA-256 和簽名校驗結果。候選清單必須對應已經簽名的最終字節;簽名後重新打包或替換文件,要重新計算摘要並重新驗證。
構建、簽名或上傳任一環節失敗,都保留失敗記錄並阻止該產物交付。使用所屬倉庫當前發佈工作流處理修復,不在文檔中拼裝通用簽名命令。完成標準是驗證人員能從記錄取回同一份產物並獨立複核來源和簽名。
相關頁面
EvoX 文檔 · 開發者 · 軟件發佈維護