mirror of
https://github.com/aiclientproxy/proxycast.git
synced 2026-10-16 15:34:08 +08:00
fix(release): unblock v1.141.0 CI
This commit is contained in:
@@ -63,6 +63,9 @@ internal/exec-plans/*
|
||||
!internal/exec-plans/tui-codex-snapshot-inventory.json
|
||||
!internal/exec-plans/tui-codex-snapshot-inventory.md
|
||||
!internal/exec-plans/tui-cli-surfaces-plan.md
|
||||
!internal/exec-plans/cli-codex-test-inventory.json
|
||||
!internal/exec-plans/cli-structure-inventory.json
|
||||
!internal/exec-plans/tui-structure-inventory.json
|
||||
!internal/exec-plans/documentation-convergence-plan.md
|
||||
!internal/exec-plans/scheduled-tasks-implementation.md
|
||||
!internal/exec-plans/release-v*-plan.md
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -93,3 +93,21 @@ V8 预构建 archive 在本机 Darwin/aarch64 若仍返回 404,改用仓库已
|
||||
- `dead / deleted`:旧 Code Mode process/V8 物理实现及已退役 CLI 入口。
|
||||
|
||||
当前完成度:验证与候选整理 95%;待用户确认后执行 release commit、tag、推送及远端复核。
|
||||
|
||||
## 2026-09-06 发布后 CI 修复
|
||||
|
||||
v1.141.0 首次质量与 Electron 发布 workflow 暴露了三类问题:CLI/TUI inventory JSON
|
||||
被根 `.gitignore` 忽略而未进入 CI checkout;`code-mode-protocol` 的 `tonic-build`
|
||||
依赖系统 `protoc`,导致 Linux/macOS/Windows Rust、GUI 和 Electron 构建均在代码生成阶段
|
||||
失败;Windows 构建失败后仍执行 Squirrel cleanup,因 summary 尚未生成而产生二次 `ENOENT`
|
||||
失败。修复如下:
|
||||
|
||||
- 将三份生成账本加入 `.gitignore` 例外,保留为静态治理事实源。
|
||||
- 在 workspace 中加入 `protoc-bin-vendored`,由 `code-mode-protocol/build.rs` 设置
|
||||
`PROTOC`,消除平台工具链前置条件并同步 `Cargo.lock`。
|
||||
- 导出并保护 `cleanupFromSummary`:summary 不存在时记录明确 no-op,不覆盖原始构建错误;
|
||||
增加缺失 summary 回归测试。
|
||||
|
||||
本地修复验证:`cargo check -p code-mode-protocol`、inventory/Windows Squirrel/release
|
||||
workflow 共 75 项 Vitest、`npm run test:contracts` 均通过。待提交推送后复跑 Quality 与
|
||||
Release workflows,确认跨平台构建及 Windows restricted execution setup 通过。
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Generated
+65
@@ -1068,6 +1068,7 @@ name = "code-mode-protocol"
|
||||
version = "1.141.0"
|
||||
dependencies = [
|
||||
"prost",
|
||||
"protoc-bin-vendored",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tokio",
|
||||
@@ -5399,6 +5400,70 @@ dependencies = [
|
||||
"prost",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "protoc-bin-vendored"
|
||||
version = "3.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d1c381df33c98266b5f08186583660090a4ffa0889e76c7e9a5e175f645a67fa"
|
||||
dependencies = [
|
||||
"protoc-bin-vendored-linux-aarch_64",
|
||||
"protoc-bin-vendored-linux-ppcle_64",
|
||||
"protoc-bin-vendored-linux-s390_64",
|
||||
"protoc-bin-vendored-linux-x86_32",
|
||||
"protoc-bin-vendored-linux-x86_64",
|
||||
"protoc-bin-vendored-macos-aarch_64",
|
||||
"protoc-bin-vendored-macos-x86_64",
|
||||
"protoc-bin-vendored-win32",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "protoc-bin-vendored-linux-aarch_64"
|
||||
version = "3.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c350df4d49b5b9e3ca79f7e646fde2377b199e13cfa87320308397e1f37e1a4c"
|
||||
|
||||
[[package]]
|
||||
name = "protoc-bin-vendored-linux-ppcle_64"
|
||||
version = "3.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a55a63e6c7244f19b5c6393f025017eb5d793fd5467823a099740a7a4222440c"
|
||||
|
||||
[[package]]
|
||||
name = "protoc-bin-vendored-linux-s390_64"
|
||||
version = "3.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1dba5565db4288e935d5330a07c264a4ee8e4a5b4a4e6f4e83fad824cc32f3b0"
|
||||
|
||||
[[package]]
|
||||
name = "protoc-bin-vendored-linux-x86_32"
|
||||
version = "3.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8854774b24ee28b7868cd71dccaae8e02a2365e67a4a87a6cd11ee6cdbdf9cf5"
|
||||
|
||||
[[package]]
|
||||
name = "protoc-bin-vendored-linux-x86_64"
|
||||
version = "3.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b38b07546580df720fa464ce124c4b03630a6fb83e05c336fea2a241df7e5d78"
|
||||
|
||||
[[package]]
|
||||
name = "protoc-bin-vendored-macos-aarch_64"
|
||||
version = "3.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "89278a9926ce312e51f1d999fee8825d324d603213344a9a706daa009f1d8092"
|
||||
|
||||
[[package]]
|
||||
name = "protoc-bin-vendored-macos-x86_64"
|
||||
version = "3.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "81745feda7ccfb9471d7a4de888f0652e806d5795b61480605d4943176299756"
|
||||
|
||||
[[package]]
|
||||
name = "protoc-bin-vendored-win32"
|
||||
version = "3.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "95067976aca6421a523e491fce939a3e65249bac4b977adee0ee9771568e8aa3"
|
||||
|
||||
[[package]]
|
||||
name = "pulldown-cmark"
|
||||
version = "0.10.3"
|
||||
|
||||
@@ -158,6 +158,7 @@ cpal = "0.15"
|
||||
prost = "0.13.5"
|
||||
tonic = { version = "0.12.3", features = ["transport"] }
|
||||
tonic-build = "0.12.3"
|
||||
protoc-bin-vendored = "3.2.0"
|
||||
|
||||
# TLS
|
||||
rustls-pemfile = "2"
|
||||
|
||||
@@ -20,3 +20,4 @@ tonic.workspace = true
|
||||
|
||||
[build-dependencies]
|
||||
tonic-build.workspace = true
|
||||
protoc-bin-vendored.workspace = true
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
println!("cargo:rerun-if-changed=src/grpc");
|
||||
let protoc = protoc_bin_vendored::protoc_bin_path()?;
|
||||
std::env::set_var("PROTOC", protoc);
|
||||
tonic_build::configure()
|
||||
.build_client(true)
|
||||
.build_server(true)
|
||||
|
||||
@@ -217,8 +217,14 @@ export function finalizeWindowsRcUninstallSummary({
|
||||
});
|
||||
}
|
||||
|
||||
async function cleanupFromSummary(summaryPath) {
|
||||
export async function cleanupFromSummary(summaryPath) {
|
||||
const absoluteSummaryPath = path.resolve(summaryPath);
|
||||
if (!existsSync(absoluteSummaryPath)) {
|
||||
console.log(
|
||||
`[windows-squirrel-rc-cleanup] summary missing; skipping cleanup summary=${absoluteSummaryPath}`,
|
||||
);
|
||||
return { skipped: true, summaryPath: absoluteSummaryPath };
|
||||
}
|
||||
const initialSummary = JSON.parse(readFileSync(absoluteSummaryPath, "utf8"));
|
||||
let uninstallEvidence = null;
|
||||
let errorMessage = null;
|
||||
|
||||
@@ -9,6 +9,7 @@ import {
|
||||
buildNMinusOneLaunchEnv,
|
||||
buildWaitForWindowsProcessExitScript,
|
||||
buildWindowsRcSummary,
|
||||
cleanupFromSummary,
|
||||
compareVersions,
|
||||
finalizeWindowsRcUninstallSummary,
|
||||
findReadyElectronUpdaterPage,
|
||||
@@ -23,6 +24,19 @@ import {
|
||||
} from "./windows-squirrel-rc-smoke.mjs";
|
||||
|
||||
describe("Windows Squirrel RC smoke", () => {
|
||||
it("构建未产出 summary 时 cleanup 安全跳过", async () => {
|
||||
const root = fs.mkdtempSync(
|
||||
path.join(os.tmpdir(), "windows-squirrel-rc-cleanup-missing-"),
|
||||
);
|
||||
const summaryPath = path.join(root, "summary.json");
|
||||
|
||||
await expect(cleanupFromSummary(summaryPath)).resolves.toEqual({
|
||||
skipped: true,
|
||||
summaryPath,
|
||||
});
|
||||
expect(fs.existsSync(summaryPath)).toBe(false);
|
||||
});
|
||||
|
||||
it("等待最终 renderer,不能把带 preload 的临时启动页当成 updater 页面", () => {
|
||||
expect(
|
||||
isFinalElectronRendererUrl(
|
||||
|
||||
Reference in New Issue
Block a user