建置與部署
原生應用
go tool mygo doctor
go tool mygo build
go tool mygo build -skip-dmg
go tool mygo build -platform darwin/universal,windows/amd64,linux/amd64產物寫入 build/。本地 macOS 建置使用臨時簽名;對外分發需要 Developer ID、簽名設定和公證。Windows 安裝程序也需要簽名策略。Linux 桌面運行需要 GTK 3。
CI 在 macOS 上運行競態測試、Go vet 和 MyGo vet,交叉編譯 Windows/Linux 並打包 macOS。編譯成功的二進位檔不代表桌面集成已驗證。
現有手動 Release 工作流接受穩定版本號碼,使用 tools/version 更新 internal/buildinfo/version.go 和 mygo.json,建置並驗證安裝包,建立發布提交及標籤,再發布 GitHub release 產物。它需要儲存庫寫權限和兼容的分支保護。在滿足路線圖驗收條件前,不要將其作為正式發布運行。生產簽名及可信更新源/金鑰尚未設定。提供這些建置輸入後,應用支援與 MyGo 清單兼容的簽名更新暫存;否則檢查 GitHub releases 並提供手動下載回退。
文件
文件站建置與部署工作流已移除,儲存庫不再提供用於建置、類型檢查或發布文件站的 GitHub Actions 任務。本機 VitePress 開發、類型檢查和建置命令仍然保留,具體命令見開發指南。建置產物位於 docs/.vitepress/dist。
現有站點設定仍使用 oss-browser.ntnyq.dev 產生網站地圖 URL,並將 docs/public/CNAME 複製到建置產物。這些設定不會部署站點;如需發布,須另行設定託管與部署流程,以及網域、DNS 和 HTTPS。
升級檢查
更改 MyGo 後,運行 Go 測試、競態檢查、兩種 vet、快照和原生驗收測試。更改文件依賴後,重新生成鎖檔案並運行類型檢查和建置。
驗收交接(2026-10-14)
所有者稍後提供 OSS 帳號、Windows/Linux 環境和簽名設定。不得根據模擬 SDK 測試或交叉編譯將這些檢查標記為通過。
| 環境 | 所需證據 | 狀態 |
|---|---|---|
| 可丟棄 OSS 測試 Bucket | AK/STS 與授權碼範圍/到期、Endpoint 模式、分頁、公開/私有 ACL、中繼資料、連結、複製/移動/刪除 | 等待帳號 |
| 可丟棄 OSS 測試 Bucket | 大檔案上傳/下載中斷、重新啟動/重連恢復、源變更、CRC 失敗、啟用/禁用版本控制時的衝突 | 等待帳號 |
| macOS | 真實對話方塊、Keychain 主動儲存/讀取/刪除、Unicode 路徑、睡眠/網路中斷、簽名安裝 | arm64 原生啟動/捕獲冒煙測試已通過;其餘集成和生產簽名待驗收 |
| Windows | Credential Manager、檔案替換、保留名稱、安裝/卸載、縮放、對話方塊 | 等待環境 |
| Linux | GTK 對話方塊、Secret Service 不可用/鎖定/解鎖、符號連結、安裝/卸載 | 等待環境 |
| 分發 | Developer ID 與公證、Windows 簽名、來源證明/校驗和、發布產物與 HTTPS 文件 | 等待簽名及發布設定 |
CI 現在除了 macOS 測試套件,還包含在 Windows 和 Linux 平台運行的測試。這些任務已在本地設定;此項工作不能證明遠程 CI 已通過。真實桌面驗收仍需單獨執行。
簽名 macOS 建置支援 MyGo 的 macos.signingIdentity(或 -sign)及 macos.notarize.keychainProfile。Windows 簽名使用 windows.certificate 或設定的簽名命令。證書、鑰匙串設定和密碼應放在儲存庫外。運行 Release 工作流前必須提供並測試設定。本地臨時簽名僅代表開發建置。
目前候選版本的範圍和行為限制見快速開始。RAM/STS、SMTP、二維碼、軟連結、歸檔及其他 Design v2 場景族已實現。具體程式碼和驗收證據見場景清單。真實服務驗收仍不可省略。
簽名更新設定
編譯前在 mygo.json 中設定 updates.publicKey 和 updates.github(這些公開值會嵌入應用),並遵照固定版本 MyGo 更新器文件,僅通過受保護的發布金鑰提供 MYGO_UPDATER_PRIVATE_KEY。公鑰必須對應發布者控制的簽名金鑰。將生成的各平台清單、更新歸檔與發布安裝包一起發布。在可丟棄安裝環境中驗證簽名檢查、中斷下載、回滾/失敗及重新啟動恢復之前,不得發布更新源。目前 Release 工作流在設定這些輸入和產物前仍採用手動安裝包流程。
自動更新將完整歸檔下載到僅所有者可訪問的臨時檔案,並驗證其簽名 SHA-256 摘要。就緒通知要求顯式安裝;安裝會重新驗證檔案,不再次下載。取消或驗證失敗不會將包標記為就緒。不使用增量歸檔。macOS 替換匹配的應用包,失敗時回滾;Windows/Linux 通過備份替換歸檔條目。舊可執行檔案運行時,Windows 可能保留備份。請在每個目標作業系統的可丟棄簽名安裝中驗證這些路徑及重新啟動。
唯一桌面發布入口
手動 GitHub Release 工作流是唯一髮布入口。pnpm release 通過 GitHub CLI 打開輸入提示;顯式呼叫如下:
gh workflow run release.yml -f version=0.2.0根 package.json 是私有工具包。其 0.0.0 版本與桌面發布無關;更新 npm 版本不會發布應用。
在本地檢查版本而不更改檔案:
go run ./tools/version同步計劃中的穩定版本,但不建立標籤、提交或發布:
go run ./tools/version -set 0.2.0工作流還會在打包前強制檢查標籤唯一性、版本遞增,以及預設分支頭未變化。CI 和發布驗證都會拒絕 Go 版本與 MyGo 打包中繼資料不一致的情況。